本次記錄結構體,還請各位大佬批評指正!
結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別(整型、浮點型、字元型、布林型),即不同資料型別的集合所組成的乙個型別。
建立學生資料型別,然後通過學生資料型別建立具體的學生。通過結構體建立變數的方式有三種:
1、struct 結構體名 變數名;
2、struct 結構體命 變數名 = ;
3、定義結構體時順便建立變數;
需要注意的是:
(1)第
一、二種用的較多。
(2)定義時struct不可以省略,建立變數時可以省略。結構體變數利用操作符"."訪問內部成員。
#include#include #includeusing namespace std;
//學生結構體定義
struct student
s3; //第三種 定義結構體時順便建立變數
int main()
; cout << "姓名:" << s1.name << "年齡:" << s1.age << "分數:" << s1.score << endl;
//第三種 在學生結構體定義的時候已經建立了s3
s3.name = "王五";
s3.age = 20;
s3.score = 90;
cout << "姓名:" << s3.name << "年齡:" << s3.age << "分數:" << s3.score << endl;
system("pause");
return 0;
}
將自定義的結構體放入陣列中方便維護。
struct 結構體名 陣列名[元素個數]=,,… };
struct student arr[3] =
, ,
};//修改結構體陣列中的元素資訊
/*arr[1].name = "暗六";
arr[1].age = 28;
arr[1].score = 59;*/
for (int i = 0; i < 3; i++)
通過指標訪問結構體中的元素。
利用操作符 -> 可以結構體指標訪問結構體元素屬性。
struct student s = ;
struct student * p = &s; //struct可以省略
cout << "姓名:" << p->name << "年齡:" << p->age << "分數:" << p->score << endl;
結構體中的成員可以是另乙個結構體,用來解決一些實際問題。
例:每個老師輔導乙個學生,乙個老師的結構體中,記錄乙個學生的結構體。
#include#include #includeusing namespace std;
//學生結構體定義
struct student
;//教師結構體定義
struct teacher
;int main()
將結構體作為引數向函式中傳遞 如果不想修改主函式中的資料,用值傳遞,反之用位址傳遞。
#include#include #includeusing namespace std;
//學生結構體定義
struct student
;//列印學生資訊的函式
//1、值傳遞
void prints1(struct student s1)
//2、位址傳遞
void prints2(struct student * p)
int main()
用const來防止誤操作。
#include#include #includeusing namespace std;
//學生結構體定義
struct student
;//const使用場景
void prints3(const student * s3)//將函式中的形參改為指標,可以減少記憶體,而且不會幅值新的副本出來
int main()
; prints3(&s3);
system("pause");
return 0;
}
學校正在做畢設專案,每名老師帶領6個學生,總共3名老師,需求如下:
(1)設計學生和老師的結構體,其中在老師的結構體中,有老師姓名和乙個存放6名學生的陣列作為成員。
(2)學生的成員有姓名、考試分數,建立陣列存放3名老師,通過函式給每個老師及所帶的學生賦值。
(3)最重列印出老師資料以及所帶學生的資料。
#include#include #include#includeusing namespace std;
//學生結構體定義
struct student
;//教師結構體定義
struct teacher
;//給老師和學生資訊賦值
void allocatespace(struct teacher tarr, int len) }}
//列印
void print(struct teacher tarr, int len) }}
int main()
設計乙個英雄的結構體,包括成員姓名、年齡、性別;建立結構體陣列,陣列中存放5名英雄。並通過氣泡排序的演算法,將陣列中的英雄按照年齡進行公升序排序,列印最終排序後的結果。
#include#include #includeusing namespace std;
//英雄結構體定義
struct hero
;//氣泡排序 實現年齡公升序排列
void bubblesort(struct hero harr, int len)
} }}//列印排序後的陣列資訊
void print(struct hero harr, int len)
}int main(), ,
, ,};
int len = sizeof(harr) / sizeof(harr[0]);
//排序前結果
cout << "排序前結果為:" << endl;
for (int i = 0; i < len; i++)
bubblesort(harr, len);
//排序後結果
cout << "排序會後結果為:" << endl;
print(harr, len);
system("pause");
return 0;
}
C 自學筆記
本次記錄程式的記憶體分割槽模型,還請各位大佬批評指正!c 程式在執行時,將記憶體大方向劃分為4個區域 1 區 存放函式體的二進位制 有作業系統進行管理 寫的所有 放在該區域 2 全域性區 存放全域性變數和靜態變數以及常量 3 棧區 由編譯器自動分配釋放,存放函式的引數值,區域性變數 4 堆區 由程式...
C 自學筆記
本次記錄函式提高,還請各位大佬批評指正!在c 中,函式的形參列表中的形參是可以有預設值的。語法 返回值型別 函式名 引數 預設值 注意事項 1 如果某個位置有預設引數,那麼從這個位置之後,從左往右都必須有預設值。2 如果函式的宣告有預設引數,那麼函式的實現就不能有預設引數。宣告和實現只能有乙個有預設...
C 自學筆記
筆記整理自 菜鳥c 教程 物件導向,區分大小寫 寫法 include 或include stdio.h iostream.h iostream的區別 static 區域性變數,檔案內全域性變數 extern 所有檔案可見變數 thread local 執行緒內變數 值 i j,實參i,形參j,i賦值...