본문 바로가기
개발/C, C++

[c/c++] main 함수

by 77monkey 개발자 2023. 8. 14.
반응형

main 함수는 프로그래밍을 공부하면 처음 만나는 함수이다. 
main, 이름에서 주는 느낌이 바로 이 함수의 역할이다. 
main 함수에 대한 내용은 아래 사이트에서 잘 설명해 주고 있다.
main 함수 및 프로그램 실행 | Microsoft Learn

main 함수 및 프로그램 실행

자세한 정보: main 함수 및 프로그램 실행

learn.microsoft.com

 
main 함수는 entry point에 기본적으로 설정이 되어 있기 떄문에 처음으로 호출되는 함수가 된다. 

int main( void );
int main( int argc, char *argv[ ] );

보통 이렇게 2가지 경우를 많이 쓰게 되는데, 
일반적으로 코딩테스트를 위한 코드를 작성할 때에는 1번째 형태를 많이 쓰고, 
작은 프로그램을 만드는데 인자를 추가해 줄 때에는 2번째 형탤르 많이 쓴다.
main()를 검색하게 되는 이유는 보통 한가지인 것 같다. 
바로 2번째 형태 때문이다. 

argc: 실행 단위 개수
argv: 실행 단위 문자열
#include <stdio.h>

int main(int argc, char *argv[])
{
	//argc: 실행 단위 개수
	//argv: 실행 단위 문자열
	for (int i = 0; i < argc; i++)
	{
		printf("%s\n", argv[i]);
	}

	return 0;
}

 위 코드는 실행되는 문자열을 차례대로 출력하는 것인데, 실행파일 외에는 인자를 주지 않아서, exe 실행파일만 출력된다.
예를들면 test로 visual studio에서 프로젝트를 만들었다면, 
위 코드로 빌드를 하면 실행되는 결과는 아래와 같다.

//결과
/* 경로 */test.exe

그러면 인자를 넣어서 test를 하고 싶을 떄에는 어떻게 해야할까? 
바로 출력으로 나온 경로(exe가 있는 경로)로 가서, 폴더 내에서 "shift + 우클릭"를 하면 된다.

거기에서 "여기에 PowerShell 창 열기"를 선택하면 창이 하나 뜬다.
아니면 시작 프로그램에서 cmd를 실행시켜서 "cd {실행파일 경로}"를 입력하여 이동한다. 
원하는 인자들을 아래와 같이 넣어주면,,

./test.exe 1 2 3

argc는 4가 되고, 
argv는 "{경로}\test.exe", "1", "2", "3" 이 된다. 
보통은 argv[0]이 실행파일을 의미하기 때문에 argv[1]부터 사용한다. 
결과를 보면 아래와 같다.

/*경로*/ \Project1.exe
1
2
3

이 내용을 몰라서 한 번 곤혹스러웠던 적이 있었다. 
visual studio로 프로그램을 만들었다고 하는데 어떻게 동작하는지 이해를 못했었기 때문이다. 
혹시나 나같은 사람이 있다면, 도움이 되었으면 좋겠다. 
아, 물론 요즘에는 파이썬으로 많이 간단한 프로그램은 만들어서 이런 일을 겪을 일이 없을지도 모르겠다.

반응형

'개발 > C, C++' 카테고리의 다른 글

[c/c++] for문 (2)  (1) 2023.08.16
[c/c++] for문  (0) 2023.08.16
[c/c++] if 문  (0) 2023.08.14
[c/c++] 제어문 조건  (0) 2023.08.14
[c/c++] 전처리지시자  (0) 2023.08.10