main 함수 해부하기 - 배열이란?

main 함수의 두번째 전달인자에 "[ ]"라는 코드를 봤던것 기억하시나요?
배열(Array)을 의미하는데요. 자세히 알아볼까요?



강의들은 모두 무료입니다. 단, 저작권은 키클 코딩랩 에 있으며, 무단 복제 및 배포를 엄금합니다.
이를 어길 시, 본 사이트의 서버가 미국에 있으므로, 미국법에 의해 처벌될 수도 있습니다.




배열(Array) 선언하기

원하는 폴더/디렉토리를 만들고 gedit 문서 편집기를 이용하여 "lec7_main.c"라는 이름의 C 파일을 만들어 볼게요. 그리고, 아래처럼 stdio.h을 포함시키고, main() 함수의 골격을 코딩해 보지요.

lec7_main.c
#include <stdio.h>

int main (int argc, char *argv[ ]) {

}

줄1에서 표준입출력 라이브러리의 헤더파일(stdio.h)을 포함시킨 것은 나중에 printf 함수를 이용하기 위함이랍니다.
자, 줄3을 보면 알겠지만, main() 함수의 두번째 전달인자가 "char *argv[ ]"라고 되어 있지요? "char"는 문자형 데이터타입을 의미한다는 것은 이미 공부하였고, "argv"는 전달인자 변수 이름일테고... 이제 알아야 하는 것은 "*"와 "[ ]" 두 가지이겠지요? 먼저 "[ ]"가 무엇을 의미하는지 알아보고 "*"는 다음으로 미루어 놓을게요.

"[ ]"는 배열(Array)을 의미하는 것이예요. 먼저, 배열에 대해서 알아볼게요.

[문법] 배열 (Array)





배열(Array) 사용하기

배열을 어떻게 생성하는지 알았지요?
그렇다면, 선언된 배열이 갖고 있는 값들에는 어떻게 접근하는지 알아볼까요?

[문법] 배열(Array)에 접근(Aceess)하기

이제, 배열을 어떻게 생성하고 어떻게 접근하는지 이해가 다 되었나요?
그럼, main() 함수의 두 번째 전달인자를 다시 한 번 볼게요. "char *argv[ ]"라고 코딩이 되어 있지요? "[ ]"를 갖고 있다는 것은, 이 전달인자가 argv라는 이름의 배열이라는 것을 의미한답니다. 그럼, 어떤 데이터타입의 배열이냐? 언뜻 보기에는 char(문자형) 배열을 의미하는 것처럼 보이지만, 정확히 말하면 "char *"라는 데이터타입의 배열을 의미한답니다. 이 새로운 데이터타입에 대한 설명은 다음으로 미룰게요. 궁금하겠지만, 조금만 참아주세요~

이제 배열을 직접 코딩해 볼까요? main() 함수 안에 아래 줄4~줄7과 같이 코딩해 보지요.

lec7_main.c
#include <stdio.h>

int main (int argc, char *argv[ ]) {
	int myarr1[3] = {-5, 1, 2};
	int myarr2[] = {-5, 1, 2};

	printf("Second element= %d, Third element=%d\n", myarr1[1], myarr2[2]);
}

줄4에서는 크기 3의 정수형 배열 myarr1를 배열의 값들과 함께 초기화 선언하고 있어요.
줄5에서도 줄4와 같은 값을 갖는 배열을 선언하는데, "[ ]"안에 배열의 크기를 생략하고 이름을 myarr2로 지었답니다.
줄7에서는 배열의 두번쨰와 세번째 요소의 값들을 printf()를 이용하여 출력하고 있지요. 정수형 배열을 선언했기 때문에 format specifier(서식 지정자)로 %d를 사용하고 있답니다. 그리고, 첨자(index)로 두번째 요소는 1을, 세번째 요소는 2를 사용했지요. 이처럼, C/C++는 첨자의 시작이 1이 아닌 0이라는 점 꼭 기억하세요.





컴파일 후 실행하기

이제, 강의 첫 대면..main 함수에서 했던 것처럼, 파일을 저장하고 gedit 편집기 닫기를 하세요.
그리고, 아래 줄1처럼 터미널에서 "gcc lec7_main.c"을 실행하여 컴파일하세요.

.../my_folder$ gcc lec7_main.c
.../my_folder$ ls
a.out  lec7_main.c
.../my_folder$

컴파일이 잘 되었다면, 줄2에서처럼 터미널 명령어 ls를 실행해 보세요. 줄3에서처럼, 컴파일 후 a.out이라는 실행파일이 생성된 것을 볼 수 있어요.

이제, 프로그램을 실행해 보지요.
아래 줄3에서와 같이 "./a.out"라고 명령하여 프로그램을 실행하면, 줄4와 같은 결과를 얻을 수 있답니다.

.../my_folder$ ls
a.out  lec7_main.c
.../my_folder$ ./a.out
Second element= 1, Third element=2
.../my_folder$

강의에서 작성된 소스 코드 (source code)를 다운받으려면, 다음 링크를 클릭하세요: lec7_main.c

혹시, 이해가 잘 안되는 부분에 대한 질문이 있거나 다루어 줬으면 하는 주제가 있으면, 화면 오른쪽 하단에 "질문하기" 버튼을 이용해 주세요.






발자취

2019-09-11 "키클 코딩랩 - 미국 공학박사 아빠의 코딩 연구소"로 이름 변경
2019-06-28 코딩 교실 공개
2019-03-18 코딩 교실 제작 시작

바로가기
Python 배움터
C/C++ 배움터
About
Contact
Privacy Policy
강의목록
질문하기
처음으로