10.3 指針

[二級指針]
定義指針

int *p;
int **p;
/*
p指的是存放數據的地址值(a)
*p指的是地址值a中所存放的數據值(b)
**p指的是地址值為b的地方所存儲的數據值
此處 **p = *& data[0] ; // 就是相當于data [0] ;二級指針相互消除
*/

[指針的區地址]
同其他變量一樣,指針變量也有自己的地址和值,對指針而言,&運算符給出指針本身的地址

p1是指向地址的指針,而&p1是指向p1地址的指針

[指針的解引用]

int * pt ;   //未初始化指針
* pt =5;    //嚴重的錯誤

創建一個指針時,系統只是分配了存儲指針本身的內存,并沒有分配存儲數據的內存,因此,在使用指針時,必須先用已分配的地址初始化它。
[const保護數組中的數據]

int sum (const ar [] ,int n);  

const告訴編譯器,該函數不能修改ar指向數組中的內容,如果函數中發生修改,編譯器會捕捉并生成一條錯誤信息。const并不是要求原數組是常量,而是該函數在處理數組時將其視為常量,不可更改。
創建指針時同樣可以使用const,用于聲明并初始化一個不能指向別處的指針,但是可以修改它所指向的值

double data [5] = {0};
double * const pc =data;
* pc = 5 ; //有效--更改data [0] 的值

同時,在創建指針時還可以使用const兩次,該指針既不能更改它所指向的地址,也不能修改指向地址上的值。

const double * const pc = data ;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容