欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言中指針常量和常量指針的區(qū)別

 更新時(shí)間:2022年01月10日 11:57:04   作者:南城Flipped  
本文主要介紹了C語(yǔ)言中指針常量和常量指針的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在面試中我們經(jīng)常會(huì)被面試官問(wèn)到什么是常量指針,什么又是指針常量。

指針常量就是指針本身是常量,指針里面所存儲(chǔ)的內(nèi)容(內(nèi)存地址)是常量,不能改變。但是,對(duì)應(yīng)內(nèi)存地址里存的內(nèi)容是可以通過(guò)指針改變的。

常量指針就是指向常量的指針,指針中所存地址中對(duì)應(yīng)的值是常量,不能通過(guò)指針來(lái)修改它的值。但是,指針自身不是常量,它自身的值可以改變,從而指向另一個(gè)地址。

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

指針常量的聲明:數(shù)據(jù)類型 * const 變量名。

常量指針的聲明:數(shù)據(jù)類型 const * 變量名 或者 const 數(shù)據(jù)類型 *變量名。

常量指針常量的聲明:數(shù)據(jù)類型 const * const 變量名或者 const 數(shù)據(jù)類型 * const 變量名。

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

1.指針常量例子

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

2.常量指針例子

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

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;//錯(cuò)誤 
*p=2;//錯(cuò)誤 

	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;     //報(bào)錯(cuò)提示 無(wú)法將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的指向?yàn)閎           c值改變 *c改變 
	//*c=b;					//報(bào)錯(cuò)*c是常量 
	d=&a;					//改變d的指向?yàn)閍 		   d值改變 *d改變 
	//*d=a;					//報(bào)錯(cuò)*d是常量
	 
	//e=&b;					//報(bào)錯(cuò)  常量指針指向無(wú)法改變 
	*e=2; 					//此時(shí)a的值已經(jīng)變?yōu)?       e值不變	*e改變也就是a值改變 
	
	//g=&b;					//報(bào)錯(cuò)指針指向無(wú)法改變 
	//*g=1;					//報(bào)錯(cuò)指向的地址中的值是個(gè)常量無(wú)法改變 
	//h=&a;					//報(bào)錯(cuò)指針指向無(wú)法改變 
	//*h=1; 				//報(bào)錯(cuò)指向的地址中的值是個(gè)常量無(wú)法改變 
	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);

程序的輸出結(jié)果:

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

總結(jié):

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

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

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

 

附加題

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

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

 到此這篇關(guān)于C語(yǔ)言中指針常量和常量指針的區(qū)別的文章就介紹到這了,更多相關(guān)C語(yǔ)言中指針常量和常量指針內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ vector 遍歷的幾種方法

    C++ vector 遍歷的幾種方法

    本文主要介紹了C++ vector 遍歷的幾種方法,對(duì)vector 遍歷有一定的總結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-07-07
  • C++實(shí)現(xiàn)與Lua相互調(diào)用的示例詳解

    C++實(shí)現(xiàn)與Lua相互調(diào)用的示例詳解

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)與Lua相互調(diào)用的方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-03-03
  • C語(yǔ)言詳細(xì)講解while語(yǔ)句的用法

    C語(yǔ)言詳細(xì)講解while語(yǔ)句的用法

    c語(yǔ)言while語(yǔ)句的使用語(yǔ)法如“while(condition)?{statement(s);}”,該語(yǔ)句可以是單個(gè)語(yǔ)句,也可以是一個(gè)語(yǔ)句塊,其條件可以是任意表達(dá)式,true是任意非零值,當(dāng)條件為真時(shí),循環(huán)進(jìn)行迭代
    2022-05-05
  • C語(yǔ)言中獲取和改變目錄的相關(guān)函數(shù)總結(jié)

    C語(yǔ)言中獲取和改變目錄的相關(guān)函數(shù)總結(jié)

    這篇文章主要介紹了C語(yǔ)言中獲取和改變目錄的相關(guān)函數(shù)總結(jié),包括getcwd()函數(shù)和chdir()函數(shù)以及chroot()函數(shù)的使用方法,需要的朋友可以參考下
    2015-09-09
  • 算法之排序算法的算法思想和使用場(chǎng)景總結(jié)

    算法之排序算法的算法思想和使用場(chǎng)景總結(jié)

    這篇文章主要介紹了算法之排序算法的算法思想和使用場(chǎng)景總結(jié),本文講解了插入排序、交換排序、選擇排序等幾大類排序算法的特點(diǎn)、思想和使用場(chǎng)景,需要的朋友可以參考下
    2014-08-08
  • c++非變易算法-stl算法

    c++非變易算法-stl算法

    本文主要介紹了C++ STL算法庫(kù)中的非變易算法,是一些原則上不會(huì)變更操作數(shù)據(jù)的算法,包括:逐個(gè)查找算法、元素搜索算法、元素統(tǒng)計(jì)算法、序列匹配算法、子序列搜索算法、這些函數(shù)均包含于<algorithm>頭文件,本文給出的所有代碼在VS2010中編譯運(yùn)行通過(guò)
    2014-03-03
  • 詳解C++中future和promise的使用

    詳解C++中future和promise的使用

    future和promise的作用是在不同線程之間傳遞數(shù)據(jù),這篇文章主要為大家詳細(xì)介紹了C++中future和promise的具體使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • EasyX實(shí)現(xiàn)自由落體小球

    EasyX實(shí)現(xiàn)自由落體小球

    這篇文章主要為大家詳細(xì)介紹了EasyX實(shí)現(xiàn)自由落體小球,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • VSCode遠(yuǎn)程開(kāi)發(fā)調(diào)試服務(wù)器c/c++代碼

    VSCode遠(yuǎn)程開(kāi)發(fā)調(diào)試服務(wù)器c/c++代碼

    語(yǔ)音相關(guān)的好多項(xiàng)目要在linux上跑,但代碼開(kāi)發(fā)大多是在PC機(jī)上,本篇簡(jiǎn)單介紹一下怎么在個(gè)人電腦上用VSCode遠(yuǎn)程開(kāi)發(fā)調(diào)試服務(wù)器上的c/c++代碼。感興趣的朋友跟隨小編一起看看吧
    2020-04-04
  • C語(yǔ)言實(shí)現(xiàn)支持動(dòng)態(tài)拓展和銷毀的線程池

    C語(yǔ)言實(shí)現(xiàn)支持動(dòng)態(tài)拓展和銷毀的線程池

    這篇文章主要為大家介紹了C語(yǔ)言實(shí)現(xiàn)支持動(dòng)態(tài)拓展和銷毀的線程池,感興趣的小伙伴們可以參考一下
    2016-01-01

最新評(píng)論