기본

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 25 [공용체와 열거형(union, enum)]

제 25강) 공용체와 열거형 오늘은 공용체(union)와 열거형(enum)에 대해서 알아보도록 합니다. 1) 공용체(union) 공용체의 사용법 자체는 구조체(struct)와 비슷합니다만 한 가지 다른 점이 있습니다. // 사용법 union 공용체_이름 { 자료형 변수이름; 자료형 변수이름; ... }; // 예) union Person { char* name; int age; char sex; }; 구조체 처럼 선언을 하고 사용하게 됩니다만 위에서 언급한대로 한 가지 다른 점이 있습니다. 바로 공용체는 내부의 자료들이 메모리를 공유한다는 것이지요. #include struct STRUCT1 { double d_num; int i_num; char ch; } union UNION1 { double d_n..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 27 [C언어의 파일 입출력2]

제 27강) C언어의 파일 입출력2 파일 입출력의 두번째 시간입니다. 4) 무작위 접근(fseek, ftell) 먼저 fseek 함수부터 살펴보겠습니다. 원형: int fseek ( FILE * stream, long int offset, int origin ); // 스트림, 위치, 위치가 시작되는 fseek 함수는 해당 스트림의 위치 지정자를 지정된 위치로 옮기는 역할을 하는데요. 이 fseek 함수는 3가지의 인수를 필요로 합니다. 무작위로 접근할 스트림(stream)과 해당 스트림의 접근이 시작될 위치(origin), 그리고 그 위치(origin)로 부터 얼마나 떨어져 있는지에 대한 정도(offset)가 들어가게 됩니다. 반환 값은 성공적으로 접근했을 시 0, 그게 아닐 시에는 0이 아닌 값을 반..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 24 [구조체와 형식 정의 지정자(struct, typedef)]

제 24강) 구조체와 형식 정의 지정자 오늘은 C언어에서 포인터만큼 많이 쓰이는 구조체와 형식 정의 지정자에 대해서 알아봅니다. 1) 형식 정의 지정자(typedef) 형식 정의 지정자는 말 그대로 "형식을 정의하는 지정자(별칭자)" 입니다. 자료형의 별명을 지어줄 수 있다. 라고도 설명할 수 있습니다. // 사용법 typedef 자료형 별명; // 예) typedef int INT; typedef char* STRING; typedef int* Int_Ptr; 사용법은 위와 같습니다. 자료형의 이름을 별명으로 부르게 됩니다. 간단한 예제를 통하여 익혀봅시다. #include #include typedef int* Int_Arr; // int* == Int_Arr typedef char* String; ..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 26 [C언어의 파일 입출력1]

제 26강) C언어의 파일 입출력1 오늘은 아마 가장 긴 강좌가 될지도 모르는 "파일 입출력"에 대해서 알아보겠습니다. (입출력 = 입력 + 출력) C언어에서의 파일 입출력은 정말 중요합니다. C++언어에서도 성능 때문에 C언어의 파일 입출력을 종종 사용하지요. 1) 파일과의 통신(FILE) 파일과의 통신을 하기 위해서는 "어떻게 사용할 수 있느냐" 라는 의문을 가져야 합니다. 크게 우리는 2가지 측면에서 접근할 수 있습니다. ① 바이너리(Binary) 적인 접근 ② 텍스트(Text) 적인 접근 바이너리적으로 접근을 하게 되면 우리는 모든 바이트를 가지고 프로그램에서 사용할 수 있습니다. 이것은 어떤 시스템에서든지 동일하게 사용이 가능하죠. 텍스트적으로 접근을 하게 되면 텍스트단위를 가지고 프로그램에서 ..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 23 [메모리 구조와 메모리 할당, 배열 동적할당(malloc, realloc, calloc, free)]

제 23강) 메모리 구조와 메모리 할당 오늘은 메모리 구조와 메모리 할당에 대해서 알아보는 시간입니다. 1) 메모리 구조 우리는 지금까지 변수를 써오면서 "메모리 공간에 할당"된다고 배웠습니다. 그럼 이 메모리는 어떠한 구조로 이루어져 있는가에 대해 고찰해봅시다. 메모리의 구조는 위의 그림과 같은 4가지 영역으로 나뉘어있습니다. 코드 영역(Code Area) 코드가 있는 영역으로 실행하는 프로그램의 코드에 관련된 명령들이 있는 영역입니다. 데이터 영역(Data Area) 프로그램이 생성되었을 때 생성되고, 종료되었을 때 사라지는 데이터가 저장됩니다. (전역 변수, 혹은 정적 변수, 배열, 구조체 등이 저장됩니다.) 힙 영역(Heap Area) 사용자에게 할당되는 영역으로 직접 관리하는 영역입니다. 동적으..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 22 [다차원배열2 - 다차원배열과 포인터, 이중 포인터, 다중 포인터]

