전처리 지시자 C (1) 편에서 보았던 컴파일 과정을 다시 살펴보겠습니다.크게 3단계로 나뉘는 컴파일 과정에서 첫 번째 단계가 바로 전처리 과정입니다. 전처리는 전처리기(preprocessor)가 소스 코드를 컴파일하기 좋게 다듬는 과정으로, 소스 코드에서 #으로 시작하는 지시자를 처리하는 과정이기도 합니다. 지금까지 줄곧 사용한 #include, EOF, NULL 등에 대해 알아보겠습니다. #include #include는 지정한 파일의 내용을 읽어 와서 지시자가 있는 위치에 붙여 놓습니다. 붙여 넣을 파일명을 나 "" 로 묶는 방식으로 사용할 수 있습니다. 이 두 방식의 차이에 대해 알아보겠습니다. 를 사용하면 복사할 파일을 컴파일러가 설정한 include 디렉터리에서 찾고, "" 를 사용하면 소..
파일 개방과 입출력 파일 개방과 폐쇄 파일을 입출력하려면 먼저 어떤 용도로 사용할지를 결정한 후 원하는 데이터 파일을 하드디스크에서 찾아야 합니다. 이렇게 데이터를 입출력하기 전에 준비하는 과정이 파일 개방입니다. 또한 사용이 끝난 파일은 닫는 과정인 파일 폐쇄도 필요합니다. 이 두 과정 모두 함수 호출로 수행합니다. 이때 사용하는 함수가 fopen과 fclose 함수로 각각 file open과 file close를 의미합니다. #include int main(void){ FILE *fp; fp = fopen("a.txt", "r"); if (fp == NULL) { printf("파일이 열리지 않습니다.\n"); return 1; } printf("파일이 열렸..
구조체 앞서 배운 자료형 중 배열은 같은 형태의 데이터를 묶어 반복문으로 처리할 수 있는 훌륭한 자료형입니다. 그러나 배열을 사용하려면 모든 데이터의 형태가 같아야 합니다. 만약 다른 형태의 데이터를 하나로 묶어 단일 자료형으로 다룰 수 있다면 학생별로 데이터를 처리할 수 있고 반복문을 이용해 많은 학생의 데이터를 훨씬 효율적으로 처리할 수 있습니다. 이때 유용한 것이 바로 구조체입니다. 구조체는 다양한 자료형을 하나로 묶을 수 있는 복합 자료형으로 다양한 형태의 데이터를 처리할 때 기본으로 사용됩니다. 구조체 선언과 사용 구조체는 하나의 자료형으로 변수 선언이 가능하지만, 변수 선언 전에 꼭 필요한 절차가 있습니다. 구조체의 형태를 컴파일러에 미리 알려 주는 구조체 선언을 수행해야 합니다. 구조체 선언..
동적 할당 함수 프로그램에 필요한 메모리 저장 공간은 프로그램을 작성할 때 변수나 배열 선언을 통해 확보한다고 배웠습니다.int num; // 변수 공간 확보int arr[2]; // 배열 공간 확보 그런데 언제나 시작부터 변수나 배열 선언을 해서 저장 공간을 확보할 수 있는 건 아닙니다.때로는 프로그램 실행 중에 저장 공간을 할당해야 할 수도 있습니다. 이때 사용한 저장 공간은 실행 중에 재활용을 위해 반납해야 합니다. 이처럼 프로그램 실행 중에 저장 공간을 할당하는 것을 동적 할당이라고 합니다. malloc, free 함수 프로그램 실행 중에 메모리를 동적 할당할 때는 malloc 함수를, 반환할 때는 free 함수를 사용합니다. 이 함수들을 사용할 때는 stdlib.h 헤더 파일을 includ..
다차원 배열 2차원 배열 형태가 같은 배열이 여러 개 필요한 경우 이들을 모아 배열을 만들 수 있습니다. 이 배열을 2차원 배열이라고 합니다. 즉, 2차원 배열은 1차원 배열을 요소로 갖는 배열입니다. int arr[3][4];예를 들어 위와 같이 2차원 배열을 선언한다면 4는 1차원 배열 요소의 개수, 3은 1차원 배열을 요소로 가지는 2차원 배열 요소의 개수입니다. 즉, 2차원 배열은 1차원 배열을 여러 개 갖는 구조이므로 논리적으로 행과 열로 생각하면 됩니다.위 2차원 배열은 논리적으로 3행 4열의 행렬과 같은 구조를 가집니다.이때 각 행은 1차원 배열의 형태이며, 이를 2차원 배열의 "부분 배열"이라고 부릅니다.부분 배열은 2차원 배열의 하나의 요소로 간주되며, 배열명과 첨자를 사용해 접근합니다..
변수 사용 영역 여태까지 단순히 자료형 변수명; 으로 선언했던 것이 사실은 지역 변수를 뜻하는 auto라는 예약어가 생략된 문장이었습니다. 이밖에도 전역 변수, 레지스터 변수 등 다양한 변수 종류가 있습니다. 지역 변수 지금까지 써왔던 변수들이 지역 변수(local variable)입니다. 지역 변수는 범위가 함수 내, 즉 일정 지역에서만 사용하는 변수입니다. 본래 auto 예약어와 함께 함수 안에 지역 변수를 선언합니다. auto 예약어는 생략할 수 있으며 이 경우 함수 안에 선언된 변수는 자동으로 지역 변수가 됩니다. 지역 변수와 자동 변수(auto variable)은 같은 용어입니다. 지역 변수는 프로그램에서 가장 많이 사용되며 다음 2가지 특징을 갖습니다.지역 변수는 사용 범위가 블록 내부로 제한..