c題目,假定a是二維陣列,則a

2021-03-04 06:42:26 字數 1659 閱讀 1820

1樓:匿名使用者

二維指標是指向指標的指標...

比方說int a[2][2];

那麼 a就是乙個指標,他的值指向a[0],即a[0]的記憶體位址.

a[0]也是乙個指標,所以a是乙個指向指標的指標.

a[0]的值指向a[0][0],即a[0][0]的位址.

如果將陣列用指標訪問的話:

a[i][j] = *(*(a+i)+j)同理,多維陣列的訪問:

a[i][j]...[z]=*(*(...*(a+i)+j)...+z)

c語言中二維陣列a[i][j],為什麼a=*a?

2樓:匿名使用者

在c語言中,二者是相同的位址值。所以可以說a=*a.

二維陣列a定義為a[i][j]時,代表一組資料,有i行j列,共計i*j的元素。

這組資料在記憶體中是連續存放的。而在c語言的使用中,a是二維陣列的首位址。*a也就是a[0],是二維陣列第一行的首位址。

所以,二者是相同的位址值,即資料a[0][0]的位址值。

也就是說,從值上,a,*a, a[0],&a[0][0]都是相同的值。

當時,說a=*a也並不是完全正確的,從型別上,a等同於二維指標,而*a等同於一維指標。二者型別並不相同,只是在一定條件下可以轉換。

3樓:匿名使用者

我理解問題中的這個=樓主是指相等,而且是數值上相等。這是肯定的。*a實際是*(a+0)+0,也即是a[0]+0這個位址,和a一樣,其數值也是這個二維陣列的首位址。

但是二者含義可不同,不能直接相互賦值。a是行指標,即a是乙個大小為i的陣列,其元素也是陣列,大小為j。*a由上面的解釋,其實質是個列指標,指向a的第乙個元素(大小為j的陣列)的第0個元素。

4樓:匿名使用者

#include "stdio.h"

main()

} 正確的寫法應該是上面這樣的。

這裡涉及到2個問題:

1.陣列宣告的時候a[9]就是有9個元素的陣列,a[10]就是有10和元素的陣列

2.陣列賦值的時候第乙個元素的下標是從0開始的,即a[0],最後乙個下標是宣告時的數字-1,如:宣告時:a[9],最後乙個元素是a[8]。a[9]是超範圍的。

5樓:

陣列名a表示二維陣列的首位址,*a就好比第一行的位址值a[0],a[0]表示&a[0][0]....

6樓:匿名使用者

二維陣列的指標比較特別,* 的作用是將行指標轉換成列指標,陣列名a是指向第一行的指標,*a則是指向第一行第一列的指標,根本含義上市不一樣的,但是值都是a【0】【0】的位址

請問c++中指標與二維陣列,下面圖中程式裡的 *(p+i*3+j) 是什麼意思啊? 謝謝 20

7樓:匿名使用者

這個利用的是二維陣列還是順序儲存的特點來直接計算a[i][j]的儲存位置

*(p+i*3+j)就是a[i][j],因為p是指向首元素的元素指標,a每行有3個元素,這樣a[i][j]按行優先儲存時,和a[0][0]差了這麼多個元素:i*3+j

a[0] 就是a[0][0]的位址

8樓:匿名使用者

*(p+i*3+j) 相當於 a[i][j]

c 二維陣列排序問題,C 二維陣列sort函式排序問題

include 寫的比較簡單,原理你應該都知道了,後面的,就是 開始做的那個沒刪 void main for i 0 i 12 i 冒泡 for j 0 j 12 j if a j 4 j 4 a j 1 4 j 1 4 看起來有點複雜,其實就是 12個數分成3行4列,對應的行數就是j 4,列數j ...

關於c語言二維陣列的問題,C語言中二維陣列的定義問題

a是乙個一維陣列,陣列裡的值是指標,指向的還是一維陣列。即等價於,int x 2 2,0 int y 2 4,8 int a 2 x,y 我想你應該知道答案了。c語言中二維陣列的定義問題 正確寫法如下 char fd jgf1 maxitemlen 1 說明 把null去掉 1.二維陣列的第乙個維度...

C語言二維陣列問題

a代表陣列的首位址,a 0 代表這個二維陣列第一行的首位址,雖然這兩個位址值是一樣的 int p a表示p是指向int型別的指標a是乙個二維陣列,其指標指向的是一維陣列,一維陣列才指向的是int,因此得用兩重指標表示 int p a int p 4 a 定義的是乙個有4個元素的int陣列的指標,而a...