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 中的数组?
是的,您正在传递一个指针。
当您编写void func(int v[])
声明函数签名时,相当于编写void func(int * v)
.
当您编写func(v)
调用函数时,它相当于func(&v[0])
.