[CS] 명령행 인자(Command line arguments)

hee.moon·2022년 9월 7일
0

Computer Science

목록 보기
10/15
post-thumbnail
/* 모두를 위한 컴퓨터 과학(CS50 2019) 정리본입니다. */

main도 하나의 함수이다


그동안 기계적으로 써온 main 함수 내의 void는 무슨 의미인지 찾아봤다. void는 자료형이다. int main()이라고 작성하면 정수형 값을 돌려주겠다는 의미처럼, void는 C에서 파생된 여러 언어에서 정상적으로 반환하지만 호출자에게 결과값을 제공하지 않는 함수의 결과를 위한 타입이다. 굳이 리턴해줄 필요가 없을 때 사용하는 자료형인 것이다. return을 생략하거나 return;만 작성해도 된다.

이번 강의에서는 void 대신 argc, argv를 사용해서 main 함수를 자세히 살펴보는 시간을 가졌다.

#include <cs50.h>
#include <stdio.h>

int main(int argc, string argv[])
{
	if (argc == 2)
    {
    	printf("hello, %s\n", argv[1]);
    }
    else
    {
    	printf("hello, world\n");
    }
}

여기서 argc는 main 함수가 받게될 입력의 갯수이다. 그리고 argv[ ]는 입력이 포함되어 있는 배열이다. 프로그램을 명령행에서 실행하므로, 입력은 문자열로 주어진다. 따라서 argv[ ]는 string 배열이 된다.

C언어 프로그램을 실행할 때 clang 또는 make라는 명령어를 입력함으로써 프로그램을 컴파일한다. 이때 추가 인자를 넣을 수 있다. 이걸 명령행 인자라고 부른다. 명령어를 칠 때 직접 인자를 넣을 수 있다는게 신기했다.

기본적으로 argv[0]에는 프로그램의 이름이 저장된다. 그래서 하나의 입력이 더 주어진다면 argv[1]에 저장된다.

컴파일 후 ./argc 실행 결과

hello, world

컴파일 후 ./argc moon 실행 결과

hello, moon

argc를 3으로 하고 argc[2]로 바꾸면 아래와 같이 나온다.

profile
Frontend Engineer

0개의 댓글

관련 채용 정보