gpt4 book ai didi

c - 参数类型无效

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

我正在尝试编译我的代码,但我一直收到此错误。

error: invalid type argument of '->' (have 'struct packet')

部分初始化:

struct list *current;
struct packet p;

struct packet *newpacket = malloc(sizeof(p));

这一行导致了错误,但我不知道出了什么问题。

if ((current -> p -> block_num < newpacket -> block_num) && (current -> next -> p -> block_num > newpacket -> block_num)){

我的头文件:

struct packet {
unsigned short block_num;
unsigned short block_size;
unsigned short crc;
unsigned char *payload;
};

struct list {
struct packet p;
struct list *next;
};

我不明白哪里出了问题,而且我真的是 C 语言的新手。如有任何帮助,我们将不胜感激。谢谢!

最佳答案

-> 运算符用于您拥有指向对象的指针并想要访问对象成员的实例。在这种情况下,您有一个不是指针的数据包结构的实例。您正在尝试使用 -> 运算符访问其成员。这是不正确的。相反,您应该使用 . 运算符。

例如:current->p.block_num 会给你数据包 block 号。

Wikipedia article中描述了以下内容:

  • a->b 被称为结构取消引用(a 指向的对象的成员 b)。
  • a.b 被称为结构引用(对象 a 的成员 b)。

关于c - 参数类型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21770398/

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