有没有办法复制双类型数组

时间:2018-05-26 18:33:41

标签: c arrays

如何将双类型数组复制到c

中的另一个双类型数组中

这是代码的一部分:

int main(int argc, chae *argv[]){
  double *a, *b;
  int n = 20;
  a = (double *)calloc(n, sizeof(double));
  a = (double *)calloc(n, sizeof(double));
  for (int i=0; i<n; i++ ){
    a[i] =drand48();
  }
}

但不使用如下的循环

for (int i=0; i<n; i++ ){
   b[i] = a[i];
}

是否有任何功能可以自动执行此操作

2 个答案:

答案 0 :(得分:1)

没有内置方法可以直接在C中复制数组。

您有两种选择:

  1. 你提到的循环:

    for(i = 0; i < n; i++) {
        b[i] = a[i];
    }
    
  2. memcpy功能:

    memcpy(b, a, n * sizeof(double));
    

答案 1 :(得分:-3)

您正在寻找的解决方案是memcpy(void *,void *,size_t)

memcpy(&amp; Array1 [0],&amp; Array2 [0],(Array1)的大小/(double)的大小);

在C语言中,标准指针类型到void *的类型转换是由编译器隐式完成的。因此无需担心将双指针作为参数传递。