Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cでintmain関数とintmain(void)関数を区別する


int main プログラム実行の最後に、関数が「0」でさえ整数を返すことを表します。 「0」は、プログラムの正常な実行を表します。

intmainの構文は次のとおりです-

int main(){
   ---
   ---
   return 0;
}

int main(void) 関数が引数を取らないことを表します。角かっこでvoidを保持しない場合、関数は任意の数の引数を取ると仮定します。

int main(void)の構文は次のとおりです-

int main(void){
   ---
   ---
   return 0;
}

実際には、どちらも同じように見えますが、int main(void)は、mainはパラメーターなしでのみ呼び出すことができると明確に述べているため、技術的に優れています。

一般に、C言語では、関数のシグネチャで引数が指定されていない場合、つまり、関数は任意の数のパラメーターを使用して、またはパラメーターを使用せずに呼び出すことができます。

同じロジックを使用して、両方の関数のコードを実装しましょう。唯一の違いは、これらの関数の構文です。

例1

以下に、引数なしのint main()関数のCプログラムを示します-

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main(10);
   }
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます-

after decrement a =9
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0

例2

以下に示すのは同じプログラムですが、int main(void)関数を使用しています-

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main(10);
   }
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます-

error

int main()とint main(void)に同じコードを書くと、エラーが発生します。これは、voidが関数がパラメーターを受け取らないことを示しているために発生します。

したがって、上記の例のmainの引数10を削除して、コンパイルしてみてください。したがって、修正後、上記のコードは次のようになります-

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main();
   }
   return 0;
}

出力

上記のプログラムを実行すると、次の結果が得られます-

after decrement a =9
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0

  1. C++での仮想関数と純粋仮想関数の違い

    次の表に、仮想機能と純粋仮想機能の違いを示します。 仮想関数 純粋仮想関数 仮想関数の定義はクラスにあります。 純粋仮想関数には定義がありません。 宣言:virtual funct_name(parameter_list){。 。 。 。 。}; 宣言:virtual funct_name(parameter_list)=0; 派生クラスの概念はありません。 クラスに少なくとも1つの純粋仮想関数が含まれている場合、そのクラスは抽象として宣言されます。 必要に応じて、基本クラスは仮想関数をオーバーライドできます。 純粋仮想関数の場合、

  2. Pythonのメソッドと関数の違い

    機能 関数は、特定のタスクを実行するためのコードのブロックであり、独自のスコープを含み、名前で呼び出されます。すべての関数には、ゼロ(no)引数または複数の引数を含めることができます。終了時に、関数は1つ以上の値を返すことができる場合とできない場合があります。 基本的な関数構文 def functionName( arg1, arg2,….):    …….    # Function_body    …….. 独自の(ユーザー)、sum(ユーザーは任意の名前を