int a[10]
=;int*p=a;
則陣列p是指向int型元素的指標;
*(p+i)是陣列a的第i+1個元素
int b[
3]=;
//定義乙個二維陣列
int(
*p)[3]
;//創立乙個指向一維陣列的指標
p=b;
//因為b的元素可看為一維陣列,所以p指向第乙個一位陣列b[0]
int n[
3]=;
int(
*p)[3]
;p=n;
cout<[0
]<<
","<<
*(p[0]
+1)<<
","<<
(*p)[2
]
]<<
","<<
*(p[1]
+1)<<
"\n"
;
輸出結果:
10,20,30
40,50
分析:
p[0]指向二維陣列中第乙個一維陣列(實際是個位址)
p[0][0]指向第乙個一維陣列中的第乙個元素。
*(p[0]+1)是第乙個一維陣列的第二個元素。
(*p)[2],(*p)是第乙個一維陣列的位址,(也是第乙個一位陣列第乙個元素的位址),所以(*p)[2]是第乙個一維陣列的第三個元素
p[1]是第二個一位陣列的位址,也是第二個一位陣列的第乙個元素的位址
p[1][0]是第二個一位陣列的第乙個元素
p[1]+1是第二個一位陣列第二個元素的位址
所以*(p[1]+1)是50
C語言學習筆記之指向陣列元素的指標和指向陣列的指標
現有如下 執行結果為 通過這個例子,我個人的理解是 雖然列印陣列a和 a結果是相同的位址值,但所代表的意義是不同的。陣列名a代表陣列第乙個元素的位址,指標p和陣列名a其實是指向陣列元素的指標。指標pa是指向陣列a這個整體的指標,p和pa是不一樣的。也就是說p i是按照陣列元素的大小向前移動i,而pa...
c 指標陣列與指向陣列的指標
1 int a 10 指向陣列的指標 a是乙個二級指標,可認為是乙個二維陣列的首位址,指向乙個一維陣列,陣列儲存了10個int資料。int arr1 10 一維陣列 int arr2 2 10 二維陣列 int a 10 arr1 a為指向一維陣列的指標,arr1 應該替換為 arr1,cblog外...
C指標 指向陣列的指標和指向陣列內部元素的指標
int p 5 arr 這裡的 也可以不寫,因為陣列名本身就表示陣列的首位址 int p arr int p arr int p arr 0 上面三種宣告方式都是合法且等價的 int a 5 int p a 指向陣列元素的指標,用來訪問陣列內部的元素,單位長度是sizeof int int q 5 ...