Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 有没有办法复制双类型数组_C_Arrays - Fatal编程技术网

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

C 有没有办法复制双类型数组,c,arrays,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(); } }

在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();
  }
}
intmain(intargc,chae*argv[]){
双*a,*b;
int n=20;
a=(双*)calloc(n,sizeof(双));
a=(双*)calloc(n,sizeof(双));

对于(inti=0;i,没有直接在C中复制数组的内置方法

您有两个选择:

  • 你提到的循环:

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

  • 您正在寻找的解决方案是
    memcpy(void*,void*,size\u t)


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

    您在寻找吗?对于第二个
    malloc
    调用,您的意思是将指针分配给
    b
    而不是分配给
    a
    两次吗?您肯定不会蚂蚁在那里被[code>sizeof(double)
    除。为什么?你能解释一下吗?
    sizeof(Array1)
    报告以字节为单位的大小。
    memcpy
    需要以字节为单位的大小。如果需要元素计数,则需要进行除法。这通常是您需要的,这就是您经常看到除法的原因,但这是您不需要除法的地方。请注意,这些选项是等效的,编译器可能(也可能会)会这样做启用优化后,为两者生成相同的部件
    for(i = 0; i < n; i++) {
        b[i] = a[i];
    }
    
    memcpy(b, a, n * sizeof(double));
    
    memcpy(&Array1[0], &Array2[0], sizeof(Array1));