c++ - 关于从结构指针读取的代码的简单代码

标签 c++ pointers gcc

我试图理解指针,所以我编写了这段代码:

#include<iostream>

using namespace std;

struct teste{
  int a;
  bool b;
};

void say (struct teste* a) {
  cout << (*a).a << (*a).b << "\n";
}

int main() {
  teste* e;
  (*e).a=2;
  (*e).b=0;
  say(e);
}

这给了我段错误

但以下内容:

#include<iostream>

using namespace std;

struct teste{
  int a;
  bool b;
};

void say (struct teste* a) {
  cout << (*a).a << (*a).b << "\n";
}

int main() {
  teste e;
  e.a=2;
  e.b=0;
  say(&e);
}

我知道第二个是首选,但为什么第一个不起作用?我认为我做的一切都很好。

最佳答案

teste* e; 
(*e).a=2;   
(*e).b=0;

这会导致段错误,因为指针 e 未初始化 - 它未指向有效内存。

当您使用某个地址初始化指针时,比如 y - 然后应用取消引用运算符,您告诉它从您分配给它的内存地址 y 中检索值。在你的例子中,没有地址被分配给它,所以你不能取消引用它。

让它指向一个teste对象,然后你就可以解引用它。

关于c++ - 关于从结构指针读取的代码的简单代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35245514/

相关文章:

c - 了解空 main() 到程序集的翻译

c++ - 在类中获取 "this"的上下文并分配给类指针 TheClass*

c++ - 使用指向抽象基类的指针时,是否有更有效的方法来获取派生类的类型?

c - 从传递的指针打印指向的值

c++ - ARM neon 优化 - 摆脱多余的负载

c++ - 使用 stringstream 将动态大小的字符串转换为整数

c++ - 异常显示错误

c++ - 在一个项目中创建多个 cpp 文件

指向字符串的字符指针

c++ - 带有指针的循环不起作用