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

Which method for accessing a 2D array in C is most effective? (Using Pointers)

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

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] 是否相同?

标准要求

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

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