동적 배열을 정의하고 정적 배열의 데이터를 동적 배열에 복사 한 다음 정적 배열로 다시 복사하려고했습니다. 그러나 데이터가 제대로 복사되지 않은 것으로 보입니다. 내가 뭐 잘못 했어요?동적 포인터 배열과 정적 배열 간의 데이터 복사
#include <stdio.h>
int main(){
int n = 2;
double a[2][2];
double c[2][2];
a[0][0] = 0.0;
a[0][1] = 0.1;
a[1][0] = 1.0;
a[1][1] = 1.1;
double* b = NULL;
double* p = NULL;
int i,j;
b = (double*) malloc(n*n*sizeof(double));
for(i=0; i<n; i++){
for(j=0; j<n; j++){
p = b+i;
*(p+j) = a[i][j];
}
}
memcpy(c, b, sizeof(*b));
for(i=0; i<n; i++){
for(j=0; j<n; j++){
p = b+i;
fprintf(stderr, "[%d][%d] = %.1f, c[%d][%d] = %.1f \n", i, j, *(p+j), i, j, c[i][j]);
}
}
free(b);
b = NULL;
return 0;
}
결과
[0] [0] = 0.0, C [0] [0] = 0.0
[0] [1] = 1.0, C [0] [1] = 0.0
[1] [0] = 1.0, C [1] [0] = 0.0
[1] [1] = 1.1, C [1] [1] = 0.0
확인 코드 아래에 시도해야 내가 오류를 발견 , 메모리를 할당했다. 그것은 (i) memcpy (c, b, n * n * sizeof (* b))이어야합니다; 및 (ii) p = b + (i * n); – twfx