我有以下示例代码,其中我尝试在另一个结构中插入一个结构,但是我不知道如何访问它的字段。
#include <stdio.h>
#include <stdlib.h>
typedef struct Ejemplo{
void* data;
} ejemplo;
typedef struct Dentro{
char* dataDentro;
} dentro;
int main(){
char nombre[] = "Cris\0";
ejemplo* estructura = malloc(sizeof(ejemplo));
dentro* estructuraInterior = malloc(sizeof(dentro));
estructuraInterior->dataDentro = nombre;
estructura->data = estructuraInterior;
printf("\n%s\n ", estructura->data->dataDentro);
return 0;
}
这不起作用并在 printf 行上产生错误
错误:成员引用基类型“void”不是结构或联合
应该怎么做才能让它发挥作用?
首先,你做
然后您尝试像访问
data
一样访问dentro
,这会导致错误。最简单的解决方案:predeclare
struct Dentro
:您的问题是您正在取消引用指向
void
.先验您正在正确访问子结构,但是无法
data
解释Ejemplo
. 由于void
不是 aDentro
,箭头运算符 (->
) 将无法访问dataDentro
。解决方案。
应用类型转换: