Dmy*_*o O 2 c arrays function multidimensional-array
例如,我有两个函数:第一个从 main() 获取高度和宽度并读取 2D int 数组
int read_price (int height, int width) {
int i, j;
int array[height][width];
printf("Enter your values:\n");
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
scanf("%d", &array[i][j]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
第二个函数从第一个函数获取值并打印它。
void print_array () {
int i, j;
for (i = 0; i < h; i++) {
for (j = 0; j < w; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
还有——问题!我应该如何在第一个函数中调用第二个函数(使用哪些参数)?我应该在第二个函数的名称中的括号之间写哪些参数。
我试图以这种(和另一种)方式调用,但出现错误。
print_array (array[height][width]);
Run Code Online (Sandbox Code Playgroud)
在 C99 中,您可以使用可变长度的数组。在您的情况下,函数 print_array 的定义将如下所示:
void print_array (int height, int width, int array[height][width]) {
int i, j;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
printf("%d ", array[i][j]);
}
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
你会称它为:
print_array(height, width, array);
Run Code Online (Sandbox Code Playgroud)
因为在 C 中你不是发送数组,只是指针,前面的定义等于当你发送一个指针(指向width
整数数组)时的定义,你可以定义为:
void print_array (int height, int width, int (*array)[width]) {
...
}
Run Code Online (Sandbox Code Playgroud)