1. 程式人生 > 其它 >結構體變數的兩種初始化方式

結構體變數的兩種初始化方式

技術標籤:c語言學習筆記c語言

結構體變數的初始化


結構體白能量的初始化方式有兩種,可以在定義的時候或定義之後對結構體變數進行初始化。

定義時初始化

一般情況下我們都是在定義的時候對它進行初始化,因為那樣比較方便。如果定義之後再進行初始化,那就只能一個一個成員進行賦值,就同陣列一樣。

下面先介紹如何在**定義的時候進行初始化。在定義結構體變數時對其進行初始化,只要用大括號“{}”括起來,然後按結構體型別宣告時各項的順序進行初始化即可。**各項之間用逗號分隔。如果結構體型別中的成員也是一個結構體型別,則要使用若干個“{}”一級一級地找到成員,然後對其進行初始化。

# 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; }