概念
結構體屬於用戶自定義的數據類型,允許用戶存儲不同的數據類型
定義和使用
語法:struct 結構體名{ 結構體成員列表 };
通過結構體創建變量的方式有三種
- struct 結構體名 變量名
- struct 結構體名 變量名{成員1值, 成員2值...}
- 定義結構體時順便創建變量
創建結構體的時候struct可以省略。
struct Student{
string name;
} s1; //可以在定義的時候順便創建變量
int main(){
struct Student s1;
s1.name = "Jam";
return 0;
}
結構體數組
語法:struct 結構體名 數組名[元素個數]={ {},{},{}... };
struct Student{
string name;
int age;
}
int main(){
Student arr[3] = {
{"Jam",18},
{"Lucy",18},
{"Lily",18},
};
//給結構體中的數組賦值
arr[0].name = "王五";
arr[0].age = 20;
return 0;
}
結構體指針
利用操作符->可以通過結構體指針訪問結構體屬性。
struct Student{
string name;
int age;
}
int main(){
Student s = {"張三",19};
//通過指針指向結構體變量
Student * p = &s;
//通過指針訪問結構體變量中的數據
cout << p->name << p->age << endl;
結構體做函數參數
1,結構體做函數參數時用值傳遞,不會改變實參的實際值。
2,結構體做函數參數用指針傳遞,會改變實參的實際值。
結構體中的const使用場景
將函數的形參改爲指針,不會複製新的副本出來,可以減少內存空間。
可是這樣做通常的業務是不能修改實際值的。
爲了避免誤操作,在形參之前加上const關鍵字可以避免。
void printStudent(const Student *s){
//在這裏如果修改了s->age會報錯!
s->age = 18;
}