В C / C ++ значение line
в строке фактически является адресом памяти массива, а line[1]
фактически представляет значение по адресу переменной line
плюс смещение на 1 элемент.(Если тип элементов в line
является int
, то это означает адрес line
плюс четыре байта; поскольку это char
, это означает адрес line
плюс один байт.)
Итак, line += 3
означает, что line[1]
теперь эквивалентно [old "line" value][4]
.Кодировщик мог написать код как:
for (int j = 0; j < w; j ++)
{
// RGB
line[(3 * j)] = 255 * sin(((float)i / wxh * seed) * 3.14);
line[(3 * j) + 1] = 255 * cos(((float)j / wxh * seed) * 3.14);
line[(3 * j) + 2] = 255 * sin(((float)(i + j) / wxh * seed) * 3.14);
}