1. 程式人生 > >C/C++結構體語法總結

C/C++結構體語法總結

結構體簡介

結構體屬於聚合資料型別的一類,它將不同的資料型別整合在一起構成一個新的型別,相當於資料庫中一條記錄,比如學生結構體,整合了學號,姓名等等資訊。結構體的好處就是可以對這些資訊進行整體管理操作,類似面向物件中類的屬性,有了結構體,我就可以更好抽象描述一個類別,個人感覺類就是由結構體發展而來的。在C/C++中,結構體宣告的關鍵字為struct。

C語言結構體語法

第一種語法表示

struct 結構體名稱{
   資料型別 member1;
   資料型別 member2;
};
這種方式在宣告結構體變數時為:struct 結構體名稱 結構體變數名
example :

#include<stdio.h>
struct Student{
    int sNo;
    char name[10];
};
int main(){
    struct Student stu;
    scanf("%d",&stu.sNo);
    scanf("%s",stu.name);
    printf("%d\n",stu.sNo);
}

第二種語法表示

typedef struct 結構體名稱{
   資料型別 member1;
   資料型別 member2;
}結構體名稱別名;
這種方式在宣告結構體變數時有兩種方式。

第一種:struct 結構體名稱 構體變數名
第二種:結構體名稱別名 結構體變數名

原因:這裡使用了typedef關鍵字,此關鍵字的作用就是宣告資料型別的別名,方便使用者程式設計,所以這裡用了之後,結構體名稱別名就相當於struct 結構體名稱。在宣告結構體變數時,就無需寫struct了。
example:

#include<stdio.h>
typedef struct Student{
    int sNo;
    char name[10];
}Stu;
int main(){
    struct Student stu;  //方式一
    Stu stu1;            //方式二
scanf("%d",&stu.sNo); scanf("%s",stu.name); printf("%d\n",stu.sNo); scanf("%d",&stu1.sNo); scanf("%s",stu1.name); printf("%d\n",stu1.sNo); }

第三種方式

struct 結構體名稱{
   資料型別 member1;
   資料型別 member2;
}結構體變數名;

相當於:

struct 結構體名稱{
   資料型別 member1;
   資料型別 member2;
};
struct 結構體名稱 結構體變數名;

這種方式既定義了結構體名稱,同時聲明瞭一個結構體變數名。在其它地方也可以通過struct 結構體來再次宣告其它變數,而第四種方法則不可以。
example:

#include<stdio.h>
struct Student{
    int sNo;
    char name[10];
}stu;      //此處stu 是變數名
int main(){
    scanf("%d",&stu.sNo);
    scanf("%s",stu.name);
    printf("%d\n",stu.sNo);
}

第四種方式

struct {
   資料型別 member1;
   資料型別 member2;
}結構體變數名;

此方式是匿名結構體,在定義時同時宣告2個結構體變數,但不能在其它地方宣告,因為我們無法得知該結構體的識別符號,所以就無法通過識別符號來宣告變數。
example:

#include<stdio.h>
struct {
    int sNo;
    char name[10];
}stu,stu1;     //匿名結構體,同時定義了2個結構體變數
int main(){
    scanf("%d",&stu.sNo);
    scanf("%s",stu.name);
    printf("%d\n",stu.sNo);
    scanf("%d",&stu1.sNo);
    scanf("%s",stu1.name);
    printf("%d\n",stu1.sNo);
}

C++語言結構體語法

C++語言結構體語法的C大同小異,宣告結構體變數時可以省略struct 其它無變化!
具體參照C語言部分,在用到“struct 結構體名稱”時,可以簡寫為“結構體名稱”來宣告。