如下哪项不能给地址0xaae0275c赋值为1?(  )

  • volatile int *p=(int *)0xaae0275c;*p=1
  • (volatile int *)0xaae0275c[0]=1
  • volatile int *p=(int *)0xaae0275c;p[0]=1
  • *(volatile int *)0xaae0275c=1
2 收藏


直接登录
最新评论
  • 萧萧   2016/06/06

    B

    其实四个选项的赋值逻辑都大同小异,而B之所以有误,原因在于运算符的优先级。

    在C语言中,“[]”(数组下标)的优先级要高于“(类型)”(强制类型转换),所以B实际表达的意思,应该是将地址0xaae0275c的值取出来,强转成int *类型,然后赋值成1。

    要修改B的话,加个括号就行:((volatile int *)0xaae0275c)[0]=1