中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中指針常量和常量指針的區別是什么

發布時間:2022-01-10 14:26:26 來源:億速云 閱讀:141 作者:iii 欄目:開發技術

這篇文章主要介紹了C語言中指針常量和常量指針的區別是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C語言中指針常量和常量指針的區別是什么文章都會有所收獲,下面我們一起來看看吧。

在面試中我們經常會被面試官問到什么是常量指針,什么又是指針常量。

指針常量就是指針本身是常量,指針里面所存儲的內容(內存地址)是常量,不能改變。但是,對應內存地址里存的內容是可以通過指針改變的

常量指針就是指向常量的指針,指針中所存地址中對應的值是常量,不能通過指針來修改它的值。但是,指針自身不是常量,它自身的值可以改變,從而指向另一個地址。

指針常量與常量指針的聲明

指針常量的聲明:數據類型 * const 變量名。

常量指針的聲明:數據類型 const * 變量名 或者 const 數據類型 *變量名。

常量指針常量的聲明:數據類型 const * const 變量名或者 const 數據類型 * const 變量名。

指針常量與常量指針的使用

1.指針常量例子

/*指針常量*/
/*聲明方式*/
    int a;
    int *const b = &a; //const放在指針聲明操作符的右側
 
/*例子*/
int a=0,b=0; 
int * const p=&a; 
p = &b;//錯誤 
*p = 5;//正確

2.常量指針例子

/*常量指針*/
/*聲明方式*/
//1)
    const int *p;
//2)
    int const *p;
 
/*例子*/
int a=0,b=0; 
int const *p=&a; 
p = &b;//正確 
*p = 5;//錯誤

3.常量指針常量

/*常量指針常量*/
/*聲明方式*/
    const int a = 5;
    const int * const p = &a;   //a值不變,b的指向也不能變
 
/*例子*/
int b = 2;
int a = 5;
const int * const p = &a;
p=&b;//錯誤 
*p=2;//錯誤

	int a = 5;
	const int b = 6;
	
	const int *c = &a;       // c是指向整形變量a的常量指針 
	const int *d = &b;       // d是指向整形常量b的常量指針 
	
	int *const e = &a;       // e是指向整形變量a的指針常量
	//int *const f = &b;     //報錯提示 無法將const int*賦值給 int *  
	
	const int *const g = &a; // g是指向整形變量a的指針常量
	const int *const h = &b; // h是指向整形常量b的指針常量
	
	printf("a:%d b:%d\n*c:%d c:%d\n*d:%d d:%d\n*e:%d e:%d\n*g:%d g:%d\n*h:%d h:%d\n",a,b,*c,c,*d,d,*e,e,*g,g,*h,h);
	a=3;
 
	c=&b; 					//改變c的指向為b           c值改變 *c改變 
	//*c=b;					//報錯*c是常量 
	d=&a;					//改變d的指向為a 		   d值改變 *d改變 
	//*d=a;					//報錯*d是常量
	 
	//e=&b;					//報錯  常量指針指向無法改變 
	*e=2; 					//此時a的值已經變為2       e值不變	*e改變也就是a值改變 
	
	//g=&b;					//報錯指針指向無法改變 
	//*g=1;					//報錯指向的地址中的值是個常量無法改變 
	//h=&a;					//報錯指針指向無法改變 
	//*h=1; 				//報錯指向的地址中的值是個常量無法改變 
	printf("改變后\n"); 
	printf("a:%d b:%d\n*c:%d c:%d\n*d:%d d:%d\n*e:%d e:%d\n*g:%d g:%d\n*h:%d h:%d\n",a,b,*c,c,*d,d,*e,e,*g,g,*h,h);

程序的輸出結果:

C語言中指針常量和常量指針的區別是什么

(可以嘗試一下把代碼中的*e=2注釋掉會發生什么)

總結:

指針常量,指向地址不可變,地址中的值可通過指針改變

常量指針,指向地址中的值不可通過指針改變,指向可變

常量指針常量,指向和指向地址的值都不可通過指針改變

附加題

指向常量的指針常量該怎么寫?
答案:

const int * const b = &a;//指向常量的指針常量

關于“C語言中指針常量和常量指針的區別是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C語言中指針常量和常量指針的區別是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德兴市| 巴彦淖尔市| 额尔古纳市| 晋江市| 玉树县| 宝清县| 洛扎县| 龙口市| 沙洋县| 前郭尔| 酒泉市| 南平市| 綦江县| 彩票| 贵德县| 凤凰县| 丰台区| 新化县| 安康市| 集贤县| 黑龙江省| 奉节县| 射洪县| 多伦县| 上饶县| 淮阳县| 洪江市| 安徽省| 津南区| 瓮安县| 西充县| 东莞市| 泰州市| 固安县| 凌云县| 涡阳县| 日喀则市| 修水县| 饶阳县| 塔河县| 新兴县|