对于const int *ptr
您无法更改ptr
int main()
{
const int *p;
int a=5;
p=&a;
printf("%d",++(*p));
}
以上程序引发了我的错误。这很公平。
但为什么下面的代码不会给我带来错误。
int main()
{
const int const *p;
int a=5;
p=&a;
a=100; // changing the content pointed by the constant pointer
printf("%d",(*p));
}
我正在更改const指针指向的值。即我正在改变var a的值 5到100?
答案 0 :(得分:1)
声明a = 100;意味着您使用变量a将值更改为100,这不是常量。因此,您将能够更改a。
的值但是,如果您尝试运行以下代码:
int main()
{
const int const *p;
int a=5;
p=&a;
*p=100;
// a=100;
printf("(*p)=%d",(*p));
return 0;
}
这会给你错误,因为你要用来改变值的指针指向一个只读位置。因为您在指针位置声明的值是常量。
这里a和p是2个不同的变量,它们有自己的属性。
答案 1 :(得分:0)
变量'a'不是常数,因此您可以更改它的值。 const int a = 5;无法改变。
变量'p'指向'a'的值,但不会将变量'a'更改为常量。