const修饰指针
本文中的const是指在修饰指针的情况下使用
const修饰变量时,该变量是一个常变量,不能够被修改,但本质上还是一个变量。
const int num = 10;
/*num = 20;*/
int* p = #
*p = 20;
printf("%d\n", num); //输出20
//const修饰变量时,虽然不能直接修改,但我们通过指针修改了num值,但num本质上不应该被改变,就像不能够从正门进房间,但是通过翻窗户进房间也是不可以的。
const int num = 10;
/*num = 20;*/
int const * p = #
*p = 20;
printf("%d\n", num);
//const放在*左边时候,修饰的是*p,表示指针指向的内容,是不能够通过指针来改变的,但是可以改变指针变量本身的值。
const int num = 10;
/*num = 20;*/
int* const p = #
*p = 20;
int n = 100;
p = &n;
//const放在*右边时,修饰的是p,表示指针变量不能够被修改,但 *p(指针变量指向的内容)能够被修改。
下面是一个例子,能够方便理解const修饰指针
如上图p已经指向了m,说明女孩和男孩1是男女朋友关系,女孩对男孩说想去吃东西,男孩1有10块钱,女孩使用男孩1的钱包,这时钱就会花出去,*p=0。
但是男孩1不想花钱,会在 int*p加上const,变为 const int * p,女孩就不能够使用 *p买东西,但是她可以改变指向,女孩就跟男孩2好上了,p=&n.
如果男孩1想要花钱给女孩,但不允许她换其他男朋友,这时候 int * const p,p就不能改变,但是==*p== 是可以改变的,女孩可以花男孩1的钱。
假如男孩1加了两个const,女孩就什么也改变不了了。 const int * const p.