這節課的主要內容:
1,結構體型別的陣列。上一節課講述了結構體的定義、初始化、以及簡單的使用。2,指針對結構體的操作。
但是既然結構體是乙個重新定義出的資料型別,那麼他就也能夠像c語言中自帶的資料型別一樣(int、float等等),可以進行陣列、指標的操作。
如下:int資料型別定義的陣列:
#includevoid main(); printf("原始資料:\n"); for(int i=0;i<3;i++) printf("\n"); a[1] = 69; printf("修改之後的資料:\n"); for(i=0;i<3;i++) printf("\n");}
結果:
結構體型別的陣列:
#include #include // 先定義出結構體,並且給這個結構體起乙個別名為 stu。// 此時stu就與int同樣是乙個資料型別了,只是存放的資料不一樣而已。typedef struct studentstu;void main(),, } ; printf("原始資料:\n"); // 首先使用迴圈輸出一下每個stu型別的資料。 // stu[i]可以索引到陣列中的第i個結構體。 // stu[i].name可以索引到陣列中第i個結構體的name屬性。 for(int i=0;i<3;i++) printf("\n"); // 這裡是修改陣列中第2個結構體的資料。 // 使用stu[1]索引到陣列中的第2個結構體。 // 使用stu[1].name索引到陣列中的第2個結構體的name屬性。 strcpy(stu[1].name,"xiaojie"); stu[1].id = 007; stu[1].gender = 1; stu[1].age = 55; // 修改資料 printf("修改之後的資料:\n"); // 修改之後再次輸出一下。 for(i=0;i<3;i++)}
結果:
如果你之前的基礎還不錯,那麼從介紹完結構體的定義與使用方式之後。
接下來的一些陣列,指標操作結構體你都不應該感覺難的。
因為結構體就是定義了乙個新的類似於int的資料型別而已,所以還是參考之前的int這些熟悉的資料型別怎麼運算元組,指標即可啊。
同樣,這裡用實際例子給出操作,**一看就會很明了的。
程式:
#include #include // 結構體的定義,不用再贅述了typedef struct studentstu;// 相當於有乙個新的資料型別stu誕生了void main()
結果:
程式:
#include #include // 結構體的定義,不用再贅述了// 相當於有乙個新的資料型別stu誕生了typedef struct studentstu;void main() // 輸出一下 for(i=0;i<3;i++)}
重點來了:
為什麼 p+i 可以得到陣列中每個結構體的首位址呢?
陣列位址申請的時候記憶體中是這個樣子的,會以每乙個結構體的長度為基本單位,申請三個結構體的空間。
比如:乙個結構體佔據25位元組的資料,那麼定義三個結構體陣列的時候就會申請 25*3=75 位元組的資料。
指標指向結構體陣列首部的時候,指標是指向結構體陣列的第乙個元素。
如圖所示:結構體指標+1的時候,指標是以結構體大小為基本單位進行移動。
所以當指標p+1的時候,指標將指向p所指向的結構體 的 後乙個結構體的首部,而不是進入到p所指向的結構體的內部。
結構體的基本知識也就結束了,下一節講完檔案,c語言就算是結束了。
大家加油!!!
零基礎學C語言 指標
成也指標,敗也指標。對於 語言來說,指標是他的招牌,卻也是最令人望而生畏的。我會嘗試用很號理解的方式去闡述,希望你可以看的明白。其實指標就是乙個普通的變數,只是他存放的是乙個位址,他占用的空間是固定的,在32位系統上是4個位元組,在64位的系統上是8個位元組。include intmain char...
零基礎搞懂C語言指標
c語言中把專門存放變數位址的變數 指標變數 簡稱指標。什麼這樣說你不明白?位址記憶體單元 變數100020x 10021y 1004 115z 2000 1000 p其中變數x的記憶體單元的位址為1000,而變數p的值是變數x的記憶體單元的位址所以稱p為指標變數簡稱指標。前邊我們已經學過 變數的定義...
零基礎C語言學習
c語言學習筆記 三 一 分支和迴圈 分支語句 if switch 迴圈語句 while for do while c語言是一門結構化的程式語言 順序結構,選擇結構,迴圈結構 if語法結構,當判斷括號內容為真時,執行語句 1.if 表示式 語句 2.if 表示式 多分支語句 語句1 else 語句2 ...