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


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尚未设置为指向任何内容,因此其值不确定。 然后,当您尝试读取此无效值并将其取消引用为指针时,您将调用未定义的行为,在这种情况下会导致代码崩溃。

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

car3 = &car2;

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

car3 = malloc(sizeof *car3);

然后,请务必在完成使用后free(car3)

您需要添加以下行:

car3 = malloc(sizeof *car3);

这将为一个汽车实例分配内存。

相关内容

  • 没有找到相关文章

最新更新