gpt4 book ai didi

c++ - 结构和指针 C++

转载 作者:行者123 更新时间:2023-11-30 00:53:02 24 4
gpt4 key购买 nike

我在下面的代码中尝试使用 Struct、指针和 typedef。我想创建一个指向我组成的结构的指针。然后我想使用 -> 运算符操作结构的成员。

下面的代码可以正常编译,但是,当我运行程序时,它会产生段错误。

谁能帮我解释一下我的逻辑哪里出了问题?

谢谢。

struct Structure1 {
char c;
int i;
float f;
double d;
};

typedef Structure1* structp;

int main(){
structp s1, s2;
s1->c = 'a';
s1->i = 1;
s1->f = 3.14;
s1->d = 0.00093;
s2->c = 'a';
s2->i = 1;
s2->f = 3.14;
s2->d = 0.00093;
}

最佳答案

structp s1, s2;

您已经声明了两个指针,s1s2 但它们还没有指向任何地方!您需要使用 new 为这些指针分配内存。

s1 = new Structure1();
s1->c = 'a';
s1->i = 1;
// ...

之后不要忘记删除内存:

delete s1;

参见 this answer为什么 new Structure1() 中的括号会有所不同。另请注意,还有其他方法可以获取指向对象的指针,例如使用 & 运算符,但在这种特殊情况下,我认为您想分配内存。

关于c++ - 结构和指针 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606036/

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