不使用运算符 [] 在二维静态数组中查找元素

Posted

技术标签:

【中文标题】不使用运算符 [] 在二维静态数组中查找元素【英文标题】: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). 能具体点吗 谢谢大家,我可以删除这个吗。我是新手 【参考方案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]

【讨论】:

以上是关于不使用运算符 [] 在二维静态数组中查找元素的主要内容,如果未能解决你的问题,请参考以下文章

位运算-查找数组中唯一成对的数

perl二维数组

二维数组运算

java——基础数据类型——数组—— 一维数组二维数组

java——基础数据类型——数组—— 一维数组二维数组

卷积神经网络