我有以下的问题和答案:
int m = 5;
int n = m;
int *p1 = &m;
int *p2 = &n;
m = 10;
p2 = p1;
*p2 = 7;这个问题问以下所有问题的价值是什么,答案是:
m=7, n=5, *p1=7, *p2=7
这就是我试过的:
m是值5的int,它的值被赋给m的值,它是5和p1和p2,初始化为指向m和n的指针。
然后,我将m的值改为10,所以m是10,n是5。
然后,当我设置p2 = p1时,两个指针都指向m
当我将p2指出的变量改为7时,n变为7,所以m= 10,n= 7,p1和p2指向n,它的值为7。
因此:
m=10, n=5, *p1=7, *p2=7
我在这里做错什么了?
编辑:解决
发布于 2014-06-07 07:12:33
你的错误在你回答的最后一行。p2指向的是m的内存地址,而不是n。
p2 = p1是存储在p2上的内存地址将是p1中的地址存储,即m的内存地址。
永远不会改变。*p2 = 7;发生在p2 = p1之后,当p2是m的内存地址时。
发布于 2014-06-07 07:08:36
p1和p2都指向m。因此,*p1和*p2的值是m的值,为7。如果更改指针所指向的变量的值,指针仍将指向它。
发布于 2014-06-07 07:12:48
对于变量,说"x是.“,指针说”.指向x",当取消引用时说“(事物x指向).”。那么行动的顺序可以说是:
现在看看你得到的答案,看看它是否有意义。
https://stackoverflow.com/questions/24094698
复制相似问题