动态数组的大小是静态数组大小的两倍。我想把动态数组从(N/2)-1到N-1的值赋给整个静态数组。
唯一的方法是用循环复制值?
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
int N=100, pSize=4, lSize, i;
double *A;
lSize=N/sqrt(pSize);
/* memory allocation */
A=(double*)malloc(sizeof(double)*N);
double B[lSize];
/* memory allocation has been done */
/* initilize arrays */
for(i=0; i<lSize; i++){
B[i]=rand()% 10;
}
A=B;
for (i=0; i<lSize; i++){
fprintf(stdout,"%f\n", A[i]);
}
return 0;
}
最佳答案
您可以使用memcpy函数复制数据。在您的示例中,您希望将A的最后一半复制到B,以便可以执行以下操作:
memcpy(&B[0], &A[lSize-1], lSize * sizeof(double));
注意:在我使用的MIWW编译器上,它要求我声明目的地为[B](0),我认为我可以离开B。这可能是由于我的配置(我不使用C编译器那么多,通常只使用G++来进行快速C++测试用例)。
关于c - 如何将动态数组的某些部分分配给整个静态数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5224084/