C 問題,關於將陣列地址賦給指標的問題

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

1樓:匿名使用者

int (*pointer)[3] = &arr;

2樓:匿名使用者

arr本身就是指標,p也是指標,如果希望用p指向陣列arr,只需p = arr即可。

3樓:匿名使用者

arr本身已經是指標型別,p=arr是可以的。

4樓:白羊打醬油

&的意思是取地址,而*的意思是從地址中取值。

比如說&arr[0]就是將值arr[0]的地址取出賦給指標p,而陣列名arr本身就是記憶體地址,就不存在&arr的概念了

5樓:匿名使用者

不能把,arr就是代表的地址值,怎麼能把一個地址值在取地址呢,

arr[0]其實等價於*(arr+0)是(arr+0)地址處的值,在取地址&(*(arr+0))可以賦給p

如若答非所問,請忽略

6樓:

夥計:用printf("%p %p\n",arr,&arr);看看結果,它們是同一個地址,說明它們作為指標時「值」是同一個。但arr是陣列arr的首元素地址,也就是&arr[0];而&arr是陣列arr的首地址,而不是「首元素」地址;它們的「值」一樣,但「性質」不一樣。

如果有那麼p+1指向「下一個元素」,即arr[1],而q+1指向了下一個陣列,即a[3]的位置(假設有的話)。你可以

int arr[3] = ,*p=arr,*q=&arr;

printf("%p,%p\n%p,%p\n",p,q,p+1,q+1);

看看結果就一目瞭然了……

7樓:匿名使用者

賦值運算子的左右兩邊型別必須統一,如果右邊&arr為int*[3]型別,左邊也必須為一個同一型別的指標。因此

int (*q)[3];

q=&arr;

8樓:絲琪

定義一個指標 int **p 這樣就行了

9樓:

int **p = &arr ;

10樓:

arr是值,怎麼賦值給地址啊?

11樓:

int *p;

p =(int*)&arr;

關於c語言 把陣列名賦予指標的問題。

12樓:

就是指向一個地址。陣列第一個元素的地址就是陣列地址。

13樓:gta小雞

你的理解從本質來

上就有問題自

int *p1=a不能通過編譯,因為a是二維陣列指標,型別是int (*)[3],無法轉換到int*型。必須用int (*p1)[3]=a或者int *p1=a[0]才可以。同理int p2=a[0]無法通過編譯,因為a[0]是一個int指標而不是一個int元素,必須用int *p2=a[0]才可以。

a代表二維陣列,它指向的是一維陣列a[0]的地址,該地址恰好和a[0][0]的地址相等,但型別上有著本質區別,a是一個是int*陣列的指標而a[0]是一個int*元素的指標。a[0]代表的是二維陣列a的第一行,是一個一維陣列,指標a[0]是int*型,它指向該一維陣列的首元,即a[0][0]的地址。

c語言問題,陣列與指標,C語言陣列和指標的問題

char a computer a指向一個常量字串,常量字串是不能修改的,而你的for迴圈內要修改a指向的這個常量字串,自然要出錯 char a computer 這個a就是個普通陣列了,它的內容是可以改動的,就不會出錯了 因為 a是個指標啊 所以應該賦值賦地址!所以 應該 char a compu...

C語言中陣列指標關於p a,p a等問題

賽佑平信鵑 問題1 你這種理解是對的 比如陣列int b 2 2 對於int p b 0 那麼p指向的資料就是 同理,p b 1 p指向 問題2 在32位系統中,確實a 和 a傳遞的值都是陣列的首地址 4bytes 但是有個傳遞給什麼型別資料的問題,如果是傳遞給簡單的指標如int p 那麼這兩種形式...

C語言中關於指標和陣列命名處的問題

空雪夢見 前者出錯的原因就和 int a 10 a 1 是一個道理。一個是可以往裡面存指標的陣列,一個是指向陣列的一個指標。後者,char month 是宣告 指向陣列的一個指標 的語法這種語法必須指定陣列的大小才能宣告。char month 是宣告 一個可以存指標的陣列 的語法,後面就適用 初始化...