指针初始化(指针初始化为0)
大家好,今天来给大家分享指针初始化的相关知识,通过是也会对指针初始化为0相关问题来为大家分享,如果能碰巧解决你现在面临的问题的话,希望大家别忘了关注下本站哈,接下来我们现在开始吧!
1c指针数组初始化问题
任何指针都可以初始化为空(NULL),如果指针是变量的话,还可以赋值为空。
也就是说数组的每个元素都是指向float 类型变量的指针,你直接用数值360去赋初值,肯定是错的,0是正确的,因为它把0当成了空指针NULL来处理。
aa[0] = d; //这个时候是错误的,因为aa是一个指针,指向一个字面常量“abc”,这个字面常量是保存在程序的全局静态数据区,不可更改,默认就是const的,所以char *aa = abc;是错误的。
初始化为空。即 char * str = NULL;的形式,NULL在C语言中是特定的空指针,其值为0.在C语言中,以NULL作为指针的一个未生效状态,其本身是一个非法的地址值。2 初始化为常量字符串地址。
数组指针初始化方法:int (*p)[4];char a[3][4];p=a;p=&a[0];p=a+1;p=&a[1]; //都正确 p=a[0]; //错误 p=a[1]; //错误。
研究了一下这个问题。Keil报non-address/-constant initializer是正确的,因为advanceModeFun和advModeSetting是在同一级别初始化的,此时后者不可能知道前者的真实地址。
2指针变量在使用前必须初始化是什么意思?
1、不初始化也可以正确使用,只要在使用时正确赋值就可以,但是如果不初始化,则该指针为漂浮的指针,所指的地址不确定,而且指向的地址中的内容也不确定,如果乱用的话可能会影响其他程序的运行。
2、指针申明的时候最好初始化。初始化以后的指针在一些操作下野会变成野指针,比如:free释放内存以后。指向被释放的内存的指针也是野指针。我理解的野指针就是不可控的,不确定指向的指针都是野指针。
3、i:如是i是一个整型变量,并且其数值作为地址是有意义的,就可以 (3)NULL:就是0。0作为地址可以吗?当然可以。你写成int *p=0也一样。综上:只声明、没赋值过的指针都是野指针,初始化就是第一次赋值。
4、“局部变量初始化”是指在使用这个局部变量前,要对其进行初始化。
3指针初始化是什么,是不是一定要初始化
1、就是 使用前,这个指针必须指向某个存储空间。
2、不初始化也可以正确使用,只要在使用时正确赋值就可以,但是如果不初始化,则该指针为漂浮的指针,所指的地址不确定,而且指向的地址中的内容也不确定,如果乱用的话可能会影响其他程序的运行。
3、指针申明的时候最好初始化。初始化以后的指针在一些操作下野会变成野指针,比如:free释放内存以后。指向被释放的内存的指针也是野指针。我理解的野指针就是不可控的,不确定指向的指针都是野指针。
4、定义指针后可以不初始化,但实际上这个指针变量中已经有一个值了(就是分给这个指针变量的地方内存中原来的值,假设是0x1234)。
5、就可以 (3)NULL:就是0。0作为地址可以吗?当然可以。你写成int *p=0也一样。综上:只声明、没赋值过的指针都是野指针,初始化就是第一次赋值。能赋给指针的,只要是可以解释为地址的数值都可以。
好了,文章到此结束,希望可以帮助到大家。