5

次のプログラムでエラーが発生します。配列に値を格納できない理由がわかりません

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;
}

これは私が得たエラーです:

73: error: expected expression before ‘{’ token
80: error: expected expression before ‘{’ token

配列要素を格納できない理由を明確にしてください。

4

4 に答える 4

9

ANSI C には、配列初期化子の外部で配列集合体を定義するための構文がありません。初期化を割り当て (技術的には割り当てではなく、初期化の一部) と組み合わせると、コードは次のようにコンパイルされます。

int A[10] = {3,1,2,3,4,1,5,8,9,0};

配列を再割り当てすることはできないため、 の 2 回目の呼び出しの前のプログラムの部分は次のようにBubbleSortEfficientなります。

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

EDIT : (Keith Thompson のコメントに応えて) C99 では配列集計式が導入されていますが、標準には配列の割り当てがないため、配列に割り当てることはできません。

于 2013-07-17T01:02:30.587 に答える
0

はい、このように配列に値を割り当てることはできません。次のように割り当てる必要があります。

「int A[10]={3,1,2,3,4,1,5,8,9,0};」

于 2013-07-17T05:29:44.880 に答える