首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的指针问题

C中的指针问题
EN

Stack Overflow用户
提问于 2014-06-07 07:04:47
回答 5查看 66关注 0票数 1

我有以下的问题和答案:

代码语言:javascript
复制
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

我在这里做错什么了?

编辑:解决

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-06-07 07:12:33

你的错误在你回答的最后一行。p2指向的是m的内存地址,而不是n。

p2 = p1是存储在p2上的内存地址将是p1中的地址存储,即m的内存地址。

永远不会改变。*p2 = 7;发生在p2 = p1之后,当p2是m的内存地址时。

票数 4
EN

Stack Overflow用户

发布于 2014-06-07 07:08:36

p1和p2都指向m。因此,*p1和*p2的值是m的值,为7。如果更改指针所指向的变量的值,指针仍将指向它。

票数 2
EN

Stack Overflow用户

发布于 2014-06-07 07:12:48

对于变量,说"x是.“,指针说”.指向x",当取消引用时说“(事物x指向).”。那么行动的顺序可以说是:

  • M是5
  • N是5
  • p1指向m
  • p2点到n
  • M是10
  • p2指向m(因为p2获得p1的值)
  • ( p2指向m的东西)是7

现在看看你得到的答案,看看它是否有意义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24094698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档