次のような機能があります。この関数は、ターゲットint ** doubleポインタをとり、ソース配列をその配列にコピーします。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]);
}
私はループの後のprintfを呼び出すと、私はセグメンテーションフォルトを得るが、私はループの内側のprintfを呼び出す場合、それは[I] [J]が正しくターゲットを出力します。どうしてこれなの?私はこの上に私の髪を引き裂いている...
'i'と' j'の値がループの外にあると期待しますか? – nullpointer
ポインタを '** target'に渡す必要がありますので、' *** target'になります。そして、割り当てるときに '* target = ...'を使います。あなたは現在、それが指している値ではなく、(ダブル)ポインタ自体を修正しようとしています。 – Evert
また、http://stackoverflow.com/a/7307699/1746118 – nullpointer