C++結構體 概念 定義和使用 結構體數組 結構體指針 結構體做函數參數 結構體中的const使用場景

概念

結構體屬於用戶自定義的數據類型,允許用戶存儲不同的數據類型

定義和使用

語法: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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章