C ++ Array неизвестная операция - PullRequest
0 голосов
/ 08 марта 2019

Я читаю какой-то код на 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 Ответ

1 голос
/ 08 марта 2019

temp[i][j] = обращается к одной ячейке многомерного массива и помещает в нее значение.

Что касается *(B+k*GROUP_SIZE+i*B_WIDTH+j), то здесь B - это имя массива, которое также является указателем на первый элемент этого массива.

*(B + a) эквивалентно B[a]. B + 1 будет указывать на второй элемент этого массива, а B + 2 на второй элемент. * оператор разыменовывает указатель и возвращает значение по этому индексу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...