gpt4 book ai didi

c++ - 为什么指向类的指针可以通过函数调用更改值?

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

我是类指针的新手。我编写了简单的代码来展示我的问题。
为什么p->num可以在f2中设置值?指针 p 不像 n ?只是局部变量?
n1 和 p2 的作用域不是分别在 f1 和 f2 中吗?谢谢
它们有什么区别!

class Node{
public:
int num;
Node* next;
};

void f1(Node n1){
n1.num = 50;
}
void f2(Node*p2){
p2->num= 100;
}
int main(){
Node n;
f1(n);
cout<<n.num<<endl;//output 0

Node*p;
f2(p);
cout<<p->num<<endl;//output 100
return 0;
}

最佳答案

将指针传递给函数就像通过引用传递一样。事实上,这基本上就是引用在幕后的工作方式。

此外,对于这两种情况,您的代码中都有未定义的行为。当您声明一个局部变量但同时没有分配给它时,它的值是不确定,并且将该值用于任何东西都是未定义的。是的,即使访问 n.num 也是未定义的行为,你得到值 0 只是运气。像你这样使用指针甚至可能导致程序崩溃。

关于c++ - 为什么指向类的指针可以通过函数调用更改值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19732491/

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