gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:07:42 24 4
gpt4 key购买 nike

我对将数组传递给函数有疑问。

考虑以下代码片段。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com