将数组传递给c中的函数

See*_*tty 0 c arrays scope

关于将数组传递给函数我有疑问.

请考虑以下代码段.

void main()
{
    int a[4]={10,20,30,40};
    fun1(a);
}

void fun1(int a1[])
{
  for(int i=0;i<4;i++)
  {
      printf("%d\n",a1[i]);
  }
}
Run Code Online (Sandbox Code Playgroud)

传递数组只不过是传递第一个位置的地址.我应该传递上面的数组及其名称(数组的起始地址).我怀疑是因为[4]是一个自动变量,它应该在它从主函数出来时死掉它应该给出意想不到的结果(指针应该是悬空的).但它工作正常.

我对此非常困惑,请你把它清理干净.

即使我们通过一个单一的元素int af(&a),它不应该在函数f存在,如果它被声明为自动(在主函数的局部变量).

请清楚这一点.

Mar*_*nde 7

是的,amain()终止时,变量将超出范围.

但是在fun1执行时,main()还没有达到终止,所以内容a仍然完全有效.