让我们来了解一下const的使用吧
(1)、const修饰普通变量
#include<stdio.h>
int main()
{
const int a = 10;
a = 20;
printf("%d\n", a);
return 0;
}
这种情况下编译器会报错,原因是表达式不是可修改的左值。a是常变量,在c语言中a一般会认为是变量,但不可以被修改。但在c++语言中a为常量。
但通过地址可以进行修改,这样就破坏了对a的限制。
#include<stdio.h>
int main()
{
const int a = 10;
int* pa = &a;
*pa = 20;
printf("%d\n", a);
return 0;
}
(2)、const修饰指针变量
改变变量两种方式:1、通过改变地址内容来进行修改
#include<stdio.h>
int main()
{
int a1 = 0;
int* pa1 = &a1;
int a2 = 10;
pa1 = &a2;
printf("%d\n", *pa1);
return 0;
}
相当于一开始将a1的地址赋给指针变量pa1,将修改值a2的地址赋予给pa1这样就通过改变pa1的地址内容,进而pa1所指向的变量。
2、直接修改原有地址所指向的变量
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a;
*pa = 20;
printf("%d\n", a);
return 0;
}
>1.const放在 * 的左边:const int* pa
#include<stdio.h>
int main()
{
int a1 = 0;
const int* pa1 = &a1;
int a2 = 20;
pa1 = &a2;
printf("%d", *pa1);
return 0;
}
指针所指向的内容不能通过指针来进行修改,但指针变量本身的值可以修改。
>2.const放在 * 的右边:int* const pa
#include<stdio.h>
int main()
{
int a1 = 0;
int* const pa1 = &a1;
*pa1 = 20;
printf("%d\n", a1);
return 0;
}
指针所指向的内容可以修改,但指针变量本身不能被修改。