第一種const指針:
const double *pc = 0;
這種類型的定義表示pc指針指向的內(nèi)存的內(nèi)容不可通過pc來修改!
const 變量的地址只能賦給const指針:
const double *pc = 0;
const double minWage = 9.60;
pc = &minWage;
但是const指針也可以指向非const變量
double dval = 3.14;
// ok: 不能通過pc 修改dval
// 雖然dval 本身不是一個(gè)常量
pc = &dval; // ok
注意!即使是指向非const變量也不可以通過pc修改變量的內(nèi)容,因?yàn)閜c有const修飾.
dval = 3.14159; // ok
*pc = 3.14159; // 錯(cuò)誤
正因?yàn)檫@種const指針可以保證指向得內(nèi)容不通過這個(gè)指針被修改,所以大家才常用下面的函數(shù)方式:
int strcmp( const char *str1, const char *str2 );
第二種const指針:
int errNumb = 0;
int *const curErr = &errNumb;
這一種是指針不能指向其他地址,只能指向初始化地址.
如果寫出下面的代碼就會發(fā)生錯(cuò)誤:
curErr = &myErrNumb; // 錯(cuò)誤
第三種const指針:
這種const指針是錢兩種的結(jié)合,使得指向的內(nèi)容和地址都不能發(fā)生變化.
const double pi = 3.14159;
const double *const pi_ptr = π
總上,應(yīng)該了解,不論那種類型的const指針都不能限制它指向的內(nèi)存內(nèi)容不被修改,最多是限制不通過它被修改,或者限制它自己不被修改而已.