【发布时间】:2011-02-04 08:22:36
【问题描述】:
我正在编写一个简单的测试程序来传递多维数组。我一直在努力获取被调用函数的签名。
我的代码:
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)
仅供参考,我正在查看a similar question 的答案,但仍然感到困惑。
【问题讨论】:
标签: c arrays types multidimensional-array arguments