定义指针变量时,必须将指针变量初始化为NULL(为空),否则,指针变量会由于初始化位置的不确定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定义指针变量时,必须将指针变量初始化为NULL(为空),否则,指针变量会由于初始化位置的不确定相关的知识,希望对你有一定的参考价值。

定义指针变量时,必须将指针变量初始化为NULL(为空),否则,指针变量会由于初始化位置的不确定,而成为野指针。这句话中‘由于初始位置不确定,’是什么意思,怎么会的

因为程序在执行的时候,为变量分配内存空间,如果没有给变量分配初始值的话,那么变量空间中的值,是一个以前使用过的垃圾值(即无用的),你不知道它是什么,特别是指针变量,如果不赋初值,就使用的话,可能导致内存崩溃. 参考技术A int *p;
p=null;
就是说 定义指针变量,如果不赋给它地址,系统会随机给它分配一个地址本回答被提问者和网友采纳
参考技术B 其实指针也是变量,并不必须在初始化时赋值为NULL。只需要在你使用该指针变量的时候确定这个变量有一个明确的值,也就是地址。 参考技术C int a; //打印a的值,会输出一个不确定的值,
int *p;//跟a是一样的道理,这时的p指向的地址是你所不知道的一个地址。
参考技术D 如果没有给变量分配初始值的话,那么变量空间中的值,是一个以前使用过的垃圾值(即无用的),你不知道它是什么,特别是指针变量,如果不赋初值,就使用的话,可能导致内存崩溃

指针变量初始化为NULL啥意思?

将指针初始化NULL即将指针初始化为0。
NULL宏是定义在标准库头文件stddef.h中。宏定义如下:
#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif
可以看出c++中
NULL为(int)0
,
C中NULL为(void*)0。看来C和C++中NULL宏的值略有不同。
参考技术A NULL的定义是这样的

#define NULL ((void *)0)

应用程序是不能访问0地址的,所以可以用0地址来表示一个空指针。

if(ptr != NULL)/*确保指针已经被初始化*/

以上是关于定义指针变量时,必须将指针变量初始化为NULL(为空),否则,指针变量会由于初始化位置的不确定的主要内容,如果未能解决你的问题,请参考以下文章

指针变量初始化为NULL啥意思

野指针 悬空指针和悬空引用

指针初始化为NULL的作用

c语言的二级指针如何初始化了?

C程序定义一指针变量,直接令它赋值为NULL,不对它用malloc申请内存可以么?赋值和申请内存到底有啥区别

C++引用