我的问题是为什么变量a的值会发生变化,尽管我已将其声明为const?对不起,如果这是一个微不足道的问题。
const int a = 8;
int* ptr = &a;
printf("variable: %d \n", a);
printf("pointer: %d \n", *ptr);
*ptr = 1;
printf("pointer: %d \n", *ptr);
printf("variable: %d \n", a);
输出:8 8 1 1
谢谢,祝你有愉快的一天!
答案 0 :(得分:0)
您已将a
限定为const
,但当您将其地址指定给指针时,这会放弃const
的效果,现在可以使用a
轻松操作ptr
。这很可能会调用未定义的行为。
GCC会在您编译程序时显示警告:
warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
int* const ptr = &a;
如果您不想体验此效果,请将指针变量声明为指向常量的指针。
示例:const int* ptr=&a;