結構體格式:
struct 結構體名稱
;// 結構體是一種集合,它裡面包含了多個變數或陣列,資料型別可以相同也可以不相同。eg可以包含乙個人的身高(double) 體重 (int)顏值(char ii[21])
結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體宣告的變數。 [1]
struct
tag variable-list ;
在一般情況下,tag、member-list、variable-list這3部分至少要出現2個
結構體的變數也可以在main函式中單獨定義。
eg: struct st- +名稱 一般這樣命名
struct st_people
;int main()
占用記憶體88
占用記憶體88
結構體變數名 不是結構體變數的位址。第乙個變數也不是首位址 ,變數名不能直接輸出 (沒有意義)取位址用&
void main()
對結構體中變數進行賦值 並顯示
struct st_people
;int main ( )
定義結構體陣列並賦值
struct st_people //定義乙個結構體
;int main ( )
四大美女之一西施 年齡18
四大美女之一貂蟬 年齡21
四大美女之一王昭君 年齡20
四大美女之一楊玉環 年齡22
通過賦值可以看出 結構體陣列中每乙個陣列元素都是乙個結構體;
在實際開發中,我們很少用結構體陣列,c++標準庫的vector容器可完全取代結構體陣列。
結構體指標
#include#includestruct st_b
; int main( )
名:琴師,年齡:22
姓名:琴師,年齡:22
姓名:琴師,年齡:22
結構體的複製
兩種方法,一種是把結構體變數成員的值逐個賦值給另乙個結構體變數的成員,還有一種方法是記憶體拷貝,c語言提供了memcpy(memory copy的簡寫)實現記憶體拷貝功能。
具體見** memcpy函式使用格式見**
#include#includestruct st_b
; int main ()
name=西施,age=18
結構體是多個變數集合,作為函式引數時就可以傳遞整個集合,也就是所有成員。但這樣會影響程式的執行效率。所以最好的辦法就是傳遞結構體變數的位址。類似傳遞變數的位址 (指標是變數的門牌號) 通過指標可以改變變數的值;
#include#includestruct st_b
;void setvalue(struct st_b *p);
int main ()
void setvalue(struct st_b *p)
bzero函式
bzero函式是用於記憶體空間清零。
包含在標頭檔案中。
bzero(&a,sizeof(a)); 或者 bzero(&a,sizeof(struct st_b));
等同於 memset(&a,0,sizeof(struct st_b));
memset函式 比bzero函式功能多
memset 函式是記憶體空間賦值函式,用來給某一塊記憶體空間進行賦值的。
格式:memset(&a,0,sizeof(struct st_b));
用於字串時
char ii[21];
memsrt(ii,0,sizeof(ii)); //初始化
C語言學習 結構體
include include include 宣告結構體 struct student student結構體名 int age char int main 初始化結構體變數 bbbb strcpy s1.name,bbbb s1.age 22 s1.m 列印結構體變數,逐個列印 printf s ...
C語言學習 結構體
題目要求 學生的記錄由學號 姓名 專業組成,根據班級人數,將學生記錄存放在結構體陣列中,由於部分同學轉專業,學生記錄發生了變化,請程式設計實現根據學號查詢查詢學生並修改專業,分別輸出轉專業和未轉專業的學生記錄。要求 班級人數 學生記錄均由鍵盤輸入 include define m 100 要求 1....
C語言學習八結構體
為什麼需要結構體,看 include struct student 定義乙個學生型別,裡面有age,score,然後可以定義這個型別的變數 int main void int age float score char int age2 float score2 char 2 return 0 定義結...