指针变量初值为零是什么意思

如题所述

因为指针通常可能是任意值。 但很多时候我们的指针指向的不是我们想要的值,甚至于用这样的指针值访问数据会让程序崩溃(就是经常会出现的0x??????地址不可读或者不可写的问题)。
所以我们需要用一种简单的方法判断指针是否已经被我们指向了正确的地址。而大多数系统都设置为小于4K或者更多K的地址空间不会提供给用户使用。 所以我们设置指针为NULL表示这个指针并未指向合法的(可读)地址。
指针变量通常在定义的时候不能知道他应该指向什么合法的地址, 通常给它赋上NULL的初值(定义时给定的值(不给定不是没有值,而是随机值))。 这就是为什么指针变量初值为零。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-20
type* pointer = 0;

type* pointer = NULL;
type* pointer = nullptr;
这三者在很多时候都可以混用,但是作为比较严谨的码农要明白这三者的差别。
先说nullptr,这个是C++11标准中新加入的,也是最推荐的,唯一一个空指针的字面值,可以说是标准里,唯一给空指针的合法值。但是nullptr具体的值由编译器、运行平台来决定。
然后是NULL,这个是cstdlib中定义的一个宏,在语义上用来表示空指针的值,可以说是在标准没有指定合法值之前的一种惯用法。常见于C++11标准之前的程序。NULL的具体值也由编译器、运行平台来决定。相比于nullptr,它毕竟不是标准认可的,所以地位仍然尴尬。
最后,就是0,之所以取这个值是因为在多数操作系统中,都使用虚拟内存地址,就是程序运行时,在它的视角看,内存就是一个长长的数组,其中从0到某个值的范围都是操作系统的地盘,如果指向操作系统的最低地址,并试图对这个指针进行解引,由于程序仅仅运行在用户态上,操作系统就会返回错误,此时程序就知道这个指针是空的。可以说这种将0赋值给指针的方法是平台相关的,会导致代码有不可移植的潜在风险。
第2个回答  2011-11-22
就是给变量赋一个最初的值,这个值是零
第3个回答  2011-11-20
即是指向空指针
第4个回答  2011-11-20
指向地址为零处的地方。
相似回答