我有一个指向双矩阵dmatrix的指针,我用它声明:
double* dmatrix = malloc(n*n*sizeof(double));
我还有一个指向矩阵imatrix的void指针,它具有相同尺寸矩阵的int值。 int矩阵在程序的其他地方填充。如何仅使用指针将值从imatric复制到dmatrix? 这就是我的尝试。:
void *a;
for(int c=0;c<n;c++){
for(int r=0;r<n;r++){
a = ((char *)imatrix+(r*n+c)*sizeof(int));
*(dmatrix+r*n+c) = *(double *)a;
}
}
答案 0 :(得分:4)
错误。 你说imatrix指向int矩阵,而你将它转换为char *。为什么? 2. a应该是源矩阵中的指针。为什么要把它转换为(double *)?
我会做那样的事情:
void* imatrix;
double* dmatrix;
double* p_dmatrix = dmatrix;
int* p_imatrix = imatrix;
for(int i=0; i< r*c; i++)
*p_dmatrix++ = *p_imatrix++;