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的首地址,而不是“首元素”地址;它們的“值”一樣,但“性質”不一樣。
如果有int arr[3] = ,*p=arr,*q=&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 中關於指標陣列的問題。
typedef 是 定義一種資料型別 就好像內建的資料型別如 int 它僅是乙個定義,不產生例項物件,即不分配任何記憶體,怎麼能給它賦值呢?對陣列賦初值的方法用for迴圈,在這裡還可用memset nod的記憶體分配在動態棧上,所以值不能確定,要初始化,必須使用顯式的方式。cdma980的回答是對的...
C語言指標位址輸出問題,關於C語言指標位址輸出問題
能夠輸出位址值!include main 這個程式就可以 注意變數名,前後要一致,不要用大寫!請將 p改為 p 將最後一行改為 printf x b 你會看得更真切!x 按十六進製制輸出 你把 與 兩個的功能搞錯了 乙個是取位址 乙個是指向 但不取。注意變數名區分大小寫,菜鳥。我沒看出來有什麼不對的...
關於c語言的指標問題指標的位址1問題
小p精神 我來給你寫個例子,你參考一下 int p,q,s int a 3 p a 將a的首位址賦值給p 那麼p指向的值應該是a 0 的值2 printf a 0 d p d n a 0 p q a 0 1 將a 0 的位址向右偏移一位就等於a 1 的位址 a 1 8那麼 q應該等於8 s q 1 ...