gpt4 book ai didi

c - 访问结构体的双指针

转载 作者:行者123 更新时间:2023-11-30 17:45:55 25 4
gpt4 key购买 nike

我正在尝试使用以下结构指针构建数据包

typedef struct address {
unsigned char *mac_destn_addr;
unsigned char *mac_src_addrl
}address_t;

typedef struct frame {
address_t *eth_addr;
unsigned char *payload;
unsigned int *crc32;
}frame_t;

typedef struct eth_ctrl {
unsigned char *no_of_pkt;
unsigned short *delay;
frame_t **eth_frame;
}eth_ctrl_t;

address_t *adr;
frame_t *frame;
eth_ctrl_t *control;

void main(int argc, char *argv[])
{
adr = malloc(sizeof(address_t));
frame = malloc(sizeof(frame_t));
control = malloc(sizeof(eth_ctrl_t));

frame->eth_addr = adr;
control->eth_frame = &frame;

printf("CRC32 : 0x%x\n", (*control)->eth_frame->crc32);
}

它打印crc32变量的地址。我需要打印该地址中存在的值。我尝试使用 *(*control)->eth_frame->crc32, **(control->eth_frame->crc32) 它不会打印正确的值。

最佳答案

-> 期望 LHS 是一个指针,因此任何以 (*control)-> 开头的东西都保证会做一些奇怪的事情,因为 control 只是一个指针。

我想你想要:

*(*control->eth_frame)->crc_32

或者可能只是

*control->eth_frame[0]->crc_32

换句话说:

control 是一个 eth_crtl_t*

control->eth_frame 是一个 frame_t**

*control->eth_frame 是一个 frame_t*

(*control->eth_frame)->crc_32 是一个 unsigned int*

*(*control->eth_frame)->crc_32 是一个无符号整数

control 是一个指针。取消引用它,并获取名为 eth_frame 的元素。那是一个双指针。取消引用它,再次取消引用它,并获取名为 crc_32 的元素。那是一个单一的指针。仅取消引用一次。

关于c - 访问结构体的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19500245/

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