1.1 const修饰变量
代码如下
int main()
{
const int a = 10;
a = 20;
printf("%d", a);
return;
}
此时,可以发现,a不能被直接修改,但是思考:能不能通过指针来修改呢?
代码如下
int main()
{
const int a = 10;
int* p = &a;
*p = 0;
printf("%d", a);
return;
}
不难发现,通过指针是可以修改的,那么现在我不想让它可以通过指针修改它的值,是不是可以用const来修饰指针呢?
2.1 const修饰指针
2.11 const在“*”的左边
代码如下
int main()
{
//const在*的左边
const int a = 10;
const int* p = &a;
*p = 20;
return 0;
}
可以发现,当const在“*”的左边时,是不可以再通过指针去修改它的值的,那它可以干嘛呢?
代码如下
int main()
{
//const在*的左边
const int a = 10;
const int b = 20;
const int* p = &a;
p = &b;
*p = 20;
return 0;
}
此时,我们可以发现,虽然不可以通过指针p去修改a的值,但是指针p却可以换存一个地址,也就是目前p可以存b的地址。那么如果const放在“*”号的右边呢?
2.12 const在“*”的右边
代码如下:
int main()
{
const int a = 10;
int* const p = &a;
*p = 20;
printf("%d", a);
return 0;
}
此时我们发现可以修改a的值,但是它可以换存一个地址吗?
代码如下