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