【C++二级难题图解】对二维数组数组名作指针的考察

  若已知 int a[3][7];,则用指针表示数组a中的元素时,下列表示中错误的是()。

  A)* (a+1)[5]
  B)* (* a+3)
  C)* (* (a+1))
  D)* (&a[0][0]+2)

【解析】

  (a+1)相当于指向a[1]的指针;
  (a+1)[5]相当于(a+6)相当于指向a[6]的指针;
  * (a+1)[5]相当于* ((a+1)[5])相当于a[6]

  A选项等价于a[6]a[6]是指向a[6][0]的指针),但a[6]不存在,故A选项错误。

注意到:

  1. [ ]运算符的优先级大于*运算符;
  2. (a+1)[5]等价于(a+6)等价于&a[6]
————————— 本文结束 感谢您的阅读 —————————
谢谢你请我喝咖啡ლↂ‿‿ↂლ(支付宝扫一扫即可领红包, 消费时可抵现! 你省钱, 我赚钱, 多谢支持~)