我对将数组传递给函数有疑问。
考虑以下代码片段。
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] 是一个自动变量,它应该在它从主函数中出来时死掉并且它应该给出意想不到的结果(指针应该是悬空的)。但它工作正常。
我对此感到非常困惑,请您清除它。
即使我们将单个元素int a
作为传递f(&a)
,它也不应该存在于函数 f 中,如果它被声明为自动(主函数中的局部变量)。
请也清除这一点。