Я пишу простую тестовую программу для прохождения многомерных массивов. Я изо всех сил пытался получить подпись функции вызываемого абонента.
Код, который у меня есть:
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)
К вашему сведению, я ищу ответы на аналогичный вопрос , но все еще в замешательстве.