結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別
語法:struct 結構體名 ;
通過結構體建立變數的方式有三種:
示例:
//結構體定義
struct student
stu3; //結構體變數建立方式3
int main() ;
cout << "姓名:" << stu2.name << " 年齡:" << stu2.age << " 分數:" << stu2.score << endl;
stu3.name = "王五";
stu3.age = 18;
stu3.score = 80;
cout << "姓名:" << stu3.name << " 年齡:" << stu3.age << " 分數:" << stu3.score << endl;
system("pause");
return 0;
}
總結1:定義結構體時的關鍵字是struct,不可省略
總結2:建立結構體變數時,關鍵字struct可以省略
總結3:結構體變數利用操作符 『』.』』 訪問成員**作用:**將自定義的結構體放入到陣列中方便維護
語法:struct 結構體名 陣列名[元素個數] = , {} , ... {} }
示例:
//結構體定義
struct student
int main() ,
, }; for (int i = 0; i < 3; i++)
system("pause");
return 0;
}
**作用:**通過指標訪問結構體中的成員
示例:
//結構體定義
struct student
;int main() ;
struct student * p = &stu;
p->score = 80; //指標通過 -> 操作符可以訪問成員
cout << "姓名:" << p->name << " 年齡:" << p->age << " 分數:" << p->score << endl;
system("pause");
return 0;
}
總結:結構體指標可以通過 -> 操作符 來訪問結構體中的成員作用:結構體中的成員可以是另乙個結構體
**例如:**每個老師輔導乙個學員,乙個老師的結構體中,記錄乙個學生的結構體
示例:
//學生結構體定義
struct student
;//教師結構體定義
**總結:**在結構體中可以定義另乙個結構體作為成員,用來解決實際問題
**作用:**將結構體作為引數向函式中傳遞
傳遞方式有兩種:
示例:
//學生結構體定義
struct student
;//值傳遞
void printstudent(student stu )
//位址傳遞
void printstudent2(student *stu)
int main() ;
//值傳遞
printstudent(stu);
cout << "主函式中 姓名:" << stu.name << " 年齡: " << stu.age << " 分數:" << stu.score << endl;
cout << endl;
//位址傳遞
printstudent2(&stu);
cout << "主函式中 姓名:" << stu.name << " 年齡: " << stu.age << " 分數:" << stu.score << endl;
system("pause");
return 0;
}
**作用:**用const來防止誤操作
示例:
//學生結構體定義
struct student
;//const使用場景
void printstudent(const student *stu) //加const防止函式體中的誤操作
int main() ;
printstudent(&stu);
system("pause");
return 0;
}
8.8.1 案例1
案例描述:
學校正在做畢設專案,每名老師帶領5個學生,總共有3名老師,需求如下
設計學生和老師的結構體,其中在老師的結構體中,有老師姓名和乙個存放5名學生的陣列作為成員
學生的成員有姓名、考試分數,建立陣列存放3名老師,通過函式給每個老師及所帶的學生賦值
最終列印出老師資料以及老師所帶的學生資料。
示例:
struct student
;struct teacher
;void allocatespace(teacher tarray , int len) }}
void printteachers(teacher tarray, int len) }}
int main()
8.8.2 案例2
案例描述:
設計乙個英雄的結構體,包括成員姓名,年齡,性別;建立結構體陣列,陣列中存放5名英雄。
通過氣泡排序的演算法,將陣列中的英雄按照年齡進行公升序排序,最終列印排序後的結果。
五名英雄資訊如下:
,
, ,
, ,
示例:
//英雄結構體
struct hero
;//氣泡排序
void bubblesort(hero arr , int len)
} }}//列印陣列
void printheros(hero arr, int len)
}int main() ,
, ,
, ,
}; int len = sizeof(arr) / sizeof(hero); //獲取陣列元素個數
bubblesort(arr, len); //排序
printheros(arr, len); //列印
system("pause");
return 0;
}
C 基礎入門 08結構體
結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別 語法 struct 結構體名 通過結構體建立變數的方式有三種 示例 結構體定義 struct student stu3 結構體變數建立方式3 int main cout 姓名 stu2.name 年齡 stu2.age 分數 stu2....
C基礎 結構體
c語言,結構體語法 1.定義結構體型別 struct 結構體名稱 例 struct date int year int month int day 2.結構體在記憶體中 例一 struct student char name 指標佔8個位元組 int no int佔4個位元組 int age int...
c 基礎入門 8
檔案操作 ofstream ofs ofs.open test.txt ios out ofs 姓名 張三 close ifstream ifs ifs.open test.txt ios in if ifs.is open 第一種讀取方式 char buf 1024 初始化全為0 while if...