Juniorboy 发表于 2020-5-4 19:14:18

关于const指针问题

int num= 434;
const int cnum = 888;
const int * const p = #
const int * const *pp = &p;


请问这个指向p的指针*pp为什么定义的时候还要加两个const,应该是指向const指针的啊,*pp怎么还被const修饰了。求解

人造人 发表于 2020-5-4 19:28:57

const int * *pp = &p;

这个const指的是pp指向的那个对象(p)不可改变
也就是这条语句报错
*pp = NULL;
这和下面这个同意
p = NULL;

int * const *pp = &p;
这个const指的是这个指针指向的对象,那个对象又指向的对象(num)
也就是这条语句报错
**pp = 1234;
这和下面这个同意
*p = 1234;

永恒的蓝色梦想 发表于 2020-5-4 19:47:28

鱼币{:10_256:}

Juniorboy 发表于 2020-5-4 20:35:49

人造人 发表于 2020-5-4 19:28
这个const指的是pp指向的那个对象(p)不可改变
也就是这条语句报错



我应该打错了,第三行应该是&cnum,因为定义的时候是const int,

人造人 发表于 2020-5-4 20:47:24

Juniorboy 发表于 2020-5-4 20:35
我应该打错了,第三行应该是&cnum,因为定义的时候是const int,

#include <stdio.h>

int main(void) {
    int num = 0;
    int *p1 = &num;
    const int *p2 = &num;
    int *const p3 = &num;
    const int *const p4 = &num;

    *p1 = 123;      // ok
    p1 = NULL;      // ok

    //*p2 = 1234;   // error
    p2 = NULL;      // ok

    *p3 = 123;      // ok
    //p3 = NULL;    // error

    //*p4 = 123;    // error
    //p4 = NULL;    // error
    return 0;
}

jkluoling1992 发表于 2020-5-4 22:53:37

本帖最后由 jkluoling1992 于 2020-5-4 22:54 编辑

{:10_257:}

THU_LSM 发表于 2020-5-4 23:48:17

贪财的我{:10_256:}

卑微多仔 发表于 2020-7-30 11:25:14

贪财的我
页: [1]
查看完整版本: 关于const指针问题