gpt4 book ai didi

c - 当我尝试使用指针访问结构时出错

转载 作者:太空宇宙 更新时间:2023-11-04 01:45:21 25 4
gpt4 key购买 nike

struct cars {
char color[50];
int maxSpeed;
float consumption;
};


int main()
{
struct cars car1;
struct cars car2;
struct cars * car3;

//Car 1
strcpy( car1.color, "red");
car1.maxSpeed = 140;
car1.consumption = 6.6;

//Car 2
strcpy( car2.color, "blue");
car2.maxSpeed = 150;
car2.consumption = 7.3;

//Car 3
strcpy( car3->color, "green");
car3->maxSpeed = 145;
car3->consumption = 7.0;

return 0;
}

代码正常编译为:gcc -std=c99 .....

但是当我执行返回段错误时

似乎结构未分配或我以不正确的方式访问结构。

最佳答案

指针 car3 没有被设置为指向任何东西,所以它的值是不确定的。当您随后尝试读取此无效值并将其作为指针取消引用时,您调用了 undefined behavior在这种情况下,这会导致您的代码崩溃。

您可以将 car3 指向现有的结构实例:

car3 = &car2;

在这种情况下,通过 car3 将准确地为您提供 car2 中存储的内容。或者您可以为 car3 动态分配内存以指向:

car3 = malloc(sizeof *car3);

然后确保在使用完后free(car3)

关于c - 当我尝试使用指针访问结构时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54857517/

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