gpt4 book ai didi

c - 如何访问结构内部的 union ?

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

我有以下代码:

/* sample.c */ 
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include"hermes.h"
#include<string.h>

int main (){
struct hermes *h ;
h = ( struct hermes *) malloc ( sizeof ( struct hermes *));

strcpy ( h->api->search_response->result_code , "123" );
printf("VALue : %s\n" , h->api->search_response->result_code );
return 0;
}

/* hermes.h */
struct hermes {

union {

/* search response */
struct {
int error_code;
char *result_code;
char *user_track_id;
struct bus_details bd;
}*search_response;

}*api;
};

当我尝试访问元素时出现段错误。谁能告诉我访问这些元素的正确方法是什么?

最佳答案

您的 malloc() 行不正确:

h = ( struct hermes *) malloc ( sizeof ( struct hermes *));

应该是:

h = ( struct hermes *) malloc ( sizeof ( struct hermes));

删除sizeof()中的*。否则,您只是为指针分配了足够的空间,而不是结构本身。

此外,在 C 中不需要强制转换。

关于c - 如何访问结构内部的 union ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9029887/

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