1. 程式人生 > >c語言----定義和使用結構體變數

c語言----定義和使用結構體變數

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)引用結構體變數中成員的值:結構體變數名.成員名。“.”是成員運算子,在所有的運算子中優先順序最高。

  • 不能企圖輸出結構體變數名來輸出結構體的所有成員,只能分別輸出各個成員的值
  • 結構體變數成員可以像普通變數一樣進行運算
  • 同類的結構體變數可以相互賦值
  • 可以引用結構體變數成員的地址,也可以引用結構體變數的地址,主要用作函式引數,傳遞結構體變數地址;