将数组作为函数参数从函数内传递,该函数将其作为C中的参数

时间:2014-10-18 04:15:46

标签: c arrays pointers immutability mutability

天儿真好!

如果我有一个函数,它将一个int数组作为参数,然后从该函数中, 将相同的数组发送到另一个函数,它是否仍然可以编辑数组值并让它们在主级别而不是在函数级别提交?

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

函数B看起来像:

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

和函数C实际上是变异A []中的值。

主要看到更改的数组还是原始的A []?

谢谢!

1 个答案:

答案 0 :(得分: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]);
 }