C++ 中关于指针的赋值疑问? *ip=0;//改变了什么 ip=0;//改变了什么

如题所述

int i = 2; // i 初始化为2
int *ip = &i; // 当前ip指向变量i
*ip = 0; //这时改变的是所指对象的值,即i的值当前为0,i == 0

ip = 0; // 改变的是ip所指的地址,当前ip不指向任何对象。追问

int *ip=&i; 是不是可以写成ip=&i; ?

追答

是的。
int *ip;
ip = &i;
和下面的一样:
int i;
i = 10;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-29
例如
int a ;
int *pa;//定义整形指针
pa=&a //pa指向变量a在内存中的地址(位置,地址是一个编号)
*pa=0;//实际上就是*&a=0.当*&两个符号同时出现的时候,你可以认为没有,所以就是a=0.
而pa=0,表示的是指向内存中的地址编号为0的空间,实际是无效地址,本回答被提问者和网友采纳
第2个回答  2012-06-29
ip=0最好写成NULL,是将此地址赋值为零,即不分配地址空间。*ip=0是真正的赋值语句
第3个回答  2012-06-29
*ip=0;//ip对应的地址改为0
ip=0;//给ip的赋值0
第4个回答  2012-06-29
ip指向的空间赋为0
相似回答