関数への配列の受け渡しについて疑問があります。
次のコード スニペットを検討してください。
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)
、automatic (main 関数のローカル変数) として宣言されている場合は、関数 f に存在してはなりません。
これもクリアしてください。