我正在寫一個函數將存儲分配給nxn矩陣。分配存儲到矩陣
void assign_matrix_storage(double **matrix, int n){
if((matrix = malloc(n * sizeof(double*))) == NULL){
printf("ERROR: Memory allocation failed\n");
exit(EXIT_FAILURE);
}
int i;
for(i = 0; i < n; i++){
if((matrix[i] = malloc(n * sizeof(double))) == NULL){
printf("ERROR: Memory allocation failed\n");
exit(EXIT_FAILURE);
}
}
return;
}
但是,如果我運行下面的代碼,我得到的最後一個語句段錯誤:
double **A;
assign_matrix_storage(A, 2);
A[1][1] = 42;
這是爲什麼?
http://stackoverflow.com/questions/16004668/c-allocating-a-matrix-in-a-function/27366086#27366086 上面你會發現,我與功能分配做了一個程序並以任何可能的方式處理矩陣C(gcc C11/C99)。也許這對你有用...... – 42n4 2014-12-08 20:25:08