您的位置:首页 > 编程语言 > C语言/C++

关于C++指针

2005-12-09 20:46 316 查看
两个运算符啊.

* 运算地址,也就是取这个指针指向的变量的值.
& 取地址.

int i, *p;
p = &i; &i 就是取i的地址.p是指针,也就是存放地址的变量.
i = *p;  *p这个恰恰相反,取该指针指向的数值.

一定要区别于声明时候的语法.
int *p;  这里的*不是运算符,而是类型符,表示指针类型.
int *p = &i; 这个不是 *p = &i;而是 int *p; p=&i;

这两个运算符是从右到左的.
*&p = *(&p),先取p的地址,然后取这个地址指向的数值.所以*&p = p.
但是 &*P 就要注意了,因为*运算符一定要是合法的地址,否则程序出错.也就一定要保证p的值是合法的.
没有初始化的指针的值是非法的.
int *p;
*p = 11; //非法,p还没初始化;
p = (int*)12312;
*p = 22; //非法,可能指向非程序管理的地址空间.除非你知道该地址是合法的.
int i, pi;
pi = (int)&i;
p = (int*)pi.
*p = 33; ;//因为i是程序的一个变量,所以知道他的地址是合法的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: