Итак, у меня есть следующая функция. Функция принимает целевой 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]);
}
Когда я называю Printf после того, как для петель, я получаю ошибку сегментации, но если я называю Printf внутри для петель, он печатает мишень [я] [J] правильно. Почему это? Я разорву свои волосы за это ...
Что вы ожидаете от значения 'i' и' j' вне цикла? – nullpointer
Вам нужно будет передать указатель на ваш '** target', поэтому он станет' *** target'. А затем используйте '* target = ...' при распределении. В настоящее время вы пытаетесь изменить сам (двойной) указатель, а не значение, на которое оно указывает. – Evert
Также смотрите http://stackoverflow.com/a/7307699/1746118 – nullpointer