c语言中声明常量的两种方式
const int value int const value
如果要声明常量的指针,即指向常量的指针,则可以参考上面的常量声明修改一下
const int *ptr int const *ptr
把*ptr看成一个整体,那么*ptr中的ptr就是指向常量的指针了。顾名思义,指向常量的指针,那么就不可以通过这个指针去修改这个值了。
#include <stdio.h> int main(){ int val = 123; int const *ptr = &val; *ptr = 111; return 0; } 会报错: error: read-only variable is not assignable *ptr = 111; ~~~~ ^ 1 error generated.
但仍可以通过其他方式修改这个量的值。例如
#include <stdio.h> int main(){ int val = 123; int const *ptr = &val; val = 222; printf("%d\n", *ptr); return 0; } 输出:222
常量指针的意义就是不可以通过这个指针去修改它所指向的值
指针常量
可以理解为先定义一个常量,并且这个常量为指针类型。
int val = 123; int * const ptr = & val;
ptr只是一个常量,它的值是一个固定的内存地址。
#include <stdio.h> int main(){ char *message = "hello, world\n"; //此处ptr是"hello,world\n"的内存地址 char * const ptr = message; printf("%s\n", ptr); //就算修改了message的值,也没有修改ptr的值,ptr依旧指向 "hello, world\n" message = "hello, maomao\n"; printf("%s\n", ptr); return 0; } 输出 hello, world hello, world
指向常量的常量指针
char const * const ptr;
该指针为常量,同时不可以通过该指针修改指向的值。
时间: 2024-10-06 14:00:16