int func(int arr[100][150], int rows, int columns);
int func(int arr[100][150], int rows, int columns)
{
//stuff here
}
此功能有效。如果我想将arr大小分配给arr [rows] [columns],但不是100和150,我该怎么办?如果我将它分配给100和150,它可能会使用比行和列更小的内存更多的内存?
int func(int arr[rows][columns], int rows, int columns);
int func(int arr[rows][columns], int rows, int columns)
{
//stuff here
}
或
int func(int arr[][], int rows, int columns);
int func(int arr[][], int rows, int columns)
{
//stuff here
}
不起作用。
答案 0 :(得分:2)
首先传递尺寸:
int func(int rows, int columns, int arr[rows][columns])
{
…
}
(实际上,第一个维度可能会被省略。第一个维度需要计算地址。)
答案 1 :(得分:0)
Eric的代码工作,另一种方法(我更喜欢)是用如下指针替换显式数组参数:
int func(int* x, int rows, int columns)
{
//...
}
通过这种方式,该功能可用于1D和2D阵列。这只是Eric给出的答案的替代方案;可以使用任何一种,具体取决于个人喜好和具体应用。