关于const的实验解决办法
关于const的实验
《c专家编程》第21页上说const 为只读变量而不是常量
于是做了这个实验
能通过编译,但输出的结果是1;而不是100;而printf(“%d”,*b);的结果就是100;*(&a)的结果也是100;
a的地址和b变量的值确实相等,为啥呢,大家探讨一下
------解决方案--------------------
编译通不过。改成 const int * b = &a可通过。
------解决方案--------------------
常量折叠现象而已!很正常,没什么大惊小怪的
《c专家编程》第21页上说const 为只读变量而不是常量
于是做了这个实验
#include<stdio.h>
#include<stdlib.h>
int main(void){
const int a=1;
int *b=&a;
*b=100;
printf("%d\n",a);
return 0;
}
能通过编译,但输出的结果是1;而不是100;而printf(“%d”,*b);的结果就是100;*(&a)的结果也是100;
a的地址和b变量的值确实相等,为啥呢,大家探讨一下
const
c专家编程
常量
指针
变量
------解决方案--------------------
编译通不过。改成 const int * b = &a可通过。
------解决方案--------------------
常量折叠现象而已!很正常,没什么大惊小怪的