初始化指针变量
与普通变量类似,指针变量必须经过初始化才能使用。如果对未初始化的指针进行操作,可能将导致系统混乱,严重的情况将使系统崩溃。因为刚定义的指针变量中可能有一个随机的值,在指针变量中,该值表示一个内存地址。如果该内存地址正好是操作系统的代码区域,修改该内存地址中的值就会使系统崩溃。
因此,定义指针变量之后,必须为其赋予具体的值。指针变量的赋值只能赋予地址,决不能赋予任何其他数据,否则也可能引起错误。
未用指针应当赋以值NULL,以表明它未指向任何地方。当指针的值为NULL时,称该指针为空指针。NULL是一个符号常量,表示0值。使用以下代码:
int *p;
p=NULL;
或
int *p=NULL;
可将指针变量初始化为一个空指针。
在程序中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。为此,C语言中提供了地址运算符"&",可以获取变量的首地址。其一般形式如下:
&变量名
其中"&"为取地址运算符,变量名为预先声明的变量。例如,&a表示变量a的首地址,&b表示变量b的首地址。
初始化指针一般就是使用该运算符取得一个变量的地址,并将其赋值给指针变量即可。例如:
int i;
int *pi=&i;
以上两个语句中,先定义int型变量i,再定义int型指针变量pi,并将变量i的地址赋值到指针变量pi中。也可写为以下方式:
int i;
int *pi;
pi=&i;
以上三个语句中,首先定义两个变量,接着将变量i的地址保存到变量pi中。需要注意的是,变量i的地址是保存在变量pi中,最后一行中不用在pi前面加上星号(*),*也是一个运算符
与普通变量类似,指针变量必须经过初始化才能使用。如果对未初始化的指针进行操作,可能将导致系统混乱,严重的情况将使系统崩溃。因为刚定义的指针变量中可能有一个随机的值,在指针变量中,该值表示一个内存地址。如果该内存地址正好是操作系统的代码区域,修改该内存地址中的值就会使系统崩溃。
因此,定义指针变量之后,必须为其赋予具体的值。指针变量的赋值只能赋予地址,决不能赋予任何其他数据,否则也可能引起错误。
未用指针应当赋以值NULL,以表明它未指向任何地方。当指针的值为NULL时,称该指针为空指针。NULL是一个符号常量,表示0值。使用以下代码:
int *p;
p=NULL;
或
int *p=NULL;
可将指针变量初始化为一个空指针。
在程序中,变量的地址是由编译系统分配的,对用户完全透明,用户不知道变量的具体地址。为此,C语言中提供了地址运算符"&",可以获取变量的首地址。其一般形式如下:
&变量名
其中"&"为取地址运算符,变量名为预先声明的变量。例如,&a表示变量a的首地址,&b表示变量b的首地址。
初始化指针一般就是使用该运算符取得一个变量的地址,并将其赋值给指针变量即可。例如:
int i;
int *pi=&i;
以上两个语句中,先定义int型变量i,再定义int型指针变量pi,并将变量i的地址赋值到指针变量pi中。也可写为以下方式:
int i;
int *pi;
pi=&i;
以上三个语句中,首先定义两个变量,接着将变量i的地址保存到变量pi中。需要注意的是,变量i的地址是保存在变量pi中,最后一行中不用在pi前面加上星号(*),*也是一个运算符