C C 語言指標用法詳解 (六) 指標和陣列

2022-03-21 22:08:00 字數 1702 閱讀 6856

指標和陣列基本等價的原因在於指標算術和c++內部處理陣列的方式。  ——《c++primerplus》第五版

在多數情況下,c++將陣列名解釋為陣列中第乙個元素的位址。

int arr[10] = ;

int *p = arr;

cout<

總結:arrayname[i] 等價於 *(arrayname+i)

指標陣列:array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標

陣列指標: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 的值時...