제 22강) 다차원배열2 - 다차원배열과 포인터 오늘은 다차원배열의 두번째 시간으로 다차원배열과 포인터의 관계에 대해서 알아봅니다. 다시 한번 되짚어 보자면 다차원배열은 2차원 이상의 배열을 다차원이라고 합니다. 1) 다차원 배열 다음과 같은 2차원배열이 있다고 합시다. int arr[2][2]; 여기서 "arr"는 2차원배열로 선언된 배열의 이름이자 배열의 첫번째 원소의 주소(번지)를 나타냅니다. (1차원배열에서와 같습니다.) #include int main() { int arr[2][2]; printf("arr = %u\n", arr); printf("arr[0] = %u\n", arr[0]); return 0; } 그래서 번지수가 똑같습니다. (그러므로 arr은 &arr[0]과 같습니다.) 여기까지..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 21 [다차원배열1 - 다차원배열의 기본(2차원, 3차원)]

제 21강) 다차원배열1 - 다차원배열의 기본 오늘은 다차원배열의 첫 시간으로 다차원배열의 기본에 대해서 알아봅니다. 다차원배열은 2차원 이상의 배열을 다차원이라고 합니다. 1) 다차원 배열이란 일반적인 배열은 이렇게 1차원적인 배열을 뜻합니다. (가로로만, 혹은 세로로만, x로만) 여기서 더 나아가서 다차원배열은 1차원을 넘어서는 배열을 뜻합니다. (가로와 세로, x와 y) 위의 배열은 대표적인 2차원배열입니다. 세로로3, 가로로7인 배열이죠. 2) 2차원배열 가장 많이 쓰이는 배열은 1차원배열입니다. 그리고 그 다음으로 쓰이는 배열은 2차원배열입니다. 즉, int arr[3][2]로 선언된 2차원배열은 [0][0], [0][1], [1][0], [1][1], [2][0], [2][1] 총 3x2 2차..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 19 [문자열]

제 19강) 문자열 17강과 18강에서 우리는 포인터와 배열을 배웠습니다. 이제 우리는 문자열을 배울 차례입니다. 1) 문자열 문자열은 "문자(기호)를 모아놓은 것"을 뜻합니다. C언어에서 문자열을 표현하는 방법은 2가지가 존재합니다. char str[] = "Back In Time"; // char 배열을 이용한 문자열 표현 char* str = "Back In Time"; // char 포인터를 이용한 문자열 표현 2) char 배열을 사용한 문자열 일반적으로 문자열을 저장할 때 char 배열을 이용하여 문자열을 저장합니다. #include int main() { char str[30] = {0,}; // 문자열의 최대 길이는 30 printf("문자열 입력: "); scanf("%[^\n]s", s..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 18 [배열과 포인터]

제 18강) 배열과 포인터 오늘은 배열을 배우고 포인터를 한 번 더 배웁니다. 포인터와 배열은 일심동체이기 때문이죠. 1) 변수의 집합, 배열 배열은 변수의 집합입니다. int num1, num2, num3; 이렇게 변수 3개를 따로따로 선언했던 것을 int arr[3]; 배열은 한 번에 선언을 가능케 합니다. 자료형 배열이름[배열의_크기]; 자료형 배열이름[배열의_크기] = { 초기값 }; 배열은 위와 같이 변수처럼 선언을 하지만 중괄호 사이에 배열의 크기를 지정하게 됩니다. int arr[3]; int arr[3] = { 1, 2, 3 }; 이렇게 사용이 가능케 됩니다. 이렇게 배열을 선언하게 되면 "배열의 크기"만큼 변수가 선언되지만 그 시작은 0부터 입니다. int arr[3]; // -> arr..

Study/C언어

처음하시는 분들을 위한 C언어 기초강의 시즌2 - 17 [포인터]

제 17강) 포인터(Pointer) 오늘은 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 정말 중요한 시간입니다. 바로 포인터에 대해서 배우는 시간이기 때문이죠. 1) 공포의 대상, 포인터 C언어에서 가장 공포스럽다고 느껴지는 대상인 포인터입니다. 포인터란? (출처 : 위키백과) 포인터는 다른 변수, 혹은 그 변수의 메모리 공간주소를 가리키는 변수를 말한다. 이때 포인터가 가리키는 값을 가져오는 것을 역참조(Dereferencing)라고 한다. 위의 설명은 "위키페디아"에 나온 설명입니다. 사실 정말 잘 설명되어있습니다. 하지만 이게 무슨 말인가 라고 하시는 분들이 많으시겠죠. 우리는 "4강 변수"에서 변수에 대해서 배울때 다음과 같이 배웠습니다. 변수는 "어떤 데이터를 저장하는 메모리 공간..

Eskeptor
'기본' 태그의 글 목록 (2 Page)