目录
const修饰变量
int main()
{
const int num = 10;
printf("num = %d\n",num);
int* p = #
*p = 20;
printf("num = %d\n", num);
return 0;
}
const修饰变量的时候,是在语法层面限制了const修改,但是本质上,num还是变量,是一种不能修改的变量。然而,const修饰的变量可以通过指针被“恶意”修改。
const修饰指针
1.指针未用const修饰时,*p可以重新被赋值,p可以重新指向别的地址
int main()
{
const int num = 10;
printf("num = %d\n", num);
//const放在*的左边
//const放在*的右边
int* p = #
*p = 20;//ok
int n = 1000;
p = &n;//ok
printf("num = %d\n", num);
return 0;
}
2.const放在*的左边:限制的指针指向的内容,也就是说:不能通过指针来修改指针指向的内容,但是指针变量是可以修改的,也就是指针指向其他变量的。
int main()
{
const int num = 10;
printf("num = %d\n", num);
//const放在*的左边
const int* p = #
*p = 20;//err
int n = 1000;
p = &n;//ok
printf("num = %d\n", num);
return 0;
}
3.const 放在*的右边,限制的是指针变量本身,指针变量不能再指向其他对象,但是可以通过指针变量来修改指向的内容。
int main()
{
const int num = 10;
printf("num = %d\n", num);
//const放在*的右边
int* const p = #
*p = 20;//ok
int n = 1000;
p = &n;//err
printf("num = %d\n", num);
return 0;
}
4.const 放在*的右边和右边,限制的是指针变量本身和指针指向的内容,指针变量不能再指向其他对象,也不可以通过指针变量来修改指向的内容。
int main()
{
const int num = 10;
printf("num = %d\n", num);
//const放在*的左边和右边
const int* const p = #
*p = 20;//err
int n = 1000;
p = &n;//err
printf("num = %d\n", num);
return 0;
}