C ++数组未知操作

时间:2019-03-08 13:27:28

标签: c arrays multidimensional-array operation

我正在阅读github上的一些代码,以了解其功能。

我碰到了这个:

for (int k = 0; k < N/GROUP_SIZE; k++) {

    for (int i = 0; i < N; i++) {
        for (int j = 0; j < GROUP_SIZE; j++) {
            tempB[i][j] = *(B+k*GROUP_SIZE+i*N+j);
        }
    }

B是大小(N * N)的一维数组 tempB是大小为[N] [GROUP_SIZE]

的二维数组

我不太确定这行是做什么的:

tempB[i][j] = *(B+k*GROUP_SIZE+i*B_WIDTH+j);

它仅访问数组的一部分吗? 我会尝试用谷歌搜索这个问题,但是我不确定该叫什么操作

1 个答案:

答案 0 :(得分:1)

temp[i][j] =访问多维数组的一个单元,并将值放入其中。

对于*(B+k*GROUP_SIZE+i*B_WIDTH+j),此处B是数组的名称,它也是指向该数组的第一个元素的指针。

*(B + a)等效于B[a]B + 1指向该数组的第二个元素,B + 2指向第二个元素。 * operator dereferences the pointer,并在该索引处返回值。