【问题标题】:Finding an element in a 2-D static array without using operator []不使用运算符 [] 在二维静态数组中查找元素
【发布时间】:2020-04-03 14:19:32
【问题描述】:

给定静态 2 给定静态二维数组如下:

int m[4][6];

如何在不使用 operator[] 的情况下访问m[2][4]

【问题讨论】:

  • 计算一个带有偏移量的指针。
  • aticleworld.com/… 应该做你正在寻找的东西
  • *(*(m + 2) + 4).
  • 能具体点吗
  • 谢谢大家,我可以删除这个吗。我是新手

标签: c++ pointers multidimensional-array


【解决方案1】:

对我来说听起来像是经典的指针练习。

尝试使用m的地址和一些指针算法。

int main(){
    int m[4][6];
    m[2][4] = 42; // Using [] only for testing

    int x = *(*(m + 2) + 4);
    printf("%d\n", x);
}

【讨论】:

    【解决方案2】:

    这样做:

    *(*(m+2) + 4)
    

    这是操作符[] 真正做的事情,这里的数组将dacay指向指针。

    对此的简要说明:

    *(m+2)中,m被用作int(*)[4]的prvalue指向第一个 m 的“行”,然后解引用 m+2 得到对第三个“行”的一维数组的引用。

    然后,这个结果衰减到int* prvalue再次指向第三“行”的第一个元素,然后解引用this_value + 4,我们成功检索到第三行的第5个元素,这就是你得到的确切结果通过使用m[2][4]

    【讨论】:

      猜你喜欢
      • 2017-04-11
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 2020-10-11
      相关资源
      最近更新 更多