gpt4 book ai didi

c - 为结构的属性赋值

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

我正在尝试为指向结构的指针的属性赋值,但出现段错误。

  typedef struct {
int id;
char payload[10];
}packet;

void main(){
packet *header;
header->id = 1;
}

它可以编译,但是当我运行它时它会给我一个段错误。仅当我在创建 header 时使用“malloc”时才有效。这是为什么?通常我不必为其他指针类型分配内存。

最佳答案

在这种情况下,header 没有被初始化——它是一个指针,这意味着它没有指向任何有意义的东西。当您尝试为 header->id 赋值时,您会遇到段错误。这是完全合乎逻辑的,只有当你为它分配了内存时才工作是正确的。

要么,你想创建一个实际的数据包:

packet header;
header.id = 1;

或者你想堆分配一个:

packet* header = malloc(sizeof(packet));
if(header){ //Check if malloc succeeded
header->id = 1;
}

关于c - 为结构的属性赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18005540/

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