c語言----定義和使用結構體變數
阿新 • • 發佈:2019-01-10
1.結構體型別
由於一個數組中只能存放同一種類型的資料,很不方便,所以C語言允許使用者自己建立由不同型別資料組成的組合型的資料結構,也就是結構體,通俗講就像是打包封裝,把一些有共同特徵(比如同屬於某一類事物的屬性,往往是某種業務相關屬性的聚合)的變數封裝在內部,通過一定方法訪問修改內部變數。
宣告一個結構體型別的一般形式是
stuct 結構體名
{成員列表};
這樣只是建立了一個結構體型別,相當於一個模型,並沒有定義變數,其中並沒有具體資料,系統也不對之分配記憶體單元。可以採用以下三種方法定義結構體型別變數。
2.結構體型別變數
- 先宣告結構體型別,再定義該型別變數。
struct student { int num; char name[20]; char sex; int age; } struct student S1,S2;
- 在宣告定義的同時定義變數
struct student
{
int num;
char name[20];
char sex;
int age;
}S1,S2;
- 不指定型別名直接定義結構體變數
struct
{
int num;
char name[20];
char sex;
int age;
}S1,S2;
指定了一個無名的結構體型別,它沒有名字(不出現結構體名字),顯然不能再用這個結構體型別去定義其他變數,這種方式用的不多。
3.結構體變數的初始化和引用
#include <stdio.h> int main() { struct student { int num; char name[20]; char sex; int age; }S1={1001,"zhangsan","M",18}; printf("NO.:%d\name:%s\sex%c\age:%d\n",S1.num,S1.name,S1.sex,S1.age); return 0; }
(1)在定義結構體變數時可以對它的成員初始化,初始化列表時用花括號括起來的一些常量,這些常量依次賦值給結構體變數中的各成員,注意:是對結構體變數初始化,而不是對結構體型別初始化。
(2)引用結構體變數中成員的值:結構體變數名.成員名。“.”是成員運算子,在所有的運算子中優先順序最高。
- 不能企圖輸出結構體變數名來輸出結構體的所有成員,只能分別輸出各個成員的值
- 結構體變數成員可以像普通變數一樣進行運算
- 同類的結構體變數可以相互賦值
- 可以引用結構體變數成員的地址,也可以引用結構體變數的地址,主要用作函式引數,傳遞結構體變數地址;