7.4.2 用某个变量的地址初始化
这种方法是用已经定义的变量来初始化指针,要用到取地址运算符&。取地址运算符的格式如下所示。
- p=&var;
其中,p是指针,var是变量。赋值后,p将指向var,p的值就是var。这要求两者具有相同的类型,即指针所指向的类型与var类型相同。否则,就需要执行强制类型转换。
【示例7-9】 演示用变量的地址初始化指针的方法。
- char var;
- char *p=&var;
分析:如果指针的类型与所指内容的类型不同,则需要类型转换,如示例7-8中所示。这种类型转换只是对内存单元做了重新解释。因为指针无论什么时候都只是一个无符号整型数,所以指针的强制类型转换的目标实际是上指向的内存单元。这种转换只是告诉系统要按指定的格式来解释某块内存单元的数据。例如将指向整型类型的指针强制转换为字符型,表示告诉系统将该指针指向的占4个字节的整型数据解释为字符型,并且只取sizeof(char)长度的字节作为字符指针的值。
除非程序员真的能够很好地控制不同种类型指针之间的强制转换的结果;否则不鼓励这么做。这么做也存在导致指针越界,指向非法区域的危险。
【责任编辑:
云霞 TEL:(010)68476606】