ZKX's LAB

嵌入式C指针的定义、野指针、左值与右值相关问题

2020-11-23新闻20

一、指针定义并初始化与定义之后初始化的区别

指针定义时可以初始化,指针的初始化其实就是给指针变量赋初值(跟普通变量的初始化没有任何本质区别)

①指针定义并初始化的格式

②指针定义之后初始化,不可用*p=&a

二、野指针

①什么是野指针

野指针就是,在定义指针变量之后,没有初始化关联可用的变量(内存空间),就对指针进行解引用,从而造成无法预料的错误,使程序崩溃,因此野指针,就是指针所指向的位置是不可知的(随机的、不正确的、没有明确限制的)。

②如何避免野指针

在指针解引用之前,一定保证指针指向一个可用的内存空间,具体可根据以下四点来执行,就可以绝对避免野指针。

第一点:定义指针时,同时初始化为NULL

第二点:在指针解引用之前,先去判断这个指针是不是NULL

第三点:指针使用完之后,将其赋值为NULL

第四点:在指针使用之前,将其赋值绑定给一个可用地址空间

三、左值与右值

在赋值运算符左边的就被称为左值,在赋值运算符右边的就被称为右值

① 左值是指数据存储空间的内存地址,在上述代码中,a = b ,a就是左值强调的是存储空间,

② 右值是指变量存储空间内保存的数据,在上述代码中,a = b ,b就是右值强调的是存储空间b内保存的数据0,

③左值与右值的联系就是,左值=右值,将数据赋值给变量的存储空间,

#技术编程

随机阅读

qrcode
访问手机版