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

2021-04-21 10:02:08 字數 3189 閱讀 2354

1樓:網海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代表是0行首地址,那*a不就是首個元素嗎,為什麼*a代表的還是首個元素的地址

2樓:

哈哈!以下標從0開始說。若a是二維陣列名,則a作常指標使用時,a是第0行的指標,*a是第0行的第一個元素的指標(二者值同,意義不同),**a是第0行的第0個元素的值。

這可以用以下**驗證:

int main(void);

printf("%d\n",**(a+1));

return 0;

}輸出肯定是4。這說明,既然a是第0行的指標,那麼a+1就是第1行的指標,*(a+1)則是第1行第0個元素的指標,**(a+1)當然就是第1行第0個元素的值4了……

3樓:聽不清啊

c語言中二維陣列的a代表是a陣列的首地址(值與0行首地址同),所以*a不是首個元素,*a代表的是0行的首地址,**a才是對首個元素的引用。

4樓:雙子牛總

胃口幾幅畫雞骨頭氣溫會偷偷去hgew

c語言 二維陣列a【0】與a與a【0】【0】有什麼區別?

5樓:匿名使用者

陣列在記憶體中是連續按行分佈的,對於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

6樓:匿名使用者

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

c語言為什麼直接給二維陣列中的某個元素賦值不行,比如a[0][0]=1,a是整型陣列

7樓:

c語言規定,普通陣列沒有賦初值,預設的陣列元素值是隨機數,不是0。如果在定義陣列時,資料型別前面加上關鍵字static,陣列變成了靜態陣列;或者把陣列定義在函式的外面,成為全域性變數陣列,這時陣列元素的值自動賦值為0。

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

8樓:文化廚子

不相等。

&a[0][0]是取第一個元素的地址。

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

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

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

9樓:匿名使用者

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

c語言指標:一個二維陣列a[3][4],為什麼*a會表示&a[0][0]呢?不是【a表示&a[0]

10樓:匿名使用者

*a表示第0行第0列地址,a既是陣列名,也是第0行的首地址;a[0]表示第0行0列的地址,*是取物件,&是取地址,*a[0]才表示值

11樓:貝蠡

*a預設為第0行第0列地址

c語言指標:a為二維陣列,那a[0]是什麼型別?是指標還是陣列?

12樓:匿名使用者

a代表陣列的地址,也是陣列第0行元素的地址,是同一個值。

13樓:匿名使用者

a[0]固然是個指標,可以它是個二重指標啊,所以還有個指標存放這個指標地址

14樓:不是知道很多

a[0]是指標,

型別是int*。

a[0]是a[0][10]的首地址,a[0]=&a[0][0],a[0]每加

1移動一個int,a[0]+1=&a[0][1]a可以看內作a[3]的首地址,a=&a[0],a每加1移動10個int,a+1=&a[1],a的型別是容int(*p)[10],a是一個指標,指向含有10個元素的陣列

為什麼c語言二維陣列a[2][2], a和*a輸出是相同的,都表示一個地址

15樓:自我程式設計

二維陣列可以理解為幾個指向一維陣列的指標組成指標陣列。

所以從型別上講,a是指向指標的指標,*a是指向一行一維陣列的指標。

但a作為陣列名,又表示了陣列首地址(在記憶體中元素地址是連續的)。

*a是第一行陣列首地址。所以值相同

(注意只是值相同,比如a[n]和(*a)[n]意義就不一樣,一個表示第n行的行指標,一個是第一行的第n列)。

16樓:天神在此

a指的是這個二維陣列第一維陣列的首地址,即&a[0] (a+1就是&a[1])

*a指的是這個二維陣列的首地址,即&a[0][0] (*a+1就是&a[0][1])

**a指的是這個二維陣列第一維陣列的首地址指向的值,也就是a[0][0]的值,不是指標

a與*a的值是一樣的,因為&a[0]與&a[0][0]是一樣的以下是地址對應關係

a等於&a[0]等於&a[0][0]

a+1等於&a[1]等於&a[1][0]

*a等於&a[0][0]

(*a+1)等於&a[0][1]

*(a+1)等於&a[1][0]

[*(a+1)+1]等於&a[1][1]

c語言二維陣列與指標運算,C語言二維陣列與指標運算

在 p 4 中p是指向一個有4 個int元素的一維陣列的首地址,int p 4 a就相當於int p 4 p a 兩個語句,所以 p i 指向i行地址,p i c 指向i行c列的地址即a i c int p 4 a 表示指向一維陣列 4列 的指標,然後a 0 地址給了p,p i就表示a i 的地址....

C 函式呼叫二維陣列,C語言一維陣列轉二維陣列

n如果是變數的話,陣列編譯時都通不過吧。陣列分配時必須知道大小。函式應該這樣宣告function char array 10 10 或省略第一維的大小function char array 10 function char array n n 這樣是錯誤的,陣列的索引必須是個常量表示式。如果需要必須...

c語言中二維陣列下標問題,C語言中二維陣列下標問題

a可以理解為二重指標,a 0 理解指標,a 0 0 是對這個地址進行訪問了 其實回 的意義 可以理解成 a i 其實就相當於 a i 所以原答來的就相當於 a i j 的優先順序比 的高 所以外面那個括號可以去掉 就變成了 a i j 明白了嗎?這裡a指的是整個陣列,而a 0 指二維陣列第一行的元素...