如何用指針數(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]。
其實(shí)這兩個的含義一樣,都表示第一行第一個元素的地址,既然是元素的地址,那肯定就是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ù)組,因?yàn)橹挥幸粋€中括號,但是數(shù)組有幾個元素不詳,每個元素都是整數(shù)。
那數(shù)組a中有沒有一維數(shù)組數(shù)組呢?
當(dāng)然有的,我們剛接觸二維數(shù)組的時候,老師就跟我們說過,二維數(shù)組就是由多個一維數(shù)組組成,第一行是個一維數(shù)組,第二行也是一個一維數(shù)組。

那我們只要把第一行的地址賦值給q就行。
于是可以把q初始化成:
int(*q)[] = a;a表示數(shù)組第一行的地址,所以q后面的中括號也能順理成章的寫成4,因?yàn)橐痪S數(shù)組有4個元素。
int (*q)[4] = a;q的含義和a是一樣的,表示數(shù)組第一行的地址,q加一,就指向數(shù)組的下一行。

這個就是C語言里面的指針數(shù)組和數(shù)組指針,怎么樣,迷糊了沒?
審核編輯:劉清
-
C語言
+關(guān)注
關(guān)注
180文章
7630瀏覽量
140235
原文標(biāo)題:分別用指針數(shù)組和數(shù)組指針表示二維數(shù)組
文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
C語言指針和數(shù)組的錯誤用法
C語言中指針數(shù)組和數(shù)組指針的區(qū)別
問一個二維數(shù)組和指針的問題?
C語言入門教學(xué)之數(shù)組資料總結(jié)免費(fèi)下載

C語言程序設(shè)計教程之二維數(shù)組如何應(yīng)用二維數(shù)組的資料概述
二維數(shù)組的指針指向錯誤應(yīng)該如何糾正

評論