我正在阅读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);
它仅访问数组的一部分吗? 我会尝试用谷歌搜索这个问题,但是我不确定该叫什么操作
答案 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,并在该索引处返回值。