在定义指针的同时给指针一个初始值,称为指针变量的初始化,其格式如下:
基类型*指针名=初始地址值;
指针变量同普通变量一样必须先定义,后使用,而且使用之前必须赋予具体的地址值。由于未经赋值的指针变量中存放的是一个不确定的地址,因此不能通过该地址引用其所指向的内存单元,否则将给系统带来极大的安全隐患。
设有指向整型变量的指针变量p,如要把整型变量a的地址赋予p可以直接在定义p的同时对p进行初始化,方法如下:
其中&是C语言中的取地址运算符,&a表示变量a的地址。由于内存地址(指针)指向唯一的内存单元,因此如果p中保存的是变量a的地址,那么我们就说指针p是指向a的,其关系如图7-3(a)所示。但是a的地址是由系统自动分配,通常我们并不知道a的地址到底是多少。事实上我们也从来不关心a的地址具体是多少,只要知道p中保存的是a的地址,那么在用到a的地址时直接使用变量p即可,因此在以后我们会经常使用图7-3(b)来表示指针变量p和整型变量a之间的指向关系。
图7-3 指针及其所指向的对象
如果没有明确的地址赋给指针变量,可以给指针变量赋NULL,NULL是在头文件stdio.h中定义的符号常量,代表“空指针”,可以赋给任何类型的指针变量。(www.xing528.com)
除了初始化,指针变量也允许赋值,如以上例子也可以用赋值完成:
相同类型的指针之间可以赋值,如:
p和q是基类型相同的指针,都能够保存整型变量的地址,因此它们直接是可以赋值的,p中保存a的地址,赋值后q中保存的也是a的地址。但以下使用形式是错误的:
p中可以保存整型变量a的地址,但是d只能保存double变量的地址,因此把p中的值(a的地址)赋给d是错误的。也就是说,只有基类型相同的指针变量之间才可以赋值。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。