C語言進階3-指針第二部分

  1. 在這裏將會討論const修飾指針的常見三種形式, const關鍵字在C語言中修飾變量,表示這個變量是常量,指針變量也是變量
    1)第一種:int const *p等價於 const int *p 此時p本身不是const的,但是p指向的變量是const類型的
    2)第二種:int * const p; 此時表示 p本身是const ,但是p指向的變量不是const類型的
    2)第三種: const int * const p ;此時p本身是const類型的,p指向的變量也是const類型的
#include <stdio.h>
int main(void)
{
	//const int* p1;
	//int const* p2;
	int* const p3;
	int a;
	const  int * const p4;

	//下面開始對上面定義的開始賦值,看下報錯情況,經過編譯,發現p1和p2都是const類型,不能被繼續賦值

	//*p1 = 3;  //此時p1本身就是一個const 類型,這樣寫回報錯:error C2166: 左值指定 const 對象
	//*p2 = 5;  //同樣報錯:error C2166: 左值指定 const 對象


	//*p3 = 9;
	*p4 = 5;   //報錯
}

2,const 修飾的變量也是有辦法可以改的
此時
上圖的const類型是沒有辦法修改的,但是請看下圖
在這裏插入圖片描述
const類型的變量就已經更改成功了。
3,今天遇到的問題,也提出來給大家看看

int* const p3=9; //對於常指針,定義的時候就應該初始化一下,
//因爲如果不初始化,局部變量會分部在棧上,會隨機給個值

//如果我這樣寫,就是錯的!
int* const p3; //此時就是錯的,因爲如果不初始化,局部變量會分部在棧上,會隨機給個值
p3=9; //此時再次賦值,相當於把指針指向的變量的值改了

發佈了15 篇原創文章 · 獲贊 4 · 訪問量 2137
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章