在 C 中将数组作为参数传递

Art*_*r _ 4 c arrays pointers pass-by-reference implicit-conversion

为什么这段代码有效?

#include <stdio.h>

void func(int v[]){
    v[0] = 1;
}

int main(){
    int v[5] = {0};
    func(v);
    for (int i = 0; i < 5; i++)
    {
        printf("%d ", v[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是 '1 0 0 0 0' 但为什么呢?我没有传递指针,为什么该函数可以更改我的 main 中的数组?

Dav*_*son 7

是的,您正在传递一个指针。

当您编写void func(int v[])声明函数签名时,相当于编写void func(int * v).

当您编写func(v)调用函数时,它相当于func(&v[0]).