请问这句话该怎么理解?如果赋给了会有什么后果?
首先要弄明白三个概念:变量名,地址,变量值。
举个例子
int a=3;
a是变量名;3是值;FFFFFF(乱写的,可以用&a得出)是地址;
值和地址是紧密联系的,只是存放在地址中的,而a只是为了程序员便于记忆给出的,想象如果变成的时候要用每个值的地址,那是多么恐怖!既然a只是个名字,那么我可以叫李四,也可以叫小李,也就是说变量也可以有很多名字,怎么办到呢?就是把变量名和地址联系起来,这样便一起就可以通过变量名寻找地址,从而取出地址存的值了。
具体来说:
int a=3;
int*ptr=a;
ptr是储存地址的值(不是变量值!),所以通过*运算就可以得出新的变量别名*ptr,这里的*是运算符号。
这个时候地址上就有两个名字了:a和*ptr
同样我们也可以直接把地址传递给指针:
int a=3;
ptr=&a
&是运算符,通过&a就可以得到a这个变量名所代表的值的地址了。
我们再来回忆一次:
3是值;
&a是地址值,通过&a可以找到3(值);
a是变量名,通过a可以寻找到&a(地址),然后找到3(值);
ptr是地址值,通过ptr可以寻找到3(值);
*ptr是变量名,通过*ptr可以寻找到ptr(地址),然后找到3(值);
我自己的一些理解,希望对你能有帮助!
[URL=http://blog.csdn.net/bestee]欢迎光临我的blog给我留言或者交换连接[/URL]
[此贴子已经被作者于2006-1-19 1:17:49编辑过]