C語言,有二維陣列a表示的是哪些元素呢下午考試

2021-03-03 22:14:53 字數 4969 閱讀 7279

1樓:匿名使用者

不是表示那些元素,而是得到a[1][1]元素的地址,&是一個去地址的運算。

那是因為你輸出的是一個字串,開始的位置是a[1][1],字串的結束標誌是'\0',也就是以位元組0結束,而在記憶體中的放置順序已後面下標為準,連續放置,所以a[1][1]後面緊跟著a[1][2]。

2樓:成為程式設計師

第二行第二個數的地址

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

3樓:匿名使用者

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

4樓:貝蠡

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

在計算機c語言中,二維陣列,a[][3]={1,2,3,4,5,6,7,8,9};a[0][0]=?a[0][1]=?a[1][1]=?

5樓:匿名使用者

二維陣列,第一維項數可以不寫,由第二維項數推出。

本題,第二維項數為

3,共9個數字,則第一維項數為3

即:1 2 3 對應的a[0][0] a[0][1] a[0][2]

4 5 6 對應的a[1][0] a[1][1] a[1][2]7 8 9 對應的a[2][0] a[2][1] a[2][2]因此,a[0][0]=1

a[0][1]=2

a[1][1]=5

6樓:匿名使用者

二維陣列初始化時,可以採用上面這種方式,系統會根據總個數和第二位的長度算出第一位的長度。 上面陣列中總共有9個元素,每行有3個元素,可以確定行數是3,也就是a[3][3]。

另外陣列中的元素是按行存放的,先存第一行,再放第二行,依次存放。

還有就是陣列的下表是從0開始,如果有3個元素,就是a[0] a[1] a[2] 沒有a[3] 。

所以a[0][1]=2 也就是第一行第二的元素。a[0][0]=1 也就是第一個元素。

a[1][1]=5 也就是第二行第二個元素。

7樓:匿名使用者

二維陣列在記憶體中的排列順序是先行對映,後列對映,因此,你初始化的值排列如下:

1,2,3

4,5,6

7,8,9

直接查詢便可得

a[0][0]=1,a[0][1]=2,a[1][1]=5

c語言的陣列問題,若有定義:int a[2][3];以下選項中對a陣列元素正確引用的是 a.a[2][!1] b.a[2][3]

8樓:匿名使用者

選d。一個二維陣列可以被認為是一個帶有 x 行和 y 列的**。下面是一個二維陣列,包含 2 行和 3列:

因此,陣列中的每個元素是使用形式為 a[ i , j ] 的元素名稱來標識的,其中 a 是陣列名稱,i 和 j 是唯一標識 a 中每個元素的下標。i最大值為1,j最大值為2,超出此範圍則表示錯誤。

9樓:孤獨的蠍子

d 因為1>2為假,所以表示式為0 ; 其次!1也就是非真,即為假,所以a[1>2][!1]等價於a[0][0]

10樓:藍人

d,陣列的有效範圍是a[0][0] - a[1][2]

a,b,c都超過範圍了。

11樓:匿名使用者

定義的陣列引用時那個數下標減1

二維陣列中a[1]代表什麼

12樓:皇亙理智菱

在c語言中規定,陣列名代表的是陣列首元素地址。

如有定義int

a[10][100];

a表示二維陣列的陣列名。

a也是這個陣列的首地址。

因此,在二維陣列中*(a+i)表示的是第i+1行0列元素的地址,即a[i][0]的地址。而a+i表示的是第i+1行的首地址。

13樓:

//若定義,

int a[3][4];

//則a[1]表示a[1][0]的地址,即&a[[1][0]。

14樓:匿名使用者

是地址。比如說是字元型別a,可以看成是第二字串的第一個字元的地址,++a[1]表示第二字字元的地址。相當於一維陣列的a。

c語言中*(*(p+1)+2) 什麼意思?具體怎麼表示的? 20

15樓:一個青年

*(*(p+1)+2)為

二維陣列用指標表示的形式,相當於陣列元素num[1][2]

二維陣列本質上是以陣列作為陣列元素的陣列,即「陣列的陣列」,型別說明符 陣列名[常量表示式][常量表示式]。二維陣列又稱為矩陣,行列數相等的矩陣稱為方陣。

對稱矩陣a[i][j] = a[j][i],對角矩陣:n階方陣主對角線外都是零元素。

二維陣列a[m][n],這是一個m行,n列的二維陣列。設a[p][q]為a的第一個元素,即二維陣列的行下標從p到m+p,列下標從q到n+q,元素a[i][j]的地址計算方法如下:

按「行優先順序」儲存時,地址計算為:loc(a[i][j]) = loc(a[p][q]) + ((i − p) * n + (j − q)) * t

按「列優先順序」儲存時,地址計算為:loc(a[i][j]) = loc(a[p][q]) + ((j − q) * m + (i − p)) * t

存放該陣列至少需要的單元數為(m-p+1) * (n-q+1) * t 個位元組

擴充套件資料:

指向二維陣列的指標變數設二維陣列為a[m][n]

設有整型二維陣列a[3][4]如下:

1000 1001 1002 1003

1004 1005 1006 1007

1008 1009 1010 1011

設陣列a的首地址為1000,各下標變數的首地址及其值如上列出。

