gpt4 book ai didi

c++ - C++中指针的混淆

转载 作者:行者123 更新时间:2023-11-28 00:15:21 27 4
gpt4 key购买 nike

我正在用指针练习,遇到了这个东西。
下面的代码给出了答案:

 1
0
3

当我将 *a 更改为 *c 时,答案是相同的,但在更改为 *b=0 时,答案是

1
2
0

您能否请问每个流程的幕后情况如何?

#include<iostream>
using namespace std;
void func(int *a, int *b,int *c)
{
a=b;
b=c;
c=a;
*a=0;

}


int main()
{
int a=1,b=2,c=3;
func(&a,&b,&c);
cout<<a<<endl<<b<<endl<<c;

}

最佳答案

a = 1
b = 2
c = 3

为了便于阅读,我将func 中的变量重命名为papbpc。所以你在 func 中混合的东西使得:

  • pa 指向 pb 指向的内容 (b)
  • pb 指向 pc 指向的内容 (c)
  • pc 指向 pa 指向的内容(现在是 b)

因此

*pa = 0

跟随 pa 的指针(指向 b)并将其设置为 0,给你:

a = 1
b = 0
c = 3

不过

*pb = 0

而是遵循 pb 的指针(指向 c)并将其设置为 0,从而:

a = 1
b = 2
c = 0

关于c++ - C++中指针的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com