А я что, против что-то сказал? Я лишь указал на некорретность предолжения использовать вместо массива, списки. При этом под массивом не обязательно подразумевался pure-C массив. Но если вы руками разгоните от монитора дым, то увидите, что сабж был "многомерные массивы C", а не "многомерные массивы C++".
Если нужен частный случай - двумерный массив символов (т.е. массив строк), то можно обойтись без указания размеров. Используешь одномерный массив указателей char*, последний указатель помечается NULL, концы строк как известно '\0'. В общем случае никак. Да и не надо.
хэ, оно не всегда удобно. а так указатель на первые элемент - типа char** - и так до того пока char* !=NULL себе спокойно читаешь. Опять же линкованный список овердрафт имеет.
Можно конечно интрузивный односвязный список создать - типа -
struct __list_t {
struct __list_t *next;
};
но зачем уродоватся - когда часто проще иметь void** ?
> Можно конечно интрузивный односвязный список создать
Что значит "интрузивный" вообще и в данном случае?
К сожалению, автор не объяснил зачем это ему нужно. То ли он ищет способ как определить размер непосредственно внутри функции, то ли ему просто обидно уродовать сигнатуру слишком большим количеством аргументов. В последнем случае можно порекомендовать засунуть массив в стрктуру вместе с полями его размеров :)
>Что значит "интрузивный" вообще и в данном случае?
сложно по русски пояснить - в данном и вообще случае - это значит что структура указывает на данные - те указатель на next указывает на кусок данных - неопределенных - те смещая на sizeof(struct __list) у тебя данные - а что там и какие они это уже десятый вопрос - это бывает удобно когда тебе надо хранить что то - недетерминированной структуры.
>Список такой фичей не обладает, интрузивный он или нет.
ессно ;) вопрос в том где ты используешь то или другое - не всегда ты знаешь какой именно элемент тебе нужен - в таких случаях что void** что список (любой) будет O(n) ;)
>А ясно, тот же односвязный список, но куски разного размера?
по сути да - те тебе не надо завязывать структуру списка - или хранить структуру списка отдельно от данных - такое часто бывает нужно.