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 結構體名稱”時,可以簡寫為“結構體名稱”來宣告。