什么是結(jié)構(gòu)體指針數(shù)組?
之前我們講過一些復(fù)雜的類型聲明,不過那些都是為了應(yīng)付筆試面試,在實(shí)際的應(yīng)用中并不常見。
結(jié)構(gòu)體指針數(shù)組也比較復(fù)雜,但是在項(xiàng)目中經(jīng)常能看到。
struct Test { int a; char ch; };
首先得有一個(gè)結(jié)構(gòu)體,假設(shè)結(jié)構(gòu)體有兩個(gè)成員,一個(gè)整型,一個(gè)字符,在內(nèi)存中占 8 個(gè)字節(jié)。
structTestt; struct Test *p = &t;
結(jié)構(gòu)體的地址我們一般取最前面的字節(jié)地址,如果想保存這個(gè)地址,就得用 struct Test * 類型的變量,這個(gè)變量就是結(jié)構(gòu)體指針。
通過結(jié)構(gòu)體指針訪問結(jié)構(gòu)體成員,使用這個(gè)符號(hào)。
如果我們創(chuàng)建了多個(gè)結(jié)構(gòu)體,那就會(huì)得到多個(gè)結(jié)構(gòu)體變量的地址。
struct Test t1; structTestt2; structTestt3; structTestt4; structTest*array[4]={&t1,&t2,&t3,&t4};
想要把這些地址全部保存下來,可以考慮使用數(shù)組,這樣的數(shù)組,就是結(jié)構(gòu)體指針數(shù)組。
其實(shí)也很好理解,數(shù)組里面保存了多個(gè)指針,每個(gè)指針都指向一個(gè)結(jié)構(gòu)體。
如果通過數(shù)組名去訪問某個(gè)結(jié)構(gòu)體的某個(gè)成員,先取出地址,再通過地址訪問。
學(xué)習(xí)指針,畫圖是個(gè)很好的方法,搞清楚了內(nèi)存的關(guān)系,再去寫代碼就會(huì)容易的多。
-
指針
+關(guān)注
關(guān)注
1文章
484瀏覽量
71186 -
數(shù)組
+關(guān)注
關(guān)注
1文章
420瀏覽量
26539 -
結(jié)構(gòu)體
+關(guān)注
關(guān)注
1文章
131瀏覽量
11113
原文標(biāo)題:結(jié)構(gòu)體指針數(shù)組
文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
C語言中指針數(shù)組和數(shù)組指針的區(qū)別
C語言里的鐵布衫——const
controlSUITE中例子代碼不理解
消息隊(duì)列傳遞結(jié)構(gòu)體指針和結(jié)構(gòu)體異同
單片機(jī)的結(jié)構(gòu)體和指針等資料說明

Keil使用結(jié)構(gòu)體數(shù)組的奇怪問題

FreeRTOS消息隊(duì)列 傳遞結(jié)構(gòu)體指針和結(jié)構(gòu)體異同

C程序設(shè)計(jì)基礎(chǔ)-數(shù)組與結(jié)構(gòu)體

C程序設(shè)計(jì)入門筆記之數(shù)組與結(jié)構(gòu)體

評(píng)論