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

C 使用指针将浮点矩阵复制并强制转换为双矩阵,c,pointers,matrix,void-pointers,C,Pointers,Matrix,Void Pointers,我有一个指向双矩阵dmatrix的指针,我使用以下方法声明: double* dmatrix = malloc(n*n*sizeof(double)); 我还有一个指向矩阵imatrix的空指针,它具有相同维度矩阵的int值。 int矩阵在程序的其他地方填充。如何仅使用指针将值从imatric复制到dmatrix? 这是我正在尝试的 void *a; for(int c=0;c<n;c++){ for(int r=0;r<n;r++){ a = ((char

我有一个指向双矩阵dmatrix的指针,我使用以下方法声明:

double* dmatrix = malloc(n*n*sizeof(double));
我还有一个指向矩阵imatrix的空指针,它具有相同维度矩阵的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;
  }
}
void*a;
对于(int c=0;c错误)。
1.你说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++;
void*imatrix;
双*d矩阵;
双*p_-dmatrix=dmatrix;
int*p_imatrix=imatrix;
对于(int i=0;i
为什么
imatrix
是一个空指针?如果您将它分配给一个int指针,您可以正常地对它进行索引:
int*iimatrix=imatrix;/*for loops*/dmatrix[r*n+c]=iimatrix[r*n+c]
当你尝试它时会发生什么?它是否像预期的那样工作?你能展示一个预期和实际输出的例子吗?你必须转换值,而不是指针。我从你的代码中清楚地知道你实际上在做什么。另外,你的标题上写着
float
double
但你的文本上写着
double
Int
。我现在将添加预期与实际结果。imatrix是一个空指针,因为这是规范。如果我按照我的方式,我会按照您的建议执行无需强制转换
imatrix
:与
void
指针之间的转换将自动完成。
p\ucode>变量是冗余的,循环可能是
dmatrix[i]=imatrix[i];
虽然可以在不使用p_u变量的情况下重写循环,但索引操作涉及乘法和加法,这比递增指针需要更多时间。如果没有优化信息,我代表现有解决方案