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

Jam*_*ams 7 c arrays pointers immutability mutability

天儿真好!

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

int
main(int argc, char *argv[]) {
    int A[50];
    functionB(A);
 }
Run Code Online (Sandbox Code Playgroud)

函数B看起来像:

void functionB(int A[]) {
    functionC(A);
}
Run Code Online (Sandbox Code Playgroud)

和函数C是实际变异A []内的值的函数.

主要看到改变的数组还是原来的A []?

谢谢!

Jay*_*hoi 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]);
 }
Run Code Online (Sandbox Code Playgroud)