7

こんにちは!

int の配列を引数として取り、その関数内から同じ配列を別の関数に送信する関数がある場合、配列の値を編集してメイン レベルでコミットすることはできますか?機能レベルではなく?

すなわち

int
main(int argc, char *argv[]) {
    int A[50];
    functionB(A);
 }

関数 B は次のようになります。

void functionB(int A[]) {
    functionC(A);
}

関数 C は、実際に A[] 内の値を変更する関数です。

メインは変更された配列または元の A[] を認識しますか?

ありがとう!

4

1 に答える 1

10

配列はポインターに減衰します。したがって、元の配列が変更されます。

確認してください

void functionC(int A[]) {
    A[0] = 1;
    A[1] = 2;
}

void functionB(int A[]) {
    functionC(A);
}

int
main(int argc, char *argv[]) {
    int A[2]={5,5};

    printf("Before call: %d  %d\n",A[0],A[1]);
    functionB(A);
    printf("After call : %d  %d\n",A[0],A[1]);
 }
于 2014-10-18T04:21:21.727 に答える