我对将数组传递给函数有疑问。
考虑以下代码片段。
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/