1樓:匿名使用者
關注位址型別,只要型別匹配就正確,下面描述中注意括號,用來斷句。
int a[2][3]
陣列型別是int [2][3]。
位址型別是 int (*)[3],含義是 指向(含3個整數的一維陣列)的常量指標,該指標指向的位址為3個列的一行,所以陣列名本身就是行位址。
int *p[3]
陣列型別是 int *[3] ,含義是 :含3個(整數指標)的陣列。
位址型別是 int **,含義是:指向(整數指標)的常量指標。
a)p=a,錯誤
取a的位址賦值給p,p是陣列,陣列就是常量指標,所以不可以賦值。
b)p[0]=a,錯誤
p[0]是整數指標,型別是int *,和a的位址型別不匹配。
c)p[0]=&a[1][2],正確
&a[1][2]是a陣列中乙個整數元素的位址,型別int * 和p[0]型別匹配。
d)p[1]=&a,錯誤
&a就是a的位址,型別是int (*)[3],與p[1]的型別不匹配。
2樓:匿名使用者
int *p[3],那麼p的型別是int*[3],p是乙個陣列,每個元素是int*,你可以看看int a[2][3]代表int*的,有哪乙個就很明白了。
3樓:
位址一樣但型別不一樣
4樓:彡風君子彡
a相當於乙個指標p存的是位址所以不行
C 指標的問題,C語言指標問題
這麼說吧,指標是以後資料結構的基礎,比如單鏈表,雙鏈表,二叉樹等等等等,全部都時指標做的,還有1720次對於現在的計算機來說,是個很小很小很小的數量級。指標學好了受益匪淺,並且也是程式設計今後必須的。指標的確是可以大大提高效率,但是要看你怎麼用,就和遞迴演算法一樣,另外,顯示位址是你語句的問題。比如...
關於c語言二維陣列陣列名與指標的問題
先說些這個2維陣列 int arr 3 4 可以理解為乙個3行四列的矩陣,那麼第一維arr 0 arr 1 arr 2 中存的分別是對應行的位址,也就是說arr 0 存的是乙個 大小為4的整形陣列位址 這樣的話就好理解了,arr存的位址值其實與arr 0 本質上是相同的。都是這個連續空間的開始位址。...
指向多維陣列的指標問題,C語言中對指向多維陣列的指標陣列中多維陣列元素的間接定址問題
int multi 3 4 這是乙個二維陣列,具有3行4列 int ptr 4 定義ptr是乙個可以指向一行具有4個元素的行指標變數,即,例如,二維陣列multi 3 4 可以看成是3個一維陣列 每個陣列4個元素 疊加構成,則其陣列名就為multi 0 multi 1 multi 2 又是乙個一維陣...