[英]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.