C语言const修饰指针变量

1、const修饰的是*,*p是只读的,p可读可写(常量指针

void test01() {
    int a = 10;
    int b = 20;
    const int* p = &a;//等同于int const* p = &a;

    //*p = 20;        //错误,*p只读

    p = &b;          //正确,指针的指向可以修改
    printf("%d\n", *p);
}

指针指向的值不可以改变,指针的指向可以改变

2、const修饰的是p,p是只读的,*p可读可写(指针常量

void test02() {
    int a = 10;
    int b = 20;
    int* const p = &a;

    //p = &b;//错误,指针的指向不可修改

    *p = 34;//正确,指针指向的值可以修改
    printf("%d\n", *p);
}

指针的指向不可以改变,指针指向的值可以改变

3、const修饰的是*和p,p和*p都是只读的

void test03() {
    int a = 10;
    int b = 76;
    const int* const p = &a;
    //*p = 32;错误
    //p = &b;错误
}

4、记忆小技巧

将const看成常量,*看成指针;

①const int *p = &a;

常量指针,指针指向的值只读, 指针的指向可读可写

②int* const p = &a;

指针常量,指针的指向只读,指针指向的值可读可写

你可能感兴趣的:(C语言,c语言,开发语言)