在 C 语言中,const 是一个关键字,用于定义一个常量。一旦将一个变量声明为 const,它的值就不能被修改。这样可以确保在程序的执行过程中,这个变量的值始终保持不变。常量通常用于定义一些固定的值,例如圆周率π、温度的绝对零度等。以下是 const 的示例用法
。
const int MAX_SIZE = 100; // 定义一个整型常量
const float PI = 3.14159; // 定义一个浮点型
#include"stdio.h"
int main(){
int m=0;//m的值可修改
m=20;
const int n=0;//n的值不可修改
n=20;
return 0;
}
上面这个代码中n是不能修改的,如果想直接改会报错,如果要改只能使用指针的方式,使用n的地址,就能修改了,不过这改的也违反了语法规则,用const本来就是为了让变量值不改变,这样又改了就完全没必要了,可以改,但没必要,如果要改就用下面的这个代码即可。
#include"stdio.h"
int main(){
//int m=0;//m的值可修改
//m=20;
const int n=0;//n的值不可修改
//n=20;
printf("修改前:%d\n",n);
int *p=&n;
*p=20;
printf("修改后:%d\n",n);
return 0;
}
如果正常使用const修饰指针变量,有下面两种结论:
1.const放*左边:表示修饰指针所指向的内容,指针指向的内容不变,但指针本身可变。
2.const放*右边:表示修饰指针变量本身,指针变量的内容不能修改,指针指向的内容可以通过指针改变。
//const放*左边
const int *p;
int a = 10;
p = &a;
*p = 20; //错误:指针指向的内存空间不可修改
//const放*右边
int a = 10;
int * const p = &a;
p = NULL; // 错误:指针本身不可修改
*p = 20; // 正确:指针指向的内存空间可修改
如果同时使用了这两种用法(又放左边又放右边),表示指针本身和指向的内存空间都不可修改。
//*左边右边都放了const
const int * const p = &a;
p = NULL; // 错误:指针本身不可修改
*p = 20; // 错误:指针指向的内存空间不可修改