gpt4 book ai didi

c++ - 通过另一个指针改变指针的地址

转载 作者:行者123 更新时间:2023-11-28 06:15:36 32 4
gpt4 key购买 nike

Heloo GUYS ..我将一个别名传递给函数中的指针,在该函数中我将指针分配给另一个变量。这正在更改在主要函数中传递的指针的地址。我将向您展示我的代码示例.这给出了输出 40。

#include <iostream>
using namespace std;
void foo(int* &p){
int z=40;
p=&z;
}
int main(){
int x=10;
int *p=&x;
foo(p);
cout<<*p;
}

但是当我尝试在一个主函数中完成这一切时,指针的地址不会改变,所以输出......这是我的代码

#include<iostream>
using namespace std;
int main()
{
int a=1, b=2, c=3;
int *p, *q;
p=&a;
q=*&p;
p=&c;
cout<<*q<<endl;

}

它给出了输出 1 而不是 3。谢谢..

最佳答案

void foo(int* &p){
int z=40;
p=&z;
}

在这里p是对指针的引用。这意味着当您修改它时,您也会修改引用的指针。

当您调用 foo 时与

int main(){
int x=10;
int *p=&x;
foo(p);
cout<<*p;
}

您是说引用 名为p在函数中 foo指的是名为 p 的指针在函数中 main所以无论你对 p 做什么在 foo会影响pmain .

#include<iostream>
using namespace std;
int main()
{
int a=1, b=2, c=3;
int *p, *q;
p=&a;
q=*&p;
p=&c;
cout<<*q<<endl;

}

这里你没有任何引用,你只有一个指针,你可以复制到另一个指针。 q=*&p相当于q=p .

这里要注意的主要区别是 &第一个示例中的运算符表示“引用”,而 &第二个示例中的运算符表示“地址”。

如果您想要第一个样本与第二个样本最接近,试试这个:

#include<iostream>
using namespace std;
int main()
{
int a=1, b=2, c=3;
int *p, *&q = p;
p=&a;
q=*&p;
p=&c;
cout<<*q<<endl;

}

在最后一个例子中,你同时拥有一个 &这意味着 int *p, *&q = p; 中的“引用”和一个 &这意味着 q=*&p; 中的“地址”

关于c++ - 通过另一个指针改变指针的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30399013/

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