int *const plz;


表示我不会更改指针所指向的位置(即,增加或减少地址)

const int *plz


表示我不会通过指针更改指针所指向的变量

const int* const *plz


都意味着

我有一个问题

我刚刚看到了一个看起来像这样的函数

check_plz(const int *const plz)


这到底是什么意思,除了不能递增或递减地址之外,如果这还意味着我无法更改变量,那为什么第二个*操作数会丢失?
谢谢

最佳答案

const int *const plz


此处plz是指向常量int变量的常量指针

以下示例可能对您有帮助

const int *const *plz

这里的plz是双指针,因此它可以保存指针的地址。

#include <stdio.h>

int main(void) {
    const int a=10;
    const int *const p = &a;
    const int *const *q = &p;
    printf("%d\n",*p);
    printf("%p\n",(void *)p);
    printf("%p\n",(void *)*q);
    printf("%d\n",**q);

    return 0;
}


因此,每个使用过的变量(例如p q a)现在都是只读的。

关于c - 指针和const变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27778160/

10-17 01:26