c語言二維陣列a與a與a有什麼區別

2021-03-06 12:27:33 字數 3369 閱讀 5508

1樓:匿名使用者

陣列在記憶體中是連續按行分布的,對於a[2][3]=,};它在記憶體中的分布式1,2,3,4,5,6;所以他等價於a[2][3]=;在c/c++中,陣列名也即是陣列首位址,這裡加入a=0x1000;那麼它的位址分就是也就取第乙個元素的位址,即1000,a[0]是第一行1000,1004,1008的首位址,也是1000,也即是a元素的首位址;

int *b=a[0];

*b和a[0]是等的,是a陣列第一行首位址;不同的是a[0]是唯讀的,*b是可讀寫的因為b是指標變數,你可以試試a[0][3],a[0][4],a[0][5]都能列印出來,別看a[2][3]以為這樣越界了,其實越不越界是按位址來算的,位址上講,&a[0][3]=a[1],所以完全沒問題;按照位址計算上面列印的值就是4,5,6;同理用*(b+3),*(b+4),*(b+5)也是一樣的道理;

a就是陣列的首位址,a[0]是第一行第乙個元素的首位址,也即是a的首位址,&a[0]是第一行的首位址,從數值上將,沒問題,只是資料型別上不一樣;

a[0][0]就是取第一行第乙個元素的值,也即是1

2樓:匿名使用者

a[0][0]是值,a[0]和a是位址

c語言中乙個二維陣列 它的陣列名是a 那a和*a有什麼區別?

3樓:匿名使用者

對於二維陣列名a和*a,二者的區別在於型別不同。

對於type a[m][n];

當使用a時,可以等同於二級指標type **型。

而使用*a時,等同於type*型。

從概念上說,a表示二維陣列a的首位址,而*a表示二維陣列a第一行a[0]的首位址。這樣在使用的時候就有所區別。比如 對a的操作a[4]表示a的第四行首位址,而對*a的操作(*a)[4]則代表第一行的第4個元素,即a[0][4]。

所以a和*a除了值相同外,其它的各方面都是不同的。

4樓:匿名使用者

資料名可以看作指標常量,分配陣列空間時指標值就確定下來了,不像宣告的指標變數那樣,值是不能改變的。*a=a[0],對於二維陣列a[0]也是乙個指標,他們都指向陣列的首位址,值都相等,但是,a和a[0]雖然值相等,但對他們進行指標運算時,位址偏移的基礎不同。

5樓:匿名使用者

其實不大 *a就是a[0]都是第一行的位址

6樓:匿名使用者

有無指標指向的區別。

7樓:匿名使用者

a是這個二維資料首位址,*a是第乙個元素值。

c語言中二維陣列中&a[0][0]=a[0][0]嗎

8樓:文化廚子

不相等。

&a[0][0]是取第乙個元素的位址。

a[0][0]是取第乙個元素的內容。

你把a[0][0]看成乙個。比如a

&a 肯定不等於a,型別不一樣的。

9樓:匿名使用者

肯定不等啊。前面是二維陣列的首位址,後面是乙個具體的值。沒辦法相等的....

c語言,定義二維陣列a[i][j] 那麼a[0][0]和a[0]有什麼區別啊

10樓:一方行走

a[0][0]是首元素成員,a[0]是首位址,跟a一樣的值,a[1]是第二維首位址

11樓:逍遙一仔仔

當然有區別

a[0]是陣列,a[0][0]才是取得第乙個陣列裡第乙個元素。

比如a = ,};

a[0][0] = 1;a[0] =;

c語言大神進 c語言中,例如乙個二維陣列a[3][4],則a與a[0]代表的意思一樣嗎?a

12樓:匿名使用者

char *p是一維的, str是2維的,p=str,二者不匹配。str[0]是一維的,與p同型別。

a與a[0]只是在使用a的首位址這個值時意義才一樣。

a是位址,*a是取a這個位址中儲存的乙個byte.[看數值型別,如果是整數,則是取整數]

13樓:匿名使用者

題主還是不理解指標。

char str[10]=,*p;

這個定義裡str相當於乙個二維指標,而p是一維指標。

二維陣列在記憶體中按行儲存,所以可以說整個二維陣列包含兩個一維陣列,也就是兩行,第0行是「ok」,第一行是「good」。 "ok"和"good"的首位址分別為(一維指標)str[0]和str[1],str[0]只是指向二維陣列第一行的(一維)指標,而str是指向整個二維陣列的(二維)指標,所以,p和str[0]都是一維字元型指標,賦值是沒問題的,但是p=str;是不對的。

c語言二維陣列,這裡為什麼a[0][0]的值是1,不是0嗎?

14樓:網海1書生

a[2][3]=,}

相當於a[0][0] = 1;

a[0][1] = 0;

a[0][2] = 0;

a[1][0] = 4;

a[1][1] = 5;

a[1][2] = 0;

為什麼c語言裡面二維陣列a[][],a,a[0],*a,*(a 0)值相等

15樓:匿名使用者

沒學過c,我猜一下,你定義了乙個二位陣列後,就會有乙個指標指二維陣列的首位址,上面的各種表達樣式都是說明的這個指標,而沒有改變這個指標的指向,所以值是相同的

c語言陣列中*a為什麼和a【0】相等

16樓:匿名使用者

因為陣列的首位址也就是陣列名,你的陣列名為a,則 * 意思是取內容,*a就是 a位址的內容

a位址又因為是首位址和a[0]一樣,所以可以說*a=a[0]

望樓主採納

17樓:春雨

首先a是乙個位址,來它指自向的是陣列的首位址。*a可以運算元組中的所有元素。舉個例子,假如b[5]=,指標a指向b陣列,a就是b[0](也就是5)的位址,而*a就是b[0],也就是等於5.

不知道我解釋清楚了沒有。

18樓:俺是男銀

因為他們確實相等,a就代表這個陣列的首元素啊。

19樓:平頭m小市民

這裡的a既是陣列a的名字,又是陣列a的首位址,a[0]表示陣列a的首元素,*a表示位址a所指向的元素,也就是a[0]

20樓:牛刀小試

可能是定義的是指向指標的指標(**a),所以*a表示的是乙個位址,而不知元素的值

C語言指標與二維陣列求解,c語言中二維陣列的指標如何表示

假設a是乙個二維陣列,則一 a是第乙個一維陣列名,陣列名 就是該陣列的 首位址!二 a 0 和 a都表示這個一維陣列第乙個元素的內容 這句話有問題,應該是 都表示這個 二維陣列 第乙個元素的內容!三 a和a好像不等價啊?關於陣列名和 陣列名書上有明確的介紹與說明 a a a 0 a 0 這是規定!細...

c語言 二維陣列指標中的和,C語言 二維陣列指標中的 和

要回答你的這個問題,不妨先根據你的問題先編寫一段小的示例程式 include include using namespace std int a 3 4 int main 這段示例程式在我本地上執行的結果為 a i 0 4214816 a i 4214816 a i 4214816 a i 0 42...

c語言 已知二維陣列a,問a i與a是不是都指向陣列第i行(含零行)元素

不對。應該這樣,a i 和a i 的值是相等的,他們的值都是 a i 0 即a i 0 的位址 不是的這個和二維陣列的儲存方式有關係,正確的答案應該是 a i 和 a i 相當,但是不等於a i 0 因為二維陣列也是按照一維方式來儲存的,然後再講乙個乙個一維陣列組合成二維陣列,a i裡面存得是第i個...