Я пишу простую тестовую программу для передачи многомерных массивов. Я изо всех сил пытался получить подпись вызываемой функции.
Код у меня есть:
void p(int (*s)[100], int n) { ... }
...
{
int s1[10][100], s2[10][1000];
p(s1, 100);
}
Этот код работает, но это не то, что я хотел. Я хочу, чтобы функция p не обращала внимания на то, является ли диапазон значений 100 или 1000, но должна знать, что существует 10 указателей (с помощью сигнатуры функции).
В качестве первой попытки:
void p(int (*s)[10], int n) // n = # elements in the range of the array
и в качестве второго:
void p(int **s, int n) // n = # of elements in the range of the array
Но безрезультатно я могу заставить их работать правильно. Я не хочу жестко кодировать 100 или 1000 в подписи, а вместо этого передаю их, имея в виду, что всегда будет 10 массивов.
Очевидно, я хочу избежать объявления функции:
void p(int *s1, int *s2, int *s3, ..., int *s10, int n)
К вашему сведению, я смотрю ответы на похожий вопрос, но все еще запутался .