(寫這篇部落格的目的是將今天的內容理解之後再用自己的理解捋一遍記錄下來,通篇所寫都是很基礎的東西,一方面是加強自己的記憶,另一方面方便以後進行回顧。)
先宣告:
struct 結構體名字(描述物件名)st,st1;//st和st1是定義
·--------------------------------·
也可以之後再定義,結尾處先不寫st,st1
之後用
struct 結構體名字 st,st1;
這裡定義乙個簡單的學生屬性的結構體:
#include
#include
struct studentst;
輸入、輸出:
strcpy
(st.name,
"xiaoming");
st.age=18;
st.score=59;
printf
("%s\n"
,st.name)
;printf
("%d\n"
,st.age)
;printf
("%d\n"
,st.score)
;
也可以用指標輸入、輸出:(結果是一樣的)
struct student *p=st;
//指標需要先指向st
strcpy
(p->name,"xiaoming)
;p->age=18;
p->score=59;
printf
("%s\n"
,p->name)
;printf
("%d\n"
,p->age)
;printf
("%d\n"
,p->score)
;
結果:
xiaoming
1859
功能:給乙個已存在的型別取乙個別名。(沒有建立乙個新型別)
使用方法:
typedef 型別 別名
例如:
typedef int h;
接下來想定義乙個int變數就用
h a=20;
ok
今天學習結構體,來取乙個這樣的別名
typedef
struct student stu;
上面的**中,struct student 是型別,結尾的stu是別名
此時構建之前相同的結構體只需要:
stu st;//之前struct student st;
還可以給陣列和函式指標取別名
typedef int array[5]; //此時array相當於int [5];
typedef int (*funp) (int ,int); //此時funp相當於int(*)(int,int);
這也是我今天遇到的一些小問題,在這裡捋一捋
先定義 乙個結構體陣列
#include
typedef
struct
stu;
stu st[3]
=,,}
;
構建乙個輸出函式
void
output
(stu st,
int len)
(用指標構建)
void
output
(stu *p,
int len)
主函式
int
main()
stu;
void
input1
(stu *st,
int len)
//因為構建的st型別是stu [3],所以這裡用stu *st(用指標)
}void
output1
(stu *st,
int len)
}int
main()
關於函式呼叫的時候,形參和實參要對應型別。
這裡的實參st實際上是乙個結構體陣列(之前是結構體),所以形參要用與之對應的指標型別。
另外要時刻注意型別,不論變數寫的多複雜,比如今天的st[i].age輸入的時候加&,st[i].name就不用加,因為陣列scanf輸入的時候不用加&,學了陣列之後總是在輸入一些變數的時候忘記加&,注意一下。
在上面程式的基礎上,再加乙個排序函式,比如根據三人的分數從小到大排序
void
soft
(stu st,
int len)
}}
這裡需要注意的點就是構建的中間變數,之前是int乙個數,因為這裡交換的是陣列中3個結構體的位置,所以應建立乙個中間結構體作為中間量,以便完成交換。
以上是今天學習了解到的內容。
一些結構體的運用例項
最近快要期末考試了,也沒什麼特別多時間去學習新的知識,只能好好複習一些學過的知識並加以運用。下面是一些例項 根據從易到難的順序排列 1.定義5個學生結構體型別 姓名 學號 三門課的成績 高數 英語 c語言 平均分 輸入該生的上述資訊並輸出。include typedef struct student...
簡單的結構體排序
在網上搜尋結構體排序很多都是使用氣泡排序來進行 學習了lambda表示式後,產生用這個來作為謂詞對結構體進行排序 很簡單的結構體排序,結構體只是很簡單的string型別 int型別 include include include include include include using names...
結構體的簡單總結
結構體與鍊錶 1 結構體的概念 a 陣列可以定義變數集合,所有的元素都只能有乙個型別 b 結構體也可以定義變數集合,任何成員都可以是不同型別 c 通常陣列內部變數叫做元素,結構體內部變數叫成員 d 使用結構體定義的變數也叫物件 2 定義結構體 注意結構體結尾處要有 struct 結構體名 型別識別符...