2. 기본적인 선언
C 컴파일러를 만들려는 우리인 만큼 C에서 변수 및 함수를 정의하는 형태는 모두 알고 있을 것이라고 생각한다.아래 예제를 올바르게 이해하고 활용할 수 있는 정도라면 된다.
01_c_declarations.cpp |
#include <iostream> using namespace std; // 함수의 선언 int sum(int a, int b); int mul(int a, int b); int main(void) { // int형 변수의 선언과 사용 int int_var; int_var = 10; cout << "변수: " << int_var << endl; // int형 변수의 배열의 선언과 사용 int int_arr[3]; int_arr[0] = 5, int_arr[1] = 2, int_arr[2] = 3; cout << "배열: "; for (int i = 0; i < 3; ++i) cout << int_arr[i] << ' '; cout << endl; // int형 포인터 변수의 선언과 사용 int *int_ptr; int_ptr = &int_var; *int_ptr = 20; cout << "포인터: " << *int_ptr << endl; // int형 변수의 2차원 배열의 선언과 사용 int int_arr2d[2][3] = { // 2행 3열의 행렬로 생각하면 편하다 { 1, 2, 3 }, { 4, 5, 6 } }; cout << "2차원 배열: " << endl; for (int r = 0; r < 2; ++r){ for (int c = 0; c < 3; ++c) { cout << int_arr2d[r][c] << ' '; } cout << endl; } // int형 포인터 변수에 대한 포인터 변수 // 즉 int형 더블 포인터의 선언과 사용 int **dptr = &int_ptr; **dptr = 30; cout << "더블 포인터: " << **dptr << endl; // int형 변수 두 개를 인자로 받고 // int형 값을 반환하는 함수에 대한 포인터 선언 int(*fptr)(int, int); fptr = sum; cout << "fptr = sum; fptr(3, 5): " << fptr(3, 5) << endl; fptr = mul; cout << "fptr = mul; fptr(3, 5): " << fptr(3, 5) << endl; return 0; } int sum(int a, int b) { return a + b; } int mul(int a, int b) { return a * b; } |
필자가 공부했던 책에서는 포인터의 배열과 배열에 대한 포인터와 같은 내용도 가르쳤으나, 이에 대해서는 바로 다음에 C 프로그래밍 언어의 선언 방식을 설명하면 이해할 수 있는 내용이므로 먼저 알고 있을 필요는 없다.