`*(*(p + 1)+1)[7]`等于`p [1] [8] [0]`?

YoT*_*LCD 3 c pointers

char *p[2][3];

怎么*(*(p+1)+1)[7]平等p[1][8][0]

我以为*(*(p+1)+1)[7]会是一样的*(*(*(p+1)+1)+7),那就等于p[1][1][7],我哪里错了?

E:我不明白为什么这会被贬低......

Whi*_*ing 6

基本事实:

  1. [] 从左到右关联
  2. []具有更高的优先级比引用操作*
  3. a[i]*(a+i)

所以

  *(*(p+1)+1)[7] 
= *((*(p+1)+1)[7])   // rule 2
= *(*(*(p+1)+1+7))   // rule 3
= *(*(*(p+1)+8))    
= *(*(*(p+1)+8)+0)  
= p[1][8][0]         // rules 1 and 3
Run Code Online (Sandbox Code Playgroud)