常量指针与指针常量

一、常量指针

形式:const int * p; 或者int const * p;

定义:就是常量的指针,指向的是一个常量,但是这个常量是指针的值,而不是地址指向的值,这里“常量”修饰的是指针的值,。

关键点:

1、常量指针指向的对象不能通过这个指针来修改,但是可以通过原来的声明来修改;

2、常量指针可以被赋值为变量的地址,但是之所以叫常量指针,是限制通过这个指针修改变量的值;

3、指针还可以指向别处,因为指针本身只是变量,可以指向任意地址。

二、指针常量

形式:int * const p;

定义:本质就是常量,用指针修饰它。

关键点:

1、指针常量指向的地址不可以变;

2、指向的内容可以变;

  const int * p19 = NULL; //声明常量指针p19
  int const * p19_1 = NULL;//声明常量指针p19_1
  int i = 9;
  p19 = &i; //常量指针指向i
  p19_1 = p19;
  cout << "&i=" << &i << ", i=" << i << endl;
  cout << "p19=" << p19 << " , *p19=" << *p19 << endl;
  cout << "p19_1=" << p19_1 << ", *p19_1=" << *p19_1 << endl;

 // *p19 = 10; //error: assignment of read-only location ‘* p19’不允许修改常量指针指向的内容
  i = 10;//可以通过修改指向的变量修改常量指针指向的内容
  cout << "*p19" << *p19 << " " << *p19_1 <<  " " <<*p19_1 <运行结果:
&i=0x7ffc4c8db7b8, i=9
p19=0x7ffc4c8db7b8 , *p19=9
p19_1=0x7ffc4c8db7b8, *p19_1=9
*p1910 10 10
&j=0x7ffc4c8db7c0, j=8
p19=0x7ffc4c8db7c0, *p19=8
p20=0x7ffc4c8db7b8, *p20=10
p20=0x7ffc4c8db7b8, *p20=8
&i=0x7ffc4c8db7b8, i=8

你可能感兴趣的:(C++笔记,c++)