如何用指針數(shù)組和數(shù)組指針來表示二維數(shù)組?
今天來給大家分享一道經(jīng)典的筆試題。
?
a是一個二維數(shù)組,3 行 4 列,一共 12 個元素。
p是個數(shù)組,數(shù)組里面元素個數(shù)不詳,每個元素都是整型指針。
那么它應(yīng)該如何初始化?
首先,既然是數(shù)組,初始化一定需要一個大括號,然后里面填上多個整型指針。
int*p[]={};那在二維數(shù)組中,能不能找到int *類型的數(shù)據(jù)?
肯定是有的。
在二維數(shù)組中,無非有這么幾種寫法:
a; a[0]; a[0][0]; &a; &a[0]; &a[0][0];數(shù)組名肯定不對,它是一個二級地址;
&a更不對,它是三級地址;
a[0][0]是個具體的元素,跟地址沒有關(guān)系。
?
剩下的就是a[0]和&a[0][0]。
其實這兩個的含義一樣,都表示第一行第一個元素的地址,既然是元素的地址,那肯定就是int *類型。
于是p的初始化就可以寫成:
int*p[] = {a[0], a[1], a[2]};分別是第一行、第二行、第三行首元素的地址。
而p后面的中括號也可以寫上3,表示數(shù)組有3個元素。
int *p[3] = {a[0], a[1], a[2]};內(nèi)存模型畫出來就是這樣的,數(shù)組p包含三個指針,每個指針都指針二維數(shù)組每行的第一個元素。
再來看q。
?
q是個指針,指向數(shù)組,而且是個一維數(shù)組,因為只有一個中括號,但是數(shù)組有幾個元素不詳,每個元素都是整數(shù)。
那數(shù)組a中有沒有一維數(shù)組數(shù)組呢?
當(dāng)然有的,我們剛接觸二維數(shù)組的時候,老師就跟我們說過,二維數(shù)組就是由多個一維數(shù)組組成,第一行是個一維數(shù)組,第二行也是一個一維數(shù)組。
?
那我們只要把第一行的地址賦值給q就行。
于是可以把q初始化成:
int(*q)[] = a;a表示數(shù)組第一行的地址,所以q后面的中括號也能順理成章的寫成4,因為一維數(shù)組有4個元素。
int (*q)[4] = a;q的含義和a是一樣的,表示數(shù)組第一行的地址,q加一,就指向數(shù)組的下一行。
?
這個就是C語言里面的指針數(shù)組和數(shù)組指針,怎么樣,迷糊了沒?
審核編輯:劉清
-
C語言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136842
原文標(biāo)題:分別用指針數(shù)組和數(shù)組指針表示二維數(shù)組
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論