天天看點

C語言中指針前後有const 修飾各自表達什麼意思

eg:

有三種寫法的表達式:

int i;
	const int *pa = &i;
	int const *pb = &i;
	int *const pc = &i;
           

無論多少種寫法,無非隻有兩個結果:(隻需要判斷const和*的位置關系,判斷const标志的是什麼東東)

(1).const 在 * 前面,const标志的是指針,不能被修改。

const在指針前,(如 int const *pa = &i;)此時表示指針是一個常量,不能被 修改即不能再指向其它變量的位址,具體展現在:可以通過指針修改變量的值,如i。

int const *pa = &i;
	*pa = 9;           //正确
	p++                //錯誤,指向了下一個位址 
	p--		   //錯誤,同上。
           

(2).const 在*的後面 ,const标志的是指針指向的變量位址。即不能通過指針去修改變量。

int i;
	int* const pb = &i;
	*pb = 9;		//錯誤,不能通過指針修改變量i的值。可以了解為這種指向關系是const。
	i = 9;			//正确,
	pb =  &j;		//正确。此時pb取的是變量j的位址,修改的不是i。
           

總結:要麼指針不可被修改,要麼通過指針不可被修改。

繼續閱讀