C 指针值

学习C - C指针值

测试NULL指针

假设你创建一个这样的指针:

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;