volatile int *p = (int *)0xaae0275c;*p = 1
(volatile int *)0xaae0275c[0] = 1
volatile int *p = (int *)0xaae0275c;p[0] = 1
*(volatile int *)0xaae0275c = 1
(volatile int *)0xaae0275c[0]=1 的意思是,先取出0xaae0275c地址处的值,然后把该值强制转换成int*类型,显然,该值是一个数值,不是变量,是右值,向该值再赋值1,就类似于 2=1; 这样的赋值,显然不对。 想改正确很容易,加上括号就OK了。 正确方式如下: ((volatile int *)0xaae0275c)[0]=1; 加上一对括号即可。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题