如何在c中为数组赋值

Nil*_*wal 5 c

我在以下程序中遇到错误.我无法弄清楚为什么我无法在数组中存储值

main()
{
    int A[10];
    A = {3,1,2,3,4,1,5,8,9,0};
    printArr(A,10);
    printf("\n");

    BubbleSort(A,10);

    printArr(A,10);
    printf("\n----------------Bubble Sort Efficiently ---------------------\n");
    printf("\n");

    A = {3,1,2,3,4,1,5,8,9,0};

    BubbleSortEfficient(A,10);
    printArr(A,10);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

73: error: expected expression before ‘{’ token
80: error: expected expression before ‘{’ token
Run Code Online (Sandbox Code Playgroud)

请澄清为什么我无法存储数组元素.

das*_*ght 9

ANSI C没有用于在数组初始值设定项之外定义数组聚合的语法.如果将初始化与赋值(技术上不是赋值,但是初始化的一部分)结合起来,则代码将编译:

int A[10] = {3,1,2,3,4,1,5,8,9,0};
Run Code Online (Sandbox Code Playgroud)

由于您无法重新分配数组,因此在第二次调用之前程序的部分BubbleSortEfficient应如下所示:

int B[10] = {3,1,2,3,4,1,5,8,9,0};
BubbleSortEfficient(B, 10);
printArr(B, 10);
Run Code Online (Sandbox Code Playgroud)

编辑:(响应Keith Thompson的评论)C99引入了数组聚合表达式,但它们不能分配给数组,因为标准没有数组赋值.

  • C确实有以C99开头的数组聚合("复合文字"):`int [] {1,2,3,4,5}`是一个有效的表达式.但这并不能很好地完成OP,因为C没有数组赋值. (2认同)