使用指针将浮点矩阵复制并转换为双矩阵

时间:2015-09-24 20:51:27

标签: c pointers matrix void-pointers

我有一个指向双矩阵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;
  }
}

1 个答案:

答案 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++;
相关问题