指標和陣列基本等價的原因在於指標算術和c++內部處理陣列的方式。 ——《c++primerplus》第五版
在多數情況下,c++將陣列名解釋為陣列中第乙個元素的位址。
int arr[10] = ;指標陣列:array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標int *p = arr;
cout<
總結:arrayname[i] 等價於 *(arrayname+i)
陣列指標:a pointer to an array,即指向陣列的指標
還要注意的是他們用法的區別,下面舉例說明。
int* a[4] 指標陣列
表示:陣列a[4]是指標,指標的型別是int*,指標的指向型別是int
元素表示:*a[i] *(a[i])是一樣的,因為優先順序高於*
int (*a)[4] 陣列指標
表示:a是指標的型別是int*[4], 指標的指向的型別為int()[4]
元素表示:(*a)[i]
#includeusing namespace std;
int main()
; cout<
***/
char str1[20] = "characteristics";
char (*pstr1)[20] = &str1;
//b=&str1;
cout<
注意:字串相當於乙個陣列常量,內容不可改變,且只能為右值,如果看成指標,即是常量指標也是指標常量
常量指標:指標的值不能改變,但是自身是乙個變數,讀作指向常量
陣列名是陣列的首位址
a)含義:
宣告乙個陣列 : type arrayname[n];
有兩層含義:1.arrayname是乙個陣列,型別是type[n]
2.array是乙個常量指標,指標的型別是type *,指向型別是type,指向的值是陣列的第0號元素,注意arrayname和陣列第0號元素的位址是不同的,arrayname是指標常量,arrayname++是錯誤的。
b)功能
sizeof(arrayname) &arrname
arrayname代表的是陣列本身,得到的是整個陣列的大小 此時&arrname 表示的是 指向是整個陣列
*arrayname (等同 arrayname[0])
arrayname代表的是指標,得到的是陣列第0號元素的值
arrayname+i
arrayname代表的是指標,得到的是指標向後偏移i個指向型別的單位的指標
補充:sizeof(物件)測出的都是物件自身的型別大小
C語言隨筆(六)指標
指標,就是指記憶體位址,指標變數是用來存放記憶體位址的變數,不同型別的指標變數所占用的儲存單元長度是相同的,而存放資料的變數因資料的型別不同,所占用的儲存空間長度也不同。有了指標以後,不僅可以對資料本身,也可以對儲存資料的變數位址進行操作。定義指標 如下 int a 100 int p 定義乙個整型...
了解指標(3) 指標和陣列
1 一般而言,陣列名代表了陣列本身,但如果把陣列名看做指標的話,它指向陣列的第乙個元素的位址。例1 int array 10 int value value array 0 也可寫成 value array value array 1 也可寫成 value array 1 value array 2...
5 3指標和陣列
定義乙個大小為10的陣列a 10 int a 10 包含了a 0 a 1 a 9 共計10個元素 定義指標 int pa pa指向陣列a的第0個元素,即pa為a 0 的位址。pa a 0 對陣列元素a i 的引用也可以寫為 a i 這樣的形式,這一點至少初看起來很令人吃驚。在求陣列元素a i 的值時...