Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C에서 int main과 int main(void) 함수 구별하기

<시간/>

int 기본 프로그램 실행이 끝날 때 함수가 '0'이라도 정수를 반환함을 나타냅니다. '0'은 프로그램의 성공적인 실행을 나타냅니다.

int main의 구문은 다음과 같습니다 -

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