c語言中,二維陣列的aj和aj一樣嗎

2021-03-03 21:56:11 字數 4605 閱讀 3094

1樓:匿名使用者

void main()

bai;

int i=1,j=4;

if(a[i]+j==&(a[i][j]))printf("a[i]+j==&(a[i][j])\n");

else printf("a[i]+j!du=&(a[i][j])\n");

}這些問題自

zhi己上

dao機試一下內

就行容了

2樓:匿名使用者

一樣的 兩個都是代表 a[i][j]的位址

3樓:匿名使用者

a[i][j]的位址 因為&a[i]是a陣列的首位址是第一行第一列 再加j就是第一行第j列了

應該是這樣的 c預言是我3年前學的 都忘了

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

4樓:匿名使用者

在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等同於一維指標。二者型別並不相同,只是在一定條件下可以轉換。

5樓:匿名使用者

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

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

6樓:匿名使用者

#include "stdio.h"

main()

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

這裡涉及到2個問題:

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

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

7樓:

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

8樓:匿名使用者

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

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

9樓:一方行走

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

10樓:逍遙一仔仔

當然有區別

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

比如a = ,};

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

c語言的二維陣列中a[i]+j這個j為什麼表示的是位元組數?

11樓:匿名使用者

指標變數的增減是按位址進行的,a[i] + j應該表示的是a[i] + j*sizeof(....)。

12樓:金色潛鳥

如果有二bai維陣列

short int a[4][5];

那麼 a[i] 就不是du下標變數,而是位址:zhi&a[i][0]

所以 a[i]+j 是 a[i] 這個dao

單元所在地專 的 下面 的 第 j 個 元素的 位址

a[i]+j 等於屬加的這項東西 就是 j乘2 個 位元組。

老譚的書很老了。現在的 int 預設 是 4 位元組。

int a[4][5]; a[i]+j 是加的這項東西 就是 j乘4 個 位元組

char a[4][5]; a[i]+j 是加的這項東西 就是 j乘1 個 位元組

double a[4][5]; a[i]+j 是加的這項東西 就是 j乘8 個 位元組

c語言中二維陣列a[i][j]中,a+i=*(a+i)=a[i]=&a[i]是怎麼理解的.

13樓:理科女

a+i=*(a+i)=a[i]=&a[i]&a[i] 和a+i是獲取i行陣列的首位址a[i] 和*(a+i)是訪問第i行的陣列望採納!!

14樓:暴躁內酷

樓主 這幾個不是相等的 其中a+i和&a[i]都是表示的記憶體位址 而*(a+i)和a[i]是取值。

15樓:匿名使用者

首先,a表示位址,a+i 表示相對於位址a偏移 i 個單位的位址,即,a + i 也是位址

a[i]表示第幾行的位址

&a[i]表示對第i行的位址再取位址。

16樓:匿名使用者

&a[i] 和a+i是獲取i行陣列的首位址

c語言二維陣列中&a[ ][]+4*i+j是什麼意思

17樓:洛雨曦

如果是這 樣的&a[i][j]+4*i+j

取第i行第j列的位址,取出來之後用這樣值+4*i+j,其實還是位址

18樓:匿名使用者

由於不清楚陣列a的維數,暫時認為第二維維數大於4,那麼訪問的是二維陣列a中4*i+j的指標。

19樓:轉悠達人

&a可以看成是首位址!!

c語言中的二維陣列a[a][j]可以表述為*(*(a+1)+j),但是我看不懂這個東西啊 求解釋啊

20樓:匿名使用者

這個表述是有問題的,*(*(a+1)+j)沒有規定首位址,*(a+1)已經表示a+1位址中的資料了,明顯與陣列概念不合。

a[a][j]裡面陣列名稱和乙個維度的陣列的個數表示重疊了,所以我換一種方式來表示:a[y][x]。為了便於理解,假定y=3,x=2。

在陣列中的資料有y行,x列;也就是3行,2列。假定第一行資料為;第二行資料為;第三行的資料為,那麼陣列a在記憶體中的資料為從首位址開始的連續6個資料,。假定首位址為0x01,那麼a[0][0]的位址為0x01,對應資料「1」,該可以表示為((行數 + 0x01)+ 列數),該位址的資料可以表示為*((行數 + 0x01)+ 列數),這個表示形式,和題目中的比較接近。

以此類推,a[0][1]的位址為0x02,對應資料「2」;a[1][1]為第2行第2列,位址為0x04,對應資料0x04。

由此可以看出a[y][x]可以表示為*((x + &a) + y);&a為陣列a的首位址。

不知道這樣講您是否能夠理解。同時「c語言中的二維陣列a[a][j]可以表述為*(*(a+1)+j)」這個題設本身是錯誤的,不要被其誤導。

21樓:才那

不可以寫成a[a][j]

a+i是乙個陣列元素的位址,而*(a+i)是取該位址裡的資料,如果*(a+i)中儲存另乙個陣列的首位址的話,**(a+i)就能取到另乙個陣列裡的第乙個資料.

依次類推,取該陣列其他資料*(*(a+i)+j)就能取到第a[i][j]了

最簡單直觀理解為乙個陣列中的每個元素又儲存了其他陣列。

22樓:藍青霄

首先糾正乙個題裡的小錯誤,二維陣列應該是a[1][j];陣列元素的表示方法(以一維為例)a[i]等價於*(a+i),因為陣列名即為陣列的首位址,(a+i)即為陣列a的第i個元素的位址,*(a+i)就理所當然是a[i]了。再說二維陣列,二維陣列的陣列名可看為乙個指標的指標,*(a+1)就表示二維陣列的第二排陣列首位址a[1],然後這個位址加j即為a[1][j]的位址,*(*(a+1)+j)就是二維陣列a[1][j]了

23樓:油菜花零

*(a+1)表示a向下一行的位址,*(a+1)+j表示向下一行後再向右j列,*(*(a+1)+j)表示位址a向下一行後向右j列的記憶體位址的值。相當於a[1][j],不知道你說的a[a][j]是什麼

24樓:匿名使用者

這個是列指標吧

嗯。你就把二維陣列當做指標的指標這樣的話感覺起來就輕鬆多了

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

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

為什麼C語言中二維陣列的陣列名a和a表示的是同值

當定義二維陣列a m n 時,陣列名可以認為是二維指標,其指向二維陣列的首位址。於是a的值就是首位址的值。而 a,就是a 0 a 0 是第一行的標記,代表第一行的首位址。在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首位址,第一行的首位址,和第乙個元素的首位址,即a,a 0 a 0 0 都是相...

C語言中「二維陣列行指標」是什麼意思

陣列名就是乙個指標常量,它代表陣列元素在記憶體相關資訊。1 c語言 是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯 處理低階儲存器 產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。2 c語言的發明 20世紀60年代,美國at t公司貝爾實驗室 at t...