c語言允許把一個二維陣列分解為多個一維陣列來處理。因此陣列a可分解為三個一維陣列,即a[0],a[1],a[2]。每一個一維陣列又含有四個元素。

例如a[0]陣列,含有a[0][0],a[0][1],a[0][2],a[0][3]四個元素。

陣列及陣列元素的地址表示如下:a是二維陣列名,也是二維陣列0行的首地址,等於1000。a[0]是第一個一維陣列的陣列名和首地址,因此也為1000。

*(a+0)或*a是與a[0]等效的,它表示一維陣列a[0]0號元素的首地址。也為1000。&a[0][0]是二維陣列a的0行0列元素首地址,同樣是1000。

因此,a,a[0],*(a+0),*a,&a[0][0]是相等的。

同理,a+1是二維陣列1行的首地址,等於1004。a[1]是第二個一維陣列的陣列名和首地址,因此也為1004。&a[1][0]是二維陣列a的1行0列元素地址,也是1004。

因此a+1,a[1],*(a+1),&a[1][0]是等同的。由此可得出:a+i,a[i],*(a+i),&a[i][0]是等同的。

此外,&a[i]和a[i]也是等同的。因為在二維陣列中不能把&a[i]理解為元素a[i]的地址,不存在元素a[i]。

c語言規定,它是一種地址計算方法,表示陣列a第i行首地址。由此,我們得出:a[i],&a[i],*(a+i)和a+i也都是等同的。

另外,a[0]也可以看成是a[0]+0是一維陣列a[0]的0號元素的首地址,而a[0]+1則是a[0]的1號元素首地址,由此可得出a[i]+j則是一維陣列a[i]的j號元素首地址,它等於&a[i][j]。

由a[i]=*(a+i)得a[i]+j=*(a+i)+j,由於*(a+i)+j是二維陣列a的i行j列元素的首地址。該元素的值等於*(*(a+i)+j)。

16樓:匿名使用者

按優先順序一步一步的計算:

假設:int a[3]=, *p; p=a; 先定一個指標p指向a陣列首地址。

解析下含義:

最裡的的是*(p+1)表示,指向地址數值+1後內地址的值顯示出來是2,指標指向不變還是指向陣列首地址。也就是p+1是指向了a[1]的地址,p還是指向a[0]地址。可以安陣列計算表示為p[1].

更直接。

下一步(p[1]+2) 這個是是數值p[1]=2 的值 加上 2 = 4

.但是*(4)。也就是定義的地址為4上的值。 這種操作會報錯,所以假設不成立,p不是變數指標而是指標的指標

。重新假設int a[2][3]=,} **p; p=a; 同樣先定一個指標p指向a陣列首地址

**p: 是指標的指標;*p指向的是指標的地址。也就是a[0]的地址。a[0]對陣列a[2][3]也是指標。

同樣一步一步化解:*(p+1),也是指向地址下一個地址的值。因為p是指向二維陣列,下一個地址值,是a[1]的地址也就是第一排的首地址。同樣可以化成:p[1].

*(p[1]+2) ,就是把p[1]看成指標q,那同於*(q+2)便於理解。同樣花簡為q[2].指向第一排資料的第3個資料也就是,6.

因此*(*(p+1)+2)=p[1][2] 也就是陣列a中的6 ..

17樓:洛雨曦

舉例:int p[2][3];這是個二維陣列2行3列,而用指標形式*(*(p+1)+2)表示的是p[1][2]這個元素,即:*(p+1)指向的是第一行(p[1]),*(p+1)+2表示的是第一行第二列的地址,而*(*(p+1)+2)就是取第一行第二列的內容也就是p[1][2]這個元素

18樓:等待阿若

推薦你去c語言貼吧去提問,**有專業的人會告訴你真的,不適合在知道上問

19樓:匿名使用者

去查「指向指標的指標」

20樓:

以地址p+1的值,再加上2組成的地址裡面的值

好拗口啊,呵呵

c語言二維陣列怎麼表示,C語言二維陣列定義是什麼,然後int a 1 2 是代表什麼意思?怎麼用這個二維陣列

int a m n 就表示一個m行n列的整型二維陣列在c語言中陣列的下標是從0開始的所以,內陣列a的元素個數可以表示為 容a 0 0 a m 1 n 1 例如 include int main return 0 執行結果 1 23 4 4 51 2 3 44 5 int a 3 2 定義的是陣列ba...

C語言二維陣列問題

一維陣列,a表示的就是首元素的地址,a就是首元素。再看二維陣列,二維陣列如a 2 2 兩行兩列。是a 0 0 a 0 1 a 1 0 a 1 1 它不是一維陣列,但可以用一維陣列表示。a i a i a i a i 0 這幾個值是相等的,但意義不同,a i表示第i行的首地址,指向行。a i a i ...

c語言中關於二維陣列指標

二維陣列其實在記憶體中等同於一維陣列,僅僅是在編譯階段就幫你轉換掉了。a 3 4 記憶體分配時等同於a 3 4 上面的 應該改寫成printf d p i 4 j p i j 這種寫法系統理解為先取 p i 取p i該位置的值,假設 i 2,那麼該值就是3,然後再去用3 j,假設j 1,那麼 p i...