普通指針、指針常量、常量指針、指向常量的常量指針

指針常量:
指針常量僅指向唯一的內存地址,一旦被初始化後,就不能再指向其他地址。簡單說就是指針本身是常量。
但可使用解引用符:*p = 10;
聲明格式:【指針類型】 const 【變量名】 如:int* const p

常量指針:
指針所指向的內容是個常量。不能使用解引用符去修改指向的內容。但指針自己本身卻是個變量,
因此它仍然可以再次指向其他的內容(其他地址): p = &j;
聲明格式:const【指針類型】 【變量名】 如:const int *p

指向常量的常量指針:
把指針常量和常量指針結合在一起,即指針自己本身是一個常量,它指向的內容也是一個常量。
因此,
1.不能使用解引用去修改指向的內容
2.不能重新指向新地址。

	聲明格式:const【指針類型】const 【變量名】
	如: const int* const p5

代碼簡述:

#include "iostream"
using namespace std;
int main()
{

 int a = 10;
 int b = 20;

 //普通指針:
 //可以指向其他地址
  int *p1 = &a;
  p1 = &b;
  cout<<"普通指針p1 = "<< *p1 << endl;
  //可以解引用
  *p1 = 100;
  cout<<"普通指針p1解引用 = "<< *p1 << endl;
  
/*

指針常量:
	指針常量僅指向唯一的內存地址,一旦被初始化後,就不能再指向其他地址:指針常量---指針本身已是常量。
	聲明格式:【指針類型】 const 【變量名】
*/
 //聲明指針常量,並初始化
  int* const p2 = &a;
 //  p2 = &80;  // error,指針常量不能再指向其他地址
  cout<<"指針常量p2 = "<< *p2 << endl;

//可以對指針常量使用解引用符修改內容
  *p2 = 200;//相當於a=100,解引用,修改指針常量所指向的內存空間的值
 cout<<"指針常量p2解引用 = "<< *p2 << endl;


/*

常量指針:
	指針所指向的內容是個常量。不能使用解引用符去修改指向的內容。但指針自己本身卻是個變量,因此它仍然可以再次指向其他的內容。
    聲明格式:const【指針類型】 【變量名】

*/

 int i = 8;
 int j = 9;

 //聲明常量指針
 const int *p3 = &i;
 //*p3 = 0; //error,不能解引用去修改所指向的內容

 p3 = &j; //但可以再指向其他地址
 cout<<"指針常量p3 = "<< *p3 << endl;

/*

指向常量的常量指針
    把指針常量和常量指針結合在一起,即指針自己本身是一個常量,它指向的內容也是一個常量。
	因此它既不能使用解引用去修改指向的內容,也不能重新指向新地址。
	聲明格式:const【指針類型】const 【變量名】

*/

  int m = 7;
  int N = 10;

  //聲明指向常量的常量指針
  const int* const p5 = &m;
  //*p5 = 0; //error,不能修改指向的內容
  // p5 = &N; //error,不能重新指向新地址
  cout<<"指向常量的常量指針p5 = "<< *p5 << endl;


	system("pause");//暫停,窗口不會一閃而過
	return 0;
}

運行結果:
在這裏插入圖片描述

結語:謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章