c語言裡雙層陣列裡a裡,a和a有什麼區別?是不是都是指該

2021-05-27 09:59:18 字數 4856 閱讀 5018

1樓:笑清風

&a[0]與a[0]與該陣列的首地址相同。

a[3][4]這個二維陣列表示的3行4列邏輯排列如下:

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[0]與a[0]的值是一樣的。

2樓:匿名使用者

a[0]指的是a[0][0]至a[0][3]的內容&a[0]指的是a[0]的首地址

一個是明確的某型別陣列

一個是地址

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][4],則a與a[0]代表的意思一樣嗎?a與*a呢?我在書上看它 5

5樓:阿

因為第一個例子是整數型別,每一個a[x][x]代表確切的值。a就是a[0][0],a[0]其實也是a[0][0],所以是相等的。

再說第二個例子:

定義個字串陣列,其中每個字串最多有10個字元(說道這裡應該明白為什麼是錯的了吧?),你定義的char *p只是一個單字元指標,卻企圖將str代表的整條字串的地址傳遞給p,這顯然是不正確的。個人容納不了組織,組織卻能容納個人,就是這個道理。

打好基礎,不著急,慢慢來。

6樓:匿名使用者

str 相當於指向指標的指標

p是指標

所以二者不同

7樓:匿名使用者

上一句初始化方式不對

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

8樓:匿名使用者

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

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

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

9樓:匿名使用者

題主還是不理解指標。

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[3][4]={{0,0,0,0}}和a[3][4]={0}是什麼意思?有何區別?請說詳細點。

10樓:匿名使用者

a[3][4]=} 表示定義一個3行4列陣列,並將開始的一行4個元素清零

a[3][4]= 表示定義一個3行4列陣列,並將所有元素清零

11樓:匿名使用者

沒有區別,只是寫法不同而已。都表示3行4列共12元素。{}裡德值是對陣列裡德元素一一賦值,數值不夠的就是0,0已省略。。應該能懂吧?

12樓:滄海雄風

前者把第一行4個全部初始化為0 第二第三行還是未初始化的隨機數字

後者全部初始化為0

在c語言中,二維陣列a[3][4]中,&(a+1)表示什麼?

13樓:景

表示第a[1]行的首元素地址

14樓:匿名使用者

a[3][0]的地址

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

15樓:it圈新鮮事

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

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

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

16樓:匿名使用者

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

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

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

17樓:自我程式設計

陣列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) 檢視記憶體大小就知道了

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

18樓:匿名使用者

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

19樓:匿名使用者

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

在c語言裡面,&a[0]++和&a[0]+1分別表示什麼意思?

20樓:

&a[0]++;是錯誤語句,編譯都不會過。因為++是後++,在執行該語句時是不計算的,所以a[0]++是個表示式而不是值,顯然用&取一個表示式的地址是非法操作!而如果是&++a[0];則是正確的,因為前++在執行&時已經計算過了:

就是先給a[0]+1,然後再取a[0]的地址。

&a[0]+1;是正確語句,因為&的優先順序比+高,所以是先取a[0]的地址再給這個地址+一個元素所佔位元組數——就是說&a[0]+1是a[1]的地址。

21樓:匿名使用者

&a[0]++表示程式執行時會對執行結果自加1

&a[0]+1表示程式執行時對結果加上1,如果改為2就會加上2

22樓:一輩子朋中

他們的結果一樣,都是a[0]的地址加一

23樓:百度使用者

a[0]表示陣列a 的第一個元素,

&a[0]是取a[0]在記憶體中的地址

&a[0]++是將a[0]在記憶體中的地址向前移動一個單位.

理論上&a[0]+1和&a[0]++的執行效果是差不多的

24樓:匿名使用者

不一樣!

++的優先順序比&高,&比+高!

所以&a[0]++是進行a[0]=a[0]+1之後,在取a[0]的地址

而&a[0]+1是先取a[0]的地址,然後將指向這個地址的指標(假設int *p;p=&a[0];)移動一個資料長度,即指向了a[1];

&a[0]++

就是&a[0]+1就是

25樓:匿名使用者

這要看你要說的是

一維陣列還是二維陣列了,如果是一維,答案同atchoo,要補充的是,向前移動的是陣列資料型別所佔的記憶體空間,比如是int,就移動2個單元;如果是二維,

a[0]表示第一行首地址,&a[0]表示第一行第一列首地址,&a[0]++就是把第一行第一列的元素加1.

26樓:匿名使用者

有人說a = a + 1;比a++;慢,但現在的編譯器結果是一樣的.

27樓:信培勝戊衣

編譯錯誤如下,都是取得陣列a的第二個元素的地址&a[0]++與&(a[0]++)等價:6,無法編譯通過,不能取得地址;

表示a[0]++不是一個左值:

non-lvalue

inunary

`&'.cpp:

main。

而&a[0]+1與a+1和&a[1]是等價的

c語言中的陣列裡的數字如何和字元聯絡起來

c語言中,字元型別char和整數型別在儲存資料的格式上是相同的,都是採用補碼存版儲資料。所不同的是,權char只有一個位元組,而int資料有四個位元組。一個位元組表示的有符號數範圍為 128 127,四位元組表示的有符號數範圍為 2 31 2 31 1.因此,若想定義一個陣列,既能儲存char型別,...

C語言程式設計,多種方法求陣列裡的最大值和最小值

因為只是找出最大最小值,直接迴圈每個比較一次就可以。include 挑選法 define n 10 void main int a n m,n,i for i 0 im n a 0 for i 1 ia i n a i printf 最大值 d,最小值 d n m,n include 排序法 def...

c語言裡和的區別,C語言中, 和 有什麼區別, 和 有什麼區別

表示 與 意思是條件必須同時成立 表示 或 意思是條件有一個成立即可.if a a b b c c b b c c a a c c a a b b 這個是判斷銳角三角形的條件,你只要學過數學就應該知道銳角三角形的成立條件是 任意兩邊長度的平方和大於第三邊長度的平方。所以要用 而不是 因為if a a...