翻转课堂 2st 解惑

    目前遇到的问题

  1. 列指针的*(arr + i * 4 + n)是什么意思?
      
    是这样的,我们先假设这里有个二维数组
int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};

  如你所见,这个整型二维数组已经被1~12所填充,计算机底层的存储逻辑是线性的,也就是说它就是按1000 1004 1008 1012 1016这样一个一个存的,所谓二维中的“行”和“列”都只是为了便于我们编程者理解,实际上他存的时候是沿着一条线往下存的(1000 1004 1008),理解吗?
  如果你能理解这一点,那太好了,你可以很轻松地理解*(arr + i * 4 + n),首先要说明,这里面的两个星号的作用是不同的,在外层的那个起“解引用”作用的星号叫解引用操作符,而内层星号是乘法运算符

int a=0;
int *p;
p=&a;
// 此时 *p = a,* 起到了解引用作用`

  
  
  为什么i要乘以4?
  
  答: i 是行数,假设数据在第0行第0列,想要跨到第1行第0列,那么在这个3×4的二维数组中它就需要偏移4次,即偏移这个二维数组的列数,这很好理解,一行四个元素,向右偏移四次就相当于进入下一行

b71c5a7d-a60b-47bb-bc2c-1b8de64f6c6b

posted @ 2025-11-27 13:43  ysdd  阅读(7)  评论(0)    收藏  举报