1.對於一維陣列 a[10],一級指標p
p=a;//把陣列名(常量位址)賦值給了指標p(正確)
因為p是int指標,而陣列名相當於int 常量,所以正確。
p=&a;//編譯時就會出現錯誤,會顯示警告:從不相容的指標型別賦值。
那是因為&a是取陣列a的位址,相當於int()[10]型別的陣列指標,而指標p只是普通的一級指標,指向int型變數,不能隨便賦值。
2.對於二維陣列名與二級指標
定義:int a[2][5];
int **pa;
pa=a;//編譯時會出現錯誤,會顯示警告:從不相容的指標型別賦值。
那是因為a指向一維的int陣列。記憶體大小為sizeof(int)*陣列長度;
而陣列只是指向乙個int *型別指標,記憶體大小為4,所以他們指向的型別是不相同的,不等價,因而無法將二維陣列名賦值給二級指標。
3.對於二維陣列名只能通過陣列指標實現
例如:int a[2] [5];
int *p[5];
p=a;//此時編譯正確。二者等價,都是指向含有五個元素的一維陣列。
相應的可以參考下面的**:
#include
int main()
陣列名與指標的關係
陣列名與指標間的聯絡 陣列名與指標間的區別分析總結 在剛剛接觸到陣列與指標時,我想最常苦惱的問題就是陣列名與指標之間有什麼關係了吧。但是他們兩者之間真的有什麼數不清道不明的關係嗎?答案無疑是否定的,接下來就讓我們來一 竟吧!首先我們需要了解一下陣列與指標的定義 陣列名與指標間的聯絡 從定義中分析,不...
陣列名與指標
引言 指標是c c 語言的特色,而陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用。於是乎,很多程式設計者就被搞糊塗了。而許多的大學老師,他們在c語言的教學過程中也錯誤得給學生講解 陣列名就是指標 很幸運,我的大學老師就是其中之一。時至今日,我日復一日地進行著c c 專案的開發,而身邊...
陣列名與指標
include using namespace std int main int b 2 10 陣列名本身就是指標,再加上 就變成了雙指標,這裡的雙指標的就是指二維陣列 int p int a 1 p指向a陣列的第6個元素 雖然不存在 cout p 1 cout b 1 cout b 0 retur...