少年,做你认为对的事
目录
少年,做你认为对的事
1.const修饰变量
2.const修饰指针(重要)
代码1:
代码2:
代码3:
编辑 3.结论
1.const修饰变量
const修饰变量将变量赋予了常量属性,不可修改。
当我们有这样一个变量:
int n = 0;
我们要是想修改n的值,是不是有两种方式:
①n = 20;
②int * p = &n;
*p = 20;
但是,当我们的变量被const修饰时,我们就说这个变量具有了常量属性简称为常属性,那还能修改吗:就不能被修改了
如果我们用第二种方式:
我们发现可以修改但是,这种方法确实是非法的:
但是,我们创建这个const修饰的变量本身就是希望它的值不被改变, 为了弥补这种缺陷,我们就对指针也加上了const修饰:
接下来引入我们的const修饰指针。
2.const修饰指针(重要)
代码1:
int main()
{
int m = 10;
int n = 20;
//n = 20;
const int* p = &m;
printf("%d\n", *p);
//*m = 20;//error
p = &n;
printf("%d\n", *p);
return 0;
}
结论1:当const放在如图所示位置修饰指针的时候,指针指向的地址空间里面的内容不可以修改,但是可以改变指针指向的地址空间
代码2:
我们改变了const的位置,但是得出了一样的结论: 当const放在如图所示位置修饰指针的时候,指针指向的地址空间里面的内容不可以修改,但是可以改变指针指向的地址空间 。简单来说限制*p,不限制p
代码3:
结论3:当const放在如图所示位置修饰指针的时候,指针指向的地址空间里面的内容可以可以修改,但是不可以改变指针指向的地址空间
3.结论
①const 修饰变量,将变量赋予了常量的属性,不可被修改
②const放在指针变量*左边的时候,指针指向的地址空间里面的内容不可以修改,但是可以改变指针指向的地址空间 。简单来说限制*p,不限制p
③onst放在指针变量*右边的时候,指针指向的地址空间里面的内容可以可以修改,但是不可以改变指针指向的地址空间 ,简单来说不限制*p,限制p