結構體變數的兩種初始化方式
阿新 • • 發佈:2021-01-06
結構體變數的初始化
結構體白能量的初始化方式有兩種,可以在定義的時候或定義之後對結構體變數進行初始化。
定義時初始化
一般情況下我們都是在定義的時候對它進行初始化,因為那樣比較方便。如果定義之後再進行初始化,那就只能一個一個成員進行賦值,就同陣列一樣。
下面先介紹如何在**定義的時候進行初始化。在定義結構體變數時對其進行初始化,只要用大括號“{}”括起來,然後按結構體型別宣告時各項的順序進行初始化即可。**各項之間用逗號分隔。如果結構體型別中的成員也是一個結構體型別,則要使用若干個“{}”一級一級地找到成員,然後對其進行初始化。
# include <stdio.h>
struct AGE
{
int year;
int month;
int day;
};
struct STUDENT
{
char name[20];
int num;
struct AGE birthday;
float score;
};
int main(void)
{
struct STUDENT student1 = {"小明", 1207041, {1989, 3, 29}, 100}; //結構體在定義時初始化
return 0;
}
注意,同字元、字元陣列的初始化一樣,如果是字元那麼就用單引號括起來,如果是字串就用雙引號括起來。
定義之後初始化
第二種方式是定義後再初始化,我們將上面的程式改一下即可:
# include <stdio.h>
# include <string.h>
struct AGE
{
int year;
int month;
int day;
};
struct STUDENT
{
char name[20]; //姓名
int num; //學號
struct AGE birthday; /*用struct AGE結構體型別定義結構體變數birthday, 即生日*/
float score; //分數
};
int main (void)
{
struct STUDENT student1; /*用struct STUDENT結構體型別定義結構體變數student1*/
strcpy(student1.name, "小明"); //不能寫成&student1
student1.num = 1207041;
student1.birthday.year = 1989;
student1.birthday.month = 3;
student1.birthday.day = 29;
student1.score = 100;
printf("name : %s\n", student1.name); //不能寫成&student1
printf("num : %d\n", student1.num);
printf("birthday : %d-%d-%d\n", student1.birthday.year, student1.birthday.month, student1.birthday.day);
printf("score : %.1f\n", student1.score);
return 0;
}