c語言結構體嵌套結構體
『壹』 c語言結構體可以隨意嵌套結構體么
可以,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語言 如何在結構體中給嵌套的結構體賦值
結構體嵌套,賦初值,大括弧嵌套就可以了。
問題是你代碼寫錯了。
你定義的old1不是結構類型,而是結構變數。
在shuju中成員要寫struct old 變數名;
不能寫struct old1。
下面是演示代碼:(補充:如果想定義一個結構類型別名,要用typedef)

#include <stdio.h>
struct old
{
int year;
int month;
int day;
}old1={1972, 8, 3};
struct shuju
{
char name[10];
char gender[6];
int height;
struct old old1;
char access[9];
}shuju1={"moumouren","male",175,{2019,6,29},"well"};
int main()
{
printf("結構變數old1的初值: %d %d %d ",old1.year,old1.month,old1.day);
printf("結構變數shuju1中成員old1的初值:%d %d %d ",shuju1.old1.year,shuju1.old1.month,shuju1.old1.day);
printf("我特意起一樣的名字,就是告訴你這兩個變數是不一樣的。 ");
return 0;
}
/*(補充:如果想定義一個結構類型別名,要用
typedef struct old
{
int year;
int month;
int day;
}old1;//這樣old1才表示是一個類型,然後再定義該類型變數時,才可以寫 old1 變數名;
)*/
