Ответ 1
void[]
- всего лишь массив чего угодно. in void[]
- удобная сигнатура для функции, которая просто записывает байты в файл или что-то, потому что принимает любой массив - void
, что означает, что тип не важен, а in
означает, что вы не имеете права изменять или сохранить его, что позволяет вам принимать const или неизменяемые массивы.
Чтобы использовать void[]
, вы должны сначала перенести его на что-то еще, как правило, ubyte[]
, чтобы элементы имели конкретный размер, позволяющий индексировать его. void[].length
указывается как общее количество байтов в массиве, поэтому, если вы просто передаете указатель и длину данных в функцию (например, файл файла уровня операционной системы, например, Linux write
syscall), передайте arr.ptr, arr.length
будут получать эти байты, не заботясь о том, что они представляют.