所以我有以下功能。該函數採用目標int **雙指針並將源數組複製到它。將2d int數組複製到C中的雙指針
void copyMatrix(int ** target, int m, int n, int source[m][n])
{
int i,j;
target = (int **) malloc(m * sizeof(int *));
for (i = 0; i < m; i++)
target[i] = (int *)malloc(n * sizeof(int));
for(i=0; i < m; i++){
for(j=0; j < n; j++){
target[i][j] = source[i][j];
}
}
printf("%d ", target[i][j]);
}
當我在for循環調用printf,我得到了段錯誤,但如果我調用printf裏面的for循環,它打印正確目標[i] [j]。爲什麼是這樣?我正在撕掉我的頭髮...
你認爲'i'和'j'的值在循環之外? – nullpointer
你需要將指針傳遞給你的'** target',所以它變成'*** target'。然後在分配時使用'* target = ...'。您目前正在嘗試修改(雙)指針本身,而不是它指向的值。 – Evert
也看看http://stackoverflow.com/a/7307699/1746118 – nullpointer