c語言學習結構體

2021-10-01 04:01:53 字數 2216 閱讀 3435

結構體格式:

struct 結構體名稱

;// 結構體是一種集合,它裡面包含了多個變數或陣列,資料型別可以相同也可以不相同。eg可以包含乙個人的身高(double) 體重 (int)顏值(char ii[21])

結構體的定義如下所示,struct為結構體關鍵字,tag為結構體的標誌,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體宣告的變數。 [1]

structtag  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 定義結...