假设你创建一个这样的指针:
int *pvalue = NULL;
NULL是表示C指针的特殊符号。
该符号通常定义为((void *)0)
。
当您将0分配给指针时,相当于将其设置为NULL,因此您可以编写以下内容:
int *pvalue = 0;
因为NULL等于零,如果要测试pvalue是否为NULL,您可以写这个:
if(!pvalue) { // the pointer is NULL! . . . }
当p值为NULL时,pvalue将为true。
或者,您可以按如下所示编写测试:
if(pvalue == NULL) { //the pointer is NULL! . . . }
您可以使用指针上的const关键字来指示指向的值不能更改。
以下是一个指向const值的指针声明的示例:
long value = 9L; const long *pvalue = &value; // Defines a pointer to a constant
您只声明p值指向的值不能更改。
你很自由地做你想要的值:
value = 7L;
指向的值已更改,但您没有使用指针进行更改。
当然,指针本身不是常数,所以你仍然可以改变它指向:
long number = 8L; pvalue = &number; // OK - changing the address in pvalue
为了确保存储在指针中的地址不能被改变,在指针的声明中使用 const
关键字。
这里的如何你可以确保指针总是指向同一件事:
int count = 43; int *const pcount = &count; // Defines a constant pointer
第二个语句声明并初始化pcount并指示地址存储不得更改。
因此,以下语句将导致编译时出现错误消息:
int item = 34; pcount = &item; // Error - attempt to change a constant pointer
您仍然可以更改pcount指向使用pcount的值:
*pcount = 345; // OK - changes the value of count
这引用通过指针存储在count中的值,并将其值更改为345。
您可以创建一个常量指针,指向一个也是常量的值:
int item = 25; const int *const pitem = &item;
项
是一个常量指向常量,所以一切都是固定的。
您不能更改存储在的地址pitem,你不能使用pitem修改它指向什么。
您仍然可以直接更改项的值。
如果你想使一切固定和不可侵犯,你可以指定项为const。
const int item = 25; const int *const pitem = &item;