今天复习C++的const,又学到了很多内容,总结一下[原创]

关于const的用法限制,可以用下面的一张表来表示

const int *p int cont *p int *const p
申明时是否需要初始化
是否可以指向常变量
是否可以指向变量
是否可以重新指向
(*p)++ 是否可以进行
总结 const修饰的是 *p,即p指向的单元的值,那个单元的值不能改变 它是否和const int *p等价? const修饰的是p内存存放的内容,这个内容不能改变,因此说它不能重新指向别的地址

下面是测试代码支持

void TestConst()
{
  
const int a = 100;
  
const int c = 200;
  
int b = 1;
  
int d = 10;
  
  
// test1 
  const int *p1;
  p1 
= &a; // OK
//  (*p1)++; // ERROR
  p1 = &c; // OK
  p1 = &b; // OK 
  b++// OK
//  (*p1)++;
  cout<<*p1<<endl; // 2
  
  
// test2
//  int *const ssss; // ERROR
//  int * const p2 = &a; // ERROR
  int * const p2 = &b; // OK
//  p2 = &d; // ERROR
  b++;
  (
*p2)++//OK
  cout<<*p2<<endl;
  
  
// test3
  int const *p3 = &a; // OK
//  int const *p3 = &b; // OK
  p3 = &b; // OK
//  (*p3)++;  // ERROR
  
  
// test4
  int const *p4 = &b;
//  (*p4)++; // ERROR
  b++;
  cout
<<*p4<<endl;
}
原文地址:https://www.cnblogs.com/qkhh/p/1037491.html