一个c的小问题 请帮忙

来源:百度知道 编辑:UC知道 时间:2024/04/30 07:09:55
今天看书上说
在结构中
struct wrong{
char name[5];
struct wrong a;
};
是错的
但是
typedef struct node{
struct node *n[2];
char color[10];
}NODE;
是对的
它为node型结构定义了一个新名NODE
为什么它是对的

struct wrong{
char name[5];
struct wrong a;
};
错误
struct wrong{
char name[5];
struct wrong *a;
};
正确
这个很容易理解,对于第一个结构,sizeof(wrong)是多大?显然不能确定了,造成问题了!但是对于第二个 sizeof(wrong)则大小已知,因为指针一般是4字节大小。

因为结构体不可以自己创建自己的类型,但可以创建自己类型的指针。
struct node *n[2]//创建一个strcuct node 类型的指针。
struct wrong a//创建的不是指针类型,所以是错误的。

typedef A B 只是定义同义词,也就是为A起了别名叫B而已

此后可以用B代替A,但没有定义新类型

楼上的正解,1楼的则说的很直白