动态数组的大小是静态数组大小的两倍。我想把动态数组从(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/

10-11 17:06