c语言结构体可以随意嵌套结构体么?

来源:百度知道 编辑:UC知道 时间:2024/06/10 09:06:26
编写程序时
struct plane{
……
}
struct player {
struct plane1;
struct plane2;
} playerA, playerB, *player;

这样直接定义可以么?

另外,在main之外定义全局变量结构体时可以直接这么用么?
一定需要用typedef么?

谢谢牛人啦~~
如何用结构体指针修改已定义的结构体的值呢?
比如

struct player{
int b;
int c;
} playerA={1,1};
struct player *p;

void main()
{
(*p)=playerA;
p->a=3;
}

这样playerA.a的值貌似没有被改啊~~请教高人!!

可以,typedef是将其定义为一种类型,方便于后来定义此类型的变量
给你举个例子:
第一种方式:
struct panel
{
...
};
struct player
{
struct panel panel1;
...
};
后面如果需要定义player类型的变量,则要有此格式: struct player var1

第二种方式:
typedef struct panel
{
...
};
typedef struct player
{
panel panel1;
...
};

如果需要定义player类型变量,则用 player var1就可以了!

typedef是定义变量类型!

是否main之内,都可以用
typedef后,再定义不需要加struct
而没有typedef,定义时要加struct

我给你改好了!已经回复!

c语言结构体可以随意嵌套结构体
但是像这样
struct player {
struct plane1;
struct plane2;
} playerA, playerB, *player; 是错误的。

struct plane{
……
} ;只是定义了一个名为plane的结构体类型。

嵌套结构体应该是这样:
struct player {
struct plane plane1;
struct plane plane2;
} ;