#include <stdio.h>
int main()
{
const int a=1;
printf("a's address is %p\r\n",&a);
printf("input a's address\r\n");
int *p=NULL;
//here let p point to a;
scanf("%p",&p);
printf("p point to %p\r\n",p);
*p=100;
// I suppose a will be 100, but acturlly a is still 1...
printf("a's value is %d\r\n",a);
printf("*p's value is %d\r\n",*p);
return 0;
}
Почему a
еще 1
и не 100
?Что такое переменная const внутри?
Но если я объявляю a
как:
int a =1;
Это работает!
Итак, как это происходит?
В C (предположительно, это то же самое в C++, но я не знаю этого языка), это ** Undefined Behavior ** ((try and)) изменить значение объекта 'const'. Все может случиться. – pmg