在c中将2D int数组从一个函数传递到另一个函数

时间:2016-11-28 14:23:29

标签: 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]); 
    }
  }
}

第二个函数从第一个函数获取值并打印它。

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");
  }
}

而且 - 问题!我应该如何调用第一个函数(使用哪些参数)?我应该在第二个函数名称中的括号之间编写哪些参数。

我试图用这个(和另一个)方式调用,但是我得到了错误。

print_array (array[height][width]);

1 个答案:

答案 0 :(得分:4)

在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");
  }
}

您将其称为:

print_array(height, width, array);

因为在C中你没有发送数组,只是指针,当你发送指针(到width整数数组)时,前面的定义等于定义,你可以定义为:

void print_array (int height, int width, int (*array)[width]) {
   ...
}