簡體   English   中英

在C中將2D int數組從一個函數傳遞給另一個函數

[英]Passing 2D int array from one function to another in c

例如,我有兩個函數:第一個函數從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]);

在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]) {
   ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM