GeeksforGeeks

main()の次の二つの定義を考えてみましょう。

intmain()
main()
main()
main()
main()
int

return0;

0;

0;



および

intmain(void)
{
return0;
}



What is the difference?

In C++, there is no difference, both are same.

両方の定義はCでも機能しますが、voidを持つ第二の定義は、mainがパラメータなしでのみ呼び出すことができることを明確に指定しているため、技術的には優れていると考えられています。
Cでは、関数シグネチャが引数を指定していない場合、関数は任意の数のパラメータまたはパラメータなしで呼び出すことができることを意味します。 たとえば、次の2つのCプログラムをコンパイルして実行してみてください(ファイルを次のように保存してください。c)。 Fun()の2つのシグネチャの違いに注意してください。

voidfun() { }
intmain(void)
{
fun(10, "GfG", "GQ");
return0; div>

}



上記のプログラムはコンパイルされて正常に実行されます(しかし、次のプログラムはコンパイルに失敗します(これを参照)

voidfun(fun(fun(fun(fun(fun(fun(

) { }

intmain(main() { } intmain(main()

{
fun(10, "GfG", "GQ");
return0;
}



Unlike C, in C++, both of the above programs fails in コンパイル。 C++では、fun()とfun(void)の両方が同じです。違いは、Cでは、int main()は任意の数の引数で呼び出すことができますが、int main(void)は引数なしでのみ呼び出すことができるということです。 ほとんどの場合、違いはありませんが、”int main(void)”を使用することはCで推奨される方法です。

演習:
次のCプログラムの出力を予測します。

Question 1

#include <stdio.h>
intmain()
{
staticinti = 5;
if(--i){
printf("%d ", i);
main(10);
}
}



2

#include <stdio.h>
intmain(void)
{
staticinti = 5;
if(--i){
printf("%d ", i);
main(10);
}
}




コメントを残す

メールアドレスが公開されることはありません。