用乙個main函式來描述這個問題吧
今天終於弄明白**p, (*p)[4], *p[4]的區別
int main();
// 理解二維陣列的指標
//首先,二維陣列的名稱 arr 是乙個指標, 它相當於這樣的乙個指標:(*p)[4],它是乙個"指標的指標"
//從第一層面來講,它是乙個包含4個元素陣列的指標,
int (*p)[4] = arr;
//p等於這個陣列的首元素的位址
cout << arr << endl;
//*p為首元素的值(*p = p[0])
cout << *arr << endl;
//從第二層面來講,這個4元陣列的每個值都是乙個陣列的指標,指向陣列首元素,也就是每行的第乙個元素
cout << **arr << endl;// 輸出1,即第,0行的第0個元素值
//接下來重點在這裡,這與 * 和 的優先順序有關係, 的優先順序大於 *,
//所以arr[1]為第1行首元素的位址,*arr[1]為第一行首元素的值,即5
cout << *arr[1] << endl; // 輸出5
//*arr的值,根據上面解釋,為第0行的指標,
//所以(*arr)[1]表示第0行的第1個元素,即2
cout << (*arr)[1] << endl;// 輸出2
return 0;}
多維陣列情況以此類推
C語言二維陣列指標(指向二維陣列的指標)
二維陣列的定義 int matrix 見圖的操作那篇文章裡面的定義 或者這篇文章提供了另外一種方法。二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4...
c 二維陣列指標
定義指標指向二維陣列 為了方便根據使用者輸入動態定義二維陣列的行和列,引入變數rowsnum 行 colsnum 列 以定義 行 列的二維陣列為例,int rowsnum 4 int colsnum 5 float a new float rowsnum for int i 0 i rowsnum ...
C 二維陣列指標
概括的說,指標其實就是可變陣列的首位址,說是可變陣列,是 指其包含內容的數量的可變的,並且是可動態申請和釋放的,從而充 分節約寶貴的記憶體資源。我一向喜歡一維陣列,除非萬不得已,我一 般是不用二維陣列的,多維的則更是很少涉足了。因為一維簡單,容 易理解,而用指標指向的多維陣列就具有相當的複雜性了,也...