結構體簡介
結構體屬於聚合數據類型的一類,它將不同的數據類型整合在一起構成一個新的類型,相當於數據庫中一條記錄,比如學生結構體,整合了學號,姓名等等信息。結構體的好處就是可以對這些信息進行整體管理操作,類似面向對象中類的屬性,有了結構體,我就可以更好抽象描述一個類別,個人感覺類就是由結構體發展而來的。在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 結構體名稱”時,可以簡寫為“結構體名稱”來聲明
