Ali*_*ice -4 c++ struct pointers
我对C++比较陌生,我正在尝试使用 - > with structs.我有这个代码,应该从结构中打印出名称和年龄.我知道 - >当变量是一个指针时使用,所以我试图用以下代码声明一个指向struct的指针:
typedef struct Person{
string name;
int age;
};
int main() {
Person me;
me.name = "name";
me.age = 1;
Person* me2;
*me2 = me;
cout << me2->name << "," << me2->age << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码导致分段错误.
但是,如果我改变了
*me2 = me
Run Code Online (Sandbox Code Playgroud)
至
me2 = &me
Run Code Online (Sandbox Code Playgroud)
代码工作正常(打印出名称和年龄).
我不确定为什么这两行代码不相同.我以为我被允许用*更改指针的内容,但我不确定为什么这不起作用.请问有人帮我理解吗?
所不同的是,该行*me2 = me复制内容的me成任何me2点.默认情况下,me2不指向任何产生未定义行为的东西(在您的情况下,它会导致段错误).
然而,该行me2 = &me复制地址的me进入me2,无需访问一个空指针.事实上,这me2指向了一个有效的内存块(因为它指向me),因此是正确的行为.