如何用代码块功能插入代码?

问题遇到的现象和发生背景

这个怎么看的

用代码块功能插入代码,请勿粘贴截图

img

答案为D

A. *w[1] +1 的运算顺序是(*(w[1]))+1;w[1]得到第二行数组的指针,*(w[1])取出第二行第一个元素,即2;最后再加1,最终结果为3;改为*(w[1]+1)就对了
B. p++, *(p+1); p++将指针指向第2行,p+1将指针指向第三行,最后*(p+1)返回的是第三行的指针;改为p++, *(*p + 1)就对了
C. w[2][2],这个明显错误,就不解释了。

img


不知道这样子你能不能理解
我把代码给你你去试试,会理解深刻一点


#include<stdio.h>

int main(){
    int w[3][4] = {{0,1},{2,4},{5,8}};
    int (*p)[4] = w;
    printf("*w[1]+1 = %d\n",*w[1]+1);
    
    printf("w[2][2] = %d\n",w[2][2]);
    printf("p[1][1] = %d\n",p[1][1]);
    p++;
    printf("*(p+1) = %d\n",*(p+1));
}