C語言二維陣列問題

2022-08-02 06:45:20 字數 913 閱讀 6497

1樓:初春的花季

一維陣列,a表示的就是首元素的地址,*a就是首元素。

再看二維陣列,二維陣列如a[2][2];兩行兩列。是a[0][0],a[0][1],a[1][0],a[1][1],它不是一維陣列,但可以用一維陣列表示。

a+i=a[i]=*(a+i)=&a[i][0]這幾個值是相等的,但意義不同,

a+i表示第i行的首地址,指向行。

a[i]=*(a+i)=&a[i][0]表示第i行第0列元素。

(a+1)表示第1行地址,給第一行地址加2?加法結合律也能得出(a+1)+2=a+3;能對嗎

*(a+i)把行列都訂好了,就在第i行第0列,比較明確,再加就知道是增加列。

這塊還比較難點,都看看書,做做題

2樓:匿名使用者

a是指標,a + 1是指標與整數相加,結果還是指標,絕不是普通整數,這個1有講究,在32位cpu中,對於int型別資料,是1 * sizeof(int) = 4,這個4是位元組數,在二維陣列int a[2][3];中,這個1是

1 * 3 * sizeof(int),結果是12個位元組。

在你的問題中,有int a[2][3];,*(a + 1) + 1等同於&a[1][1],a + 1等同於&a[1][0]。在二維陣列中,一般用a[i][j]來存取陣列元素,用指標則為*(*(a + i) + j),這些內容需要慢慢來理解,大家都有這個過程。

3樓:匿名使用者

a是2維陣列,那麼可以把a看作一個指標,但是其指向的元素是一個一維陣列。

也就是說(a+1)指向了這個陣列的第二行。

*(a+1)這時候,仍然是個指標,只不過這個指標指向的元素是一個×型元素(假設a是int型的2維陣列,那麼這個指標指向的就是一個int型元素),所以*(a+1)+2的結果就是a[1][2]的地址

c語言二維陣列怎麼表示,C語言二維陣列定義是什麼,然後int a 1 2 是代表什麼意思?怎麼用這個二維陣列

int a m n 就表示一個m行n列的整型二維陣列在c語言中陣列的下標是從0開始的所以,內陣列a的元素個數可以表示為 容a 0 0 a m 1 n 1 例如 include int main return 0 執行結果 1 23 4 4 51 2 3 44 5 int a 3 2 定義的是陣列ba...

c語言中關於二維陣列指標

二維陣列其實在記憶體中等同於一維陣列,僅僅是在編譯階段就幫你轉換掉了。a 3 4 記憶體分配時等同於a 3 4 上面的 應該改寫成printf d p i 4 j p i j 這種寫法系統理解為先取 p i 取p i該位置的值,假設 i 2,那麼該值就是3,然後再去用3 j,假設j 1,那麼 p i...

c二維陣列的用處,C 二維陣列到底該如何定義?

1 除了列印矩陣外,還可以計算矩陣,比如相加,相減,轉置等。2 還有就是有兩種情況,一種是描述一個二維的事物。比如用1 表示牆,用0表示通路,我們可以用二維陣列來描述一個迷宮地圖 用1表示有通路,0表示沒有通路,我們可以用二維陣列來描述幾個城市之間的交通情況。還有一種是描述多個具有多項屬性的事物。比...