指针和常量变量
pointers and const variable
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
现在都是只读的。
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
现在都是只读的。