c - 将数组传递给c中的函数

标签 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]);
  }
}

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

我对此很困惑,你能把它弄清楚吗?

即使我们将单个元素 int a 作为 f(&a) 传递,它也不应该存在于函数 f 中,如果它被声明为自动(局部变量)在主函数中)。

请同时清除此项。

最佳答案

是的,当 main() 终止时,变量 a 将超出范围。

但是当 fun1 执行时,main() 还没有终止,所以 a 的内容仍然完全有效。

关于c - 将数组传递给c中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11683026/

相关文章:

c - 确定回溯递归算法中的基本条件

java - 计数以 x 开头的字符串,并存储在 Array Android Studio 中

c# - 为什么编译器无法推断对象数组类型?

java - "=="运算符何时成功比较字符串?

ruby - 对Rack源码中的变量类型感到困惑

C++ 在范围结束前删除函数指针

c++ - 编辑文本缓冲区

c - 这个C程序有什么问题?

c - 如何修复 C 中的致命运行时错误?

php - 在 PHP 类中是否可以在函数内部创建私有(private)变量?