int a 4那麼a,aa分別代表什麼

時間 2021-09-11 22:33:37

1樓:佘翰藻

a是一個二維陣列,相當於一個二維指標,即int **a;

那麼a就是代表整個陣列的首地址,

而*a就是代表這個陣列第一行的首地址,

**a就是代表這個陣列的第一個元素

這裡a *a的列印出來的地址值是相同的,因為他們整個陣列的首地址就是第一行元素的首地址

2樓:匿名使用者

**a 指的是 a[0][0] 的值,也就是說陣列第一個元素的值

*a : a[3][4] 可以看成 3個 空間為 4的小陣列,*a, *(a+1), *(a+2) 可以分別代表 這三個小陣列的地址,也可以看做三個小陣列首元素的地址,也就是說 *a 代表 a[0][0]的地址

a :自然可以理解成a[0][0]的地址的地址

3樓:金色潛鳥

宣告 int a[3][4];

那麼語句中 a,*a,**a分別代表什麼呢?

a 代表 陣列的首地址。

*a 代表 &a[0][0] 的地址。

**a 代表 a[0][0] 的 值。

----------

c 語言 語句中 方括號 不是標點符號,而是 運算子!

關於 方括號 的 恆等式:

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

我們把 j=0,i=0 代入 就可看出 **a 代表 a[0][0] 的 值。

a[0][0] 的 地址 是 &a[0][0] 或 &( **a) , 一個&和一個* 運算可以抵消, &( **a) = *a

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

a 是首地址,易理解,從略。

------------------------------#include

int main();

printf("%d %d\n", **a , a[0][0]);

}對比列印結果,你會加對 **a, *a 的 理解。

求問c語言大神: int a[3][4] 那麼a,*a,&a是什麼型別?有什麼區別?

4樓:it圈新鮮事

a是指陣列的首地址,是個地址值;

*a是陣列第一個位置的元素值,是陣列中的數值;

&a不能用於取陣列的地址,本身a就是地址了,不能再次取地址,否則得到的值是錯誤的。但是可以取變數的地址。

5樓:匿名使用者

二維陣列陣列名為陣列指標.

所以a型別為 int (*)[4]

*a就是a[0], 型別為int, 等效於const int *&a是二維陣列指標. 型別為 int (*)[3][4];

6樓:自我程式設計

陣列bai

元素地址是連續的

dua是表示二維陣列的zhi首地址,其值相dao當於專 &a[0][0] 本身是常量指標 不能改變屬其值。

*a是行的首地址 也就是&a[0] 如果你把(*a)+1 那麼值就是 &a[1]

&a值和a一樣,但意義不同,

a表示陣列首地址,a+1就變成第二個元素地址(int 每個元素地址相隔4)

&a表示整個陣列,&a+1就直接跳過整個陣列的記憶體地址空間(相當於跳過了 4*元素個數的地址)

你可以用sizeof(a) 和sizeof(&a) 檢視記憶體大小就知道了

若有定義:int a[3][4],(*p)[4]=a;要引用a[2][3]用(c)

7樓:匿名使用者

我倒,你這個是選擇題,對吧!看了三遍才看懂題意.

解:int a[3][4]; 定意一個二維陣列(*p)[4]=a;這裡就是定義p為指向包含4個元素的一維陣列的指標變數,那麼,你試想一下,二維陣列在記憶體中存放的形式是怎麼樣的? a賦給(*p)[4], a就是a[0][0]的地址, a就是指向零行首列地址的,它的趨勢是指向行的,a+1就是指向一行首列的地址,a+2就是指向2行首列的地址,那麼*(a+2)它也是指向2行零列的地址, 它的趨勢是指向列的,那麼*(a+2)+0與*(a+2)是指向同一個地址,*(a+2)+1就是指向2行1列的地址,*(a+2)+3就是指向2行3列的地址,*(*(a+2)+3)就是a[2][3]

*(p+2)是不是指向二行首行的地址呢? *(p+2)+3是不是指向二行三列的地址呢? 那麼*(*(p+2)+3)就是a[2][3]

8樓:

p是一個指標陣列, 開始時,p指向a[2][4]的首地址(或者a[0][4]的地址),p+1時,指標前移一個單位(即前移一個a[4]大小的位元組),也就是移到a[1][4]的首地址,同理,p+2時,它移到a[2][4]的首址,因為要引用a[2][3]的值,所以取指標值*(p+2),此時*(p+2)是一個一維陣列,即是a[2][0]行標的那行(把二維陣列看成是個矩陳吧,所以是取a[2]這行),

所以直接(*(p+2))[3]就是a[2][3]的值了,換成指標模式就是*(*(p+2)+3)

不知樓主可看得明白,發覺這個問題文字表達自己表達不出自己想說的!

int a0 a a此時a值為多少?如何計算的

a a 分解a a a 此時a為0,由於a 為先執行運算後自加,所以此時的表示式可以看成是a 0 0,這時又涉及到運算子優先順序問題,號為最低等級,所以先執行了a 但是這個a 並不會影響最後的結果了,因為上面的表示式已經出來了,最終a又會被賦值成0 0的結果,所以還是0 a a 未定義的。就是說標準...

若有定義 int a則表示式a a的值為9請高手說明下這個過程

倒黴熊 二維陣列是按行儲存的也就是如下這樣 a 0 0 a 0 1 a 0 2 a 0 3 a 1 0 a 1 1 a 1 2 a 1 3 a 2 0 a 2 1 a 2 2 a 2 3 而a表示的就是a 0 0 所在的地址。所以 a 2 1 a的值為9。 陽光上的橋 請你在草稿紙上畫一個三行 四列...

若已知P(B A)1,那麼下列命題中正確的是A)A屬於B

念憶 題幹是概率問題,必得不出事件相關的結論,這個記住就行,abc都是事件相關的結論,可以一眼就選d。亞里士多德以後的邏輯學家,如泰奧弗拉斯多 麥加拉學派和斯多阿學派的邏輯學家,以及中世紀的邏輯學家等,又對包含有命題聯結詞 或者 並且 如果,則 等的複合命題進行了不斷的 從而豐富了邏輯學關於命題的學...