c语言指针初始化null,C语言中main中指针赋值NULL的问题

1,C语言中main中指针赋值NULL的问题请思考以下代码的运行结果void fun(int a) a = 1;}int main(int argc, char **argv) int a = 0; fun(a); cout << a << endl; return 0; }没错,输出0 。fun内部对a赋值并不能改变fun外部的变量a你这里的问题也是同样道理 。
2,C语言 如何初始化指针数组 比如char dd5char 指针,也就是char *类型 。其初始化本质上与其它变量初始化没有什么区别,就是赋予其一个初始化的值 。对于指针来说,在C语言中,就是一个地址 。区分初始化情况,有四种表象:1 初始化为空 。即char * str = NULL;的形式,NULL在C语言中是特定的空指针,其值为0.在C语言中,以NULL作为指针的一个未生效状态,其本身是一个非法的地址值 。2 初始化为常量字符串地址 。char * str = "test";常量字符串在运行时会被放在常量空间中 , 于是这样初始化后,地址是常量空间中的一个地址,对于该地址只能读?。豢尚慈?。即str的值可以改,但是str指向的值是不可修改的 。3 初始化为变量地址 。这里的变量地址,包括全局变量,局部变量的地址 , 以及通过动态分配申请到的内存地址 。这种情况下,对指针指向的空间是可以修改的 。4 不做初始化 。这种情况在C语言中是允许的 。如果为全局变量或静态局部变量,系统默认初始化为0值,即NULL 。而对于局部变量 , 将是一个随机值 。所以如果是局部变量不做初始化,在取其指向空间值前,必须为其指定一个合法的值,否则访问会出错 。short i;for(i=0;i<5;i++)dd[i] = (char *)malloc(sizeof(char));}char *dd[5]=再看看别人怎么说的 。
3 , 指针变量初始化为NULL什么意思1)不一定要初始化,但是不初始化的话该指针指向一个未知的位置,而这可能是未来程序的隐患 。2)null的意思就是使指针为空不指向任何地址 。1.为什么指针变量定义时一定要初始化? 答:因为你首先要理解一点.内存空间不是你分配了才可以使用只是你分配了之后使用才安全,为什么要进行对他初始化呢因为,如果你没对他初始化,而引用这个指针并却其指向的内存进行修改因为指针未被初始化,所以指针所指向的也是随机的,他是个野指针,如果你引用指针,并修改这个指针所指向的内容,而如果这个指针所指向的内容恰好是另外一个程序的数据的话,你将其进行修改了,就会导致另外一个程序可能不能正常运行了.所以使用前一定要进行初始化2.指针变量初始化为NULL是什么意思?答:意思是说,强指针变量置空,初始化为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宏的值略有不同 。没有说一定要初始化,不初始化同样也可以用 。初始化是为了避免野指针 , 指针不初始化时,如char *p,有些编译器会随便给它赋个地址,这个地址是不可知的,为了避免出现不必要的麻烦,才用NULL 初始化一下 。一般来说,NULL赋给指针用的最多是在指针的内存被delete 或者 free操作回收之后 , 它所值的地址已经不可用了,需要将它赋NULL 。以便于后面的程序判断它的内存是否已经被回收 。说白了,NULL就是起到一个标志的作用,让后面的程序可以根据这个标志知道这个指针的状态 。NULL的定义是这样的#define NULL ((void *)0)应用程序是不能访问0地址的,所以可以用0地址来表示一个空指针 。if(ptr != NULL)/*确保指针已经被初始化*/{}【c语言指针初始化null,C语言中main中指针赋值NULL的问题】

    推荐阅读