输入格式错误
结构体中的结构体指针问题
问题描述
学习结构体指针,定义了一个结构体,元素中包含了一个指向该结构体的指针struct Ex d;进行初始化后,声明两个结构体变量x;y。将x中的结构体指针d指向y的地址时,出现了问题,显示警告
example.c:103: warning: assignment from incompatible pointer type,
而且通过x结构体中的结构体指针*d访问y的成员时,显示解引用错误。不知道为什么。
代码如下:
typedef struct{
int a;
short b[2];
}Ex2;
typedef struct{
int a;
char b[3];
Ex2 c;
struct Ex *d;
}Ex;
Ex x = {10,"Hi",{5,{-1,25}},0};
Ex *px = &x;
Ex e ;
Ex y ;
x.d = &y;
5\7更新:
找出原因
Ex结构体声明错误:
修改声明代码如下:
typedef struct Ex{
int a;
char b[3];
Ex2 c;
struct Ex *d;
}Ex;
未修改之前,类型名直到声明的末尾才定义,所以在结构体内部它尚未定义。解决方案是定义一个结构体标签来声明它。