gpt4 book ai didi

c++ - 引用指针问题?

转载 作者:行者123 更新时间:2023-11-30 02:23:31 26 4
gpt4 key购买 nike

这是我的:

void g(int *&x) {
int a = 3;
x = &a;
}
void h(const int *&x) {
int b = 2;
x = &b;
}
int main() {
int *p = new int;
*p = 5;
g(p);
cout << p << " " << *p << endl; // Print #2
cout << p << " " << *p << endl; // Print #3
const int*p1 = p;
h(p1);
cout << p << " " << *p << endl; // Print #4
cout << p << " " << *p << endl; // Print #5
}

据我所知,Print#2Print#3 应该有相同的结果,但在我编译时却不是。它也适用于 Print#4Print#5。有人可以帮助我吗?
更新:这是我在计算机上编译时的输出:

00EFF9D4 3 //1
00EFF9D4 1552276352 //2
00EFF9D4 2 //3
00EFF9D4 1552276352 //4

(1) 和 (2) 不应该相同吗? (3) 和 (4) 之一。

最佳答案

我假设你的意思是 g() 中的 int a

您的函数使指针指向一个局部变量,该变量在函数终止后将超出范围

然后您取消引用指针,这将调用未定义的行为

关于c++ - 引用指针问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168930/

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