獲取指標陣列的位址有何問題?

2025-03-22 23:00:19 字數 1505 閱讀 7587

1樓:

#include

int main()

int*[2];

int b=10,c=20;

a[0]=&b;

a[1]=&c;

int** x = int***a; /這個賦值是把b的位址當作乙個二級位址給了x

printf("%p",x);/不是a[0]的地逗敗址,是b的位址圓指李。

printf("%d",*x[0]))這裡要出問題 這是橘遲把b的值當位址來看待,就是在讀位址10(0xa)裡面的值,這是不允許的。

要通過*(x[0])輸出b直接把a賦值給x就行了,型別一樣的。

#include

int main()

int*[2];

int b=10,c=20;

a[0]=&b;

a[1]=&c;

int** x = a; /直接賦值。

printf("%p",x);

printf("%d",*x[0]))

2樓:網友

#include

int main()

int*a[2];

int b=10,c=20;

a[0]=&b;

a[1]=&c;

int** x = int***a;//逗敗x=a,是乙個意思,所以x與a[0]位址相同橘遲。

printf("%p",x);/圓指李/x與a[0]位址相同。

printf("%d",*x[0]))

c++指標與陣列首位址的問題!

3樓:網友

p=a 等價於 p=&(a[0])

具體講: 可以認為a這個變數中放的是陣列的首位址,即陣列第乙個元素的位址, a本身佔乙個儲存單元(char*),那麼p=&a實際上是取的a的位址, 而非陣列的位址。

在具體一點: 假設陣列的首位址是index1(那麼index1就是a[0]的位址了~),那麼這個值存在a中, 而a放在位址為index2的記憶體位置, 其值為index1

p=a 結果為 p=index1, 這個是你想要的p=&a 結果為 p=index2, 這個不是你要的吧p=&(a[0]) 結果為 p=index1, 也行個人理解, 如有偏差, 敬請指正~

4樓:網友

a代表首位址是常量,a的值就是陣列的首位址,但如果用取位址符,要用p=&a[0],你直接用&a,相當於用p=*a

5樓:淦海瑤

從語法上來說p=&a這句話是沒有錯誤的。都是指標之間的賦值。

陣列名,本身就是乙個指標,這個你應該知道,他指向陣列的首位址。

6樓:網友

&a怎麼還是首位址呢?&a[0]才是首位址啊,a本身就是乙個指標,指向陣列首位址,如果找指標的位址會用到&a,不過幾乎不會。

7樓:

a 陣列的首位址。

a不是陣列的首位址,不要這樣用。

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

改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...

c 指標陣列的的引用問題,c 指標陣列的的引用問題。

解答如下 1 指標陣列名name共有5個元素,分別是name 0 name 1 name 4 而它的每一個元素儲存的都是地址,該地址型別為char 這點我們無需懷疑。name 0 儲存的是 basic 這個字串的首地址,即b的地址,那麼也就是順理成章的事了,因為指標陣列的每個元素都是儲存是地址嘛 同...

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

就是指向一個地址。陣列第一個元素的地址就是陣列地址。你的理解從本質來 上就有問題自 int p1 a不能通過編譯,因為a是二維陣列指標,型別是int 3 無法轉換到int 型。必須用int p1 3 a或者int p1 a 0 才可以。同理int p2 a 0 無法通過編譯,因為a 0 是一個int...