Sle*_*idi 1 c++ struct anonymous-types
此代码在运行时失败,而不是在编译时失败.我不是C++专家.有帮助吗?
extern void fn();
int main(int argc, char** argv) {
fn();
}
void fn()
{
struct Foo{
string name;
}*foo;
foo->name="sleiman";
cout<<foo->name<<endl;
}
Run Code Online (Sandbox Code Playgroud)
为什么这段代码在运行时失败,为什么在创建静态实例时它会成功?
void fn()
{
struct Foo{
string name;
}foo;
foo.name="sleiman";
cout<<foo.name<<endl;
}
Run Code Online (Sandbox Code Playgroud)
foo是一个指针,但没有初始化,所以当你尝试访问名称时,它正在读取无效的内存.您初始化foo为指向Foo结构的指针但不指示它指向实际对象,因此实际上是一个松散的指针.
为了完成这项工作,您需要使用new关键字或其他方法使指针指向实际对象.