2017-09-16 65 views

回答

0

你可以把它作爲:

void Matrix_func(int size, int x[][size]){ 
} 
+1

指向一個指向'int'的指針與int [] []'不兼容。 – mch

1

你可能會想使用該動態內存分配,在這種情況下,你可以使用雙指針的值。此外,不要將尺寸全部傳遞給該地方,您可以爲矩陣製作一個struct。例如:

#include <stdio.h> 
#include <stdlib.h> 

struct matrix_t { 
    int width; 
    int height; 
    int** values; 
}; 

matrix_t* alloc_matrix(int width, int height) { 
    int i; 
    matrix_t* matrix; 
    matrix = (matrix_t*)malloc(sizeof(matrix_t)); 
    matrix->width = width; 
    matrix->height = height; 
    matrix->values = (int**)malloc(sizeof(int*) * height); 
    for (i = 0; i < height; ++i) { 
     matrix->values[i] = (int*)malloc(sizeof(int) * width); 
    } 
    return matrix; 
} 

void free_matrix(matrix_t* matrix) { 
    int i; 
    for (i = 0; i < matrix->height; ++i) { 
     free(matrix->values[i]); 
    } 
    free(matrix->values); 
    free(matrix); 
} 

void matrix_func(matrix_t* x) { 
    int row; 
    int col; 
    for (row = 0; row < x->height; ++row) { 
     for (col = 0; col < x->width; ++col) { 
      printf("%d ", x->values[row][col]); 
     } 
     printf("\n"); 
    } 
} 

int main() { 
    int height; 
    int width; 
    matrix_t* matrix; 

    printf("Enter height: "); 
    scanf("%d", &height); 
    printf("Enter width: "); 
    scanf("%d", &width); 

    matrix = alloc_matrix(width, height); 
    matrix_func(matrix); 
    free_matrix(matrix); 
} 

輸出示例:

Enter height: 4 
Enter width: 5 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
0 0 0 0 0 
+0

而不是'matrix =(matrix_t *)malloc(sizeof(matrix_t));',考慮'matrix = malloc(sizeof * matrix);'更容易正確編碼,查看和維護。 – chux