int i = 3 ;
int *p ;
p = &i ;
int *q = p;
问题:先定义一个数值为3的变量 i 。然后把i的地址传递给变量p。那么变量p的内存单元中存储的就是i的地址,假如说是2000,那么p就是2000.
*p就是间接访问i,也就是说*p是3.
再定义一个变量q。*q也是间接访问的数值,这里等于p,也就是说*q 是2000.
我的理解是内存中存在一个变量,里面存的是2000.那么我如果输出q。那么就应该是
内存中数值为2000的这个变量的地址对吗?至于数值等于2000是哪一个地址,我不知道,但是这里的*q确实是间接访问了数值为2000的变量,假如存在无数多个这样的地址,那么最少计算机也应该随机输出一个地址才对。
但运行的结果 *q的值等于i 等于 2;而q 存储地址的数值等于p的存储地址的值。
那么刚刚我列出的是*q = p 。而计算机实际上运行的结果怎么就是q = p 呢?
代码:
# include
main(){
int i = 2 ;
int *p ;
p = &i ;
int *q = p;
printf("%d\n",*q);
printf("%d\n",q);
printf("%d\n",*p);
printf("%d\n",p);
}