结构体中的结构体指针问题

输入格式错误

  • 结构体中的结构体指针问题
    • 问题描述
    • 代码如下:
    • 找出原因

结构体中的结构体指针问题

问题描述

学习结构体指针,定义了一个结构体,元素中包含了一个指向该结构体的指针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;

未修改之前,类型名直到声明的末尾才定义,所以在结构体内部它尚未定义。解决方案是定义一个结构体标签来声明它。

你可能感兴趣的:(C语言)