C语言-const指针

2021-12-12  本文已影响0人  我阿郑

const 指针

在普通指针类型前面,加上const修饰

例如:

const int* p;
const char* p;
const double* p;

const 指针:区别

加不加const,有什么区别?

// 1-不加const
int a = 10;
int* p = &a;
*p = 20; // 可写
int b = *p; // 可读

// 2-加上const
int a = 10;
const int* p = &a;
*p = 20; // Error ❌,不可写
int b = *p; // 可读

const的作用是限制星号操作里的写内存功能(这块内存只能读,不能写)

const指针:用途

const 用于限定函数的参数

int test(const int*p, int len) {
    for(int i=0; i<len; i++) {
        printf("%d \n", *p); // 可以读取
        p = p + 1; // 没问题
        *p = 20; // Error ❌ Read-only variable is not assignable
    }
}

用于显式地制定:该函数的参数是输入参数,在函数里面只是读取这个内存,而不会修改这个内存的值
当你不需要修改内存时,在指针前面加上const修饰,避免一不小心的错误发生。

const只是限制的星号操作,不允许写内存,但是对于普通的指针加减法是没关系的

const 一个不常用的语法

int a = 10;
int b = 20;
int* const p = &a; // 这是另一种语法, 实际开发中不会用到
p = &b; // Error ❌  Cannot assign to variable 'p' with const-qualified type 'int *const'

const 总结

上一篇 下一篇

猜你喜欢

热点阅读