在 C 中访问二维数组的哪种方法最有效? (使用指针)

发布于 2025-01-10 00:43:39 字数 292 浏览 0 评论 0原文

如果您有一个接受数组指针的函数,那么使用指向数组中每个元素的指针是否有用,还是多余的?例如:

int sum(int(*arr)[3]) {
    int i,j, sum = 0;
    for (i =0; i < ROW ; i ++) {
        for (j =0; j < COL ; j ++) {
            sum = sum + *(*( arr +i )+j);
        }
    }
}

在这种情况下使用 arr[i][j] 是否相同?

If you have a function that takes the pointer of an array, would there be any use in using pointers to each element in the array, or is it redundant? For example:

int sum(int(*arr)[3]) {
    int i,j, sum = 0;
    for (i =0; i < ROW ; i ++) {
        for (j =0; j < COL ; j ++) {
            sum = sum + *(*( arr +i )+j);
        }
    }
}

Would using arr[i][j] be the same in this case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天气好吗我好吗 2025-01-17 00:43:39

标准要求 arr[i] 等于 *(arr + i) 所以不,不使用 arr[i] 是没有意义的 更具可读性。

加速二维数组访问是一个复杂的主题。有一些提高性能的技术,但那些考虑硬件架构(例如缓存)的技术与访问模式有关,而不是与访问语法有关。

arr[i] is required by the standard to be equivalent to *(arr + i) so no, there is no point in not using arr[i] which is more readable.

Speeding up 2d array access is a complex topic. There are some techniques for performance improvement, but those take hardware architecture (e.g. cache) into account are are related to access patterns rather than access syntax.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文