首页 理论教育 指针变量的初始化和运算技巧

指针变量的初始化和运算技巧

时间:2023-11-20 理论教育 版权反馈
【摘要】:图8-3指针变量q、p和k的关系注意:当进行赋值运算时,赋值号两边指针变量的基类型必须相同。给指针变量赋“空”值。

指针变量的初始化和运算技巧

1.指针变量初始化

指针变量在使用之前必须对其进行初始化,使指针变量指向一个确定的内存单元,否则系统会让指针指向一个随机的内存单元,如果该地址正被系统使用着,那么将会带来很大的灾难。

指针变量初始化的一般格式如下:

类型名 指针变量名=初始化地址值

例如:

注意:

(1)任意类型的指针变量都要遵守“先定义,再初始化,后使用”的原则。未经初始化的指针禁止使用。

(2)必须使用同一类型数据的地址进行指针初始化。

(3)不能把一个整数赋给指针变量。

2.指针的运算

(1)通过求地址运算符(&)获得地址值

(2)通过指针变量获得地址值。

可以通过赋值运算,把一个指针变量中的地址值赋给另一个指针变量,从而使这两个指针指向同一地址。例如,有以下定义:

语句“p=q;”使指针变量p中也存放了变量k的地址,也就是说指针变量p和q都指向了变量k。可以用图8-3来形象地表示变量q、p和k的关系。

(www.xing528.com)

图8-3 指针变量q、p和k的关系

注意:当进行赋值运算时,赋值号两边指针变量的基类型必须相同。

(3)通过标准函数获得地址值。

可以通过调用库函数malloc和calloc在内存中开辟动态存储单元,并把所开辟的动态存储单元的地址赋给指针变量。

(4)给指针变量赋“空”值。

除了给指针变量赋地址值外,还可以给指针变量赋NULL值。例如:

NULL是在stdio.h头文件中定义的预定义符,因此在使用NULL时,应该在程序的前面出现预定义行:#include<stdio.h>。NULL的代码值为0,当执行了以上的赋值语句后,称p为空指针。

语句“p1=NULL;”等价于“p1=0;”或“p1=‘\0’;”。这时,指针p并不是指向地址为0的存储单元,而是具有一个确定的值——“空”。企图通过一个空指针去访问一个存储单元时,将会得到一个出错信息。

【程序实例】

若有以下定义和语句:

则以下语句中,错误的是( )。

A.*q=0; B.w=p;

C.*p=a; D.*p=*w

给一指针赋空值的正确语句是“q=NULL;”或“q=‘\0’;”或“q=0;”。选项B的含义为使指针w指向指针p所指向的存储单元。选项C的含义为使指针p指向变量a所在的存储单元。选项D的含义为将指针w所指的变量值赋给指针p所指的变量。所以,只有选项A是错误的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