c++ const修饰指针

const关键字

#includ

e 
#include 
using namespace std;


int main(void) {
    const int x = 3; // 添加const 关键字,表示不可变,类似于java的final 
    // x = 5;  // 编译错误,提示x为readonly 
    
    int const * p = &x;
    // *p = 5;  // 编译错误,提示x为readonly 
    
    int y = 5;
    int * const p = &x;  
    // p = &y; // 编译错误, 'p' has a previous declaration as `const int*p' 
    
    
    
    system("pause");
    return 0;
}

去掉数据类型:

常量指针

const 修饰* 表示 指针指向的内存不能被指针解引用修改

int a = 10;
int b = 30;
const int * p = &a;
// *p = 20; // error
p = &b;

指针常量

const 修饰变量名 表示指针的指向不能变,指针指向的内存可以通过指针解引用修改

int a = 10;
int b = 30;
int * const p = &a;
*p = 20; 
// p = &b; // error

常指针常量

指针指向的对象不能改变,同时指针指向的内存也不可以通过指针解引用修改

int a = 10;
int b = 30;
const int * const p = &a;
// *p = 20;  error
// p = &b; // error

你可能感兴趣的:(c++ const修饰指针)