그래서 다음과 같은 기능이 있습니다. 이 함수는 타겟 int ** double 포인터를 취하여 소스 배열을 복사합니다. 전 루프에 대한 이후의 printf를 호출하면2d int 배열을 C에서 double 포인터로 복사
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를 호출하면, 정확하게 [I] [J]를 목표 출력한다. 왜 이런거야? 나는 이걸로 내 머리카락을 찢어 내고있어 ...
'i'와'j'의 값이 루프 외부에있을 것으로 예상되는 것은 무엇입니까? – nullpointer
포인터를'** target'에 전달해야하므로'*** target'이됩니다. 그리고 할당 할 때'* target = ... '을 사용하십시오. 현재 가리키는 값이 아닌 (이중) 포인터 자체를 수정하려고합니다. – Evert
또한 http://stackoverflow.com/a/7307699/1746118 – nullpointer