在使用指针时,应注意以下细节。
(1)指针初始化。
在定义指针变量时,可以用合法的指针值对它进行初始化。例如:
(2)空指针。
空指针是一个特殊的值,也是唯一一个对任何指针类型都合法的值。一个指针变量具有空值,表示它当时没有被赋予有意义的地址,处于闲置状态。
空指针值用0表示。将空值赋予一个指针变量,说明该指针变量不再是一个不确定的值,而是一个有效的值。
为了提高程序的可读性,C语言标准库定义了一个与0等价的符号常量NULL,当p是一个指针变量时,在程序中可以写成以下两种形式:
这两种写法都是将指针p置为空指针值,前一种写法使读程序的人容易意识到这里是一个指针赋值。采用前一种写法时,必须通过#include包含相应的标准头文件。
(3)如果指针变量p指向数组a的元素a[i](即p=&a[i]),则需要注意以下几点:
*(p--)相当于a[i--],先取*p,再使p减1。(www.daowen.com)
*(++p)相当于a[++i],先使p加1,再取*p。
*(--p)相当于a[--i],先使p减1,再取*p。
(4)如果指针变量p指向数组a的首地址(即p=a),则需要注意以下几点:
执行p++(或p+=1)后,p指向数组的下一个元素。
*p++相当于*(p++)。因为*和++的优先级相同,++是右结合运算符。
*(p++)与*(++p)的作用不同。*(p++)为先取*p,再使p加1;*(++p)为先使p加1,再取*p。
(*p)++表示p指向的数组元素值加1。
(5)如果两个指针变量p、q指向同一个数组,那么可以对两个指针变量进行比较。若q>p,则q所指的数组元素位于p所指的数组元素之后;若q<p,则q所指的数组元素位于p所指的数组元素之前。若两个指针指向不同的数组,则对它们的比较没有意义。
(6)当两个指针变量指向同一数组时,可以求它们的差,得到的结果是对应的两个数组元素的下标之差(可能是负整数)。例如,对于指针变量p和q,执行语句“n=p-q;”,整型变量n中存储的是一个带符号整数。当p、q指向不同数组时,它们的差没有意义。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。