結構體定義的格式如下:
struct 結構體型別名;
例如,我用乙個結構體儲存學生的資訊:
struct studentt;
欄位名可以和程式中的變數名相同,不同結構體內的欄位名也可以相同。
結構體的成員型別可以是任意型別,可以是整型,浮點型,陣列,也可以是其他的結構體型別(不能是自己,但可以是指向自己這一結構體型別的指標),如:
struct datet;
struct studentt;
結構體型別的變數定義方式與普通的內建型別的變數的定義完全相同。如我們定義乙個 studentt 型別的變數 student1 和陣列 studentarray :
studentt student1,studentarray[10];
//或者在定義結構體型別的時候初始化:
struct studentt student1,studentarray[10];
當然也可以初始化:
studentt student1=;//該變數裡儲存了鈴蘭的學號,名字,三門科的成績
studentt studentarray[10]=,,......}; //該變數陣列存了10名同學的....(省略)
初始化後陣列的狀態可以這麼理解:
序號學號(no)
名字(name)
語文(chinese)
數學(math)
英語(english)
0(studentarray[0])
00001
博士150
150150
1(studentarray[1])
00002
史爾特爾
100100
100... (studentarray[...])
就是花名冊嘛,,,
當然我們都想給鈴蘭小姐慶祝生日,但生日是結構體型別變數中的結構體型別變數,如何初始化?這樣子:
studentt student1=};//再內建乙個大括號,如有需要可以繼續套娃
不同的結構體型別變數無法進行整體操作,只能用運算子'.'和成員的名稱把這個結構體 」開啟「:
student1.chinese; //鈴蘭小姐的語文成績
cout《輸入同理。
相同型別的結構體變數可以互相賦值,例如對於 studentarray 的元素,可以用 studentarray[0] = studentarray[5] ,賦值,其意義是把 studentarray[5] 的所有成員的值全部對應賦給 studentarray[0] 。
結構體同樣也可以通過指標訪問,也可以申請動態變數或陣列
studentt student1,*sp=&student1;
studentt sp1=new studentt;
studentt sp2=new studentarray[10];
不過使用的時候要用括號:
(*sp).chinese;
否則編譯器會認為sp。chinese是乙個指標。陣列則無所謂。
不過這樣子加括號過於麻煩,c++提出了乙個更加簡潔明瞭的運算子->,用法如下
指標變數名->成員名;
先介紹一下,以下方式都可以:
struct pointt;
void f1(pointt d);
void f2(const pointt &d); //傳引用,且不能通過引用改變a成員的值
void f3(pointt *p); //傳給指標
int main()
當然也可以把乙個成員的值傳給函式,這就和一般變數的傳遞一樣了。
如何寫sort的cmp函式?
struct nodearr[100];
bool cmp(node arr1,node arr2)
//現根據str1排序,若相等再根據str2排序。
這個是降序,把大於改為小於就變成公升序了。 c 結構體轉為string c 結構體學習
宣告及使用 include int main struct user printf user size is lu sizeof struct user user size is 8 struct stu jack printf jack size is lu sizeof jack jack si...
C 結構體的學習
結構體是自定義型別的一種,是cpp提供擴充套件自定義型別的一種方式。結構體的宣告方式有2種 第一種是 struct user type variables variables可有可無第二種是 type struct user type include include include using na...
C 結構體學習總結
我們在某些場景下,需要用不同的變數來描述同乙個東西,此時用單一的char,int 等型別來修飾變數是不夠的,於是我們便需要結構體的存在。什麼是結構體呢?乙個結構體是許多值的集合,這些值就是結構體的成員變數,而這些變數可以是不同的型別。0.結構體的定義 例如我們現在要描述乙個學生 struct stu...