У меня есть символ * данные, которые я с приведением для того, чтобы получить к нему доступ, как этотКак передать массив переменного размера указателей в качестве аргумента функции
arr[2][3]
Я продолжил тот путь:
char (*arr)[size] = (char (*)[size])data;
Моя проблема в том, как передать «arr» в качестве аргумента функции?
void func(??? arr)
{
...
}
void test(char *data, int size)
{
char (*arr)[size] = (char (*)[size])data;
func(arr);
}
Я не знаю значения «размер» во время компиляции.
Кроме того, я знаю, что могу просто получить доступ к моему значению следующим образом: data [2 * size + 3], но мне нужно избегать умножений для ограничений скорости.
Просто 'void func (char ** arr)' – 101010
VLA, такой как 'char (* arr) [size]' не является стандартным C++. Во всяком случае, вы не можете использовать 'data' для такого типа, так же, как вы не можете использовать' apple' в 'orange'. Это не имеет смысла. – Nawaz
* «но мне нужно избегать умножений для ограничения скорости» * - как вы думаете, что компилятор будет иметь отношение к индексам в 'arr [x] [y]', если вы дадите ему знание размеров массива? –