[二級指針]
定義指針
int *p;
int **p;
/*
p指的是存放數(shù)據(jù)的地址值(a)
*p指的是地址值a中所存放的數(shù)據(jù)值(b)
**p指的是地址值為b的地方所存儲的數(shù)據(jù)值
此處 **p = *& data[0] ; // 就是相當(dāng)于data [0] 枷恕;二級指針相互消除
*/
[指針的區(qū)地址]
同其他變量一樣筏养,指針變量也有自己的地址和值,對指針而言兄朋,&運(yùn)算符給出指針本身的地址
p1是指向地址的指針掐禁,而&p1是指向p1地址的指針
[指針的解引用]
int * pt ; //未初始化指針
* pt =5; //嚴(yán)重的錯誤
創(chuàng)建一個指針時,系統(tǒng)只是分配了存儲指針本身的內(nèi)存颅和,并沒有分配存儲數(shù)據(jù)的內(nèi)存傅事,因此,在使用指針時峡扩,必須先用已分配的地址初始化它蹭越。
[const保護(hù)數(shù)組中的數(shù)據(jù)]
int sum (const ar [] ,int n);
const告訴編譯器,該函數(shù)不能修改ar指向數(shù)組中的內(nèi)容有额,如果函數(shù)中發(fā)生修改般又,編譯器會捕捉并生成一條錯誤信息。const并不是要求原數(shù)組是常量巍佑,而是該函數(shù)在處理數(shù)組時將其視為常量茴迁,不可更改。
創(chuàng)建指針時同樣可以使用const萤衰,用于聲明并初始化一個不能指向別處的指針堕义,但是可以修改它所指向的值
double data [5] = {0};
double * const pc =data;
* pc = 5 ; //有效--更改data [0] 的值
同時,在創(chuàng)建指針時還可以使用const兩次脆栋,該指針既不能更改它所指向的地址倦卖,也不能修改指向地址上的值。
const double * const pc = data ;