[C언어] - 메모리 할당
·
🖥 Language/C , C++
C언어에서는 "가비지 컬렉터"가 없기에 프로그래머가 직접 메모리 관리를 해주어야 합니다. 즉, 프로그래머가 데이터를 저장할 메모리 공간을 적절히 나누는 "메모리 할당" 작업을 진행해야 하는 것입니다. C언어에서의 메모리 할당 방법은 "정적 메모리 할당"과 "동적 메모리 할당" 이렇게 두 가지가 있습니다. 지금부터 C언어에서의 메모리 할당 방법에 대해서 알아보도록 하겠습니다. 메모리 구조 컴퓨터 운영체제는 여러 가지 정보나 사용자가 입력한 데이터를 기억하기 위한 메모리 공간을 제공하는데, 대표적인 메모리 공간으로는 "코드 영역(Code Segment)", "데이터 영역(Data Segment)", "스택 영역(Stack Segment)", "힙 영역(Heap Segment)"가 있습니다. 코드 영역 (Co..
[C언어] - 구조체
·
🖥 Language/C , C++
C언어에는 다양한 자료 타입들이 있습니다. 정수형(int), 실수형(float, double), 문자형(char), 그리고 short, long 등등 여기에 부호를 결정하는 자료 타입(unsigned)까지 C언어는 생각보다 많은 자료 타입을 가지고 있습니다. 그런데 여러 자료들을 한 번에 저장하고 싶으면 어떻게 해야할까요? 이때 "구조체"라는 것이 사용됩니다. 지금부터 구조체에 대해서 알아보도록 하겠습니다. typedef 키워드 typedef 키워드는 Type Define의 줄임말로, "타입을 정의하겠다"는 뜻입니다. 이러한 문법이 필요한 이유는 기존의 자료형 중 길이가 긴 표현들을 짧게 표현할 수 있기 때문입니다. 예를 들어 unsigned long long int 같은 자료형을 typedef 문법을 ..
[C언어] - 배열과 포인터의 관계
·
🖥 Language/C , C++
우리가 지난 번에 배웠었던 배열과 포인터는 사실 밀접한 관계를 가지고 있습니다. 그것이 어떤 관계인지 이 포스팅을 통해서 알아보도록 하겠습니다. 배열과 포인터 표기법 포인터는 포인터가 가리키는 메모리의 시작 주소를 기준으로 삼고, 배열은 배열이 사용하는 메모리의 시작 주소를 기준으로 삼습니다. "각각의 자료형(포인터, 배열)들이 메모리의 시작 주소를 기준으로 삼는다" 이것은 배열과 포인터의 놀라운 공통점입니다. 그 말은 배열과 포인터 각각의 문법을 서로 교차해서 사용할 수 있다는 뜻이기도 합니다. // 배열의 표기법 char data[5]; data[1] = 5; // *(data + 1) = 5; 는 data[1] = 5와 100% 일치합니다. *(data + 1) = 5; // 포인터의 표기법 cha..
[C언어] - 포인터(Pointer)
·
🖥 Language/C , C++
사람들이 C언어를 공부할 때 가장 어려워하고 넘을 수 없는 장벽 같이 느끼는 부분이 바로 "포인터"입니다. 사실 포인터도 개념을 잘 이해하면 큰 무리 없이 배울 수 있습니다. 지금부터 포인터에 대해서 자세히 알아보도록 하겠습니다. 포인터(Pointer) 포인터도 마찬가지로 "특정한 값을 가지는 변수입니다." 그 특정한 값은 바로 "주소값" 입니다. 포인터는 특정한 데이터의 주소값을 저장하는 변수입니다. 포인터를 정확히 이해하기 위해서는 컴퓨터가 메모리 주소를 어떻게 지정하는지 알아야 합니다. 여기에는 "직접 주소 지정 방식"과 "간접 주소 지정 방식" 이렇게 2가지 방식이 존재합니다. 직접 주소 지정 방식: 말 그대로 메모리를 사용할 때 프로그래머가 사용할 메모리 주소를 직접 적는 방식입니다. 간접 주소..
[C언어] - 배열(Array)
·
🖥 Language/C , C++
C언어가 아니더라도 대부분의 프로그래밍 언어에서는 "배열"을 지원합니다. 그만큼 중요한 개념이며 많이 쓰이는 개념 중 하나입니다. 배열에 대한 구체적인 이해는 프로그래밍 언어에 대한 이해도를 한층 높여주며, 배열 자료구조는 프로그래머로서 반드시 확실하게 습득하고 넘어가야 합니다. 지금부터 C언어를 활용한 "배열"에 대해서 알아보도록 하겠습니다. 배열(Array) 배열의 정의 배열은 짧게 말해 "같은 자료형의 변수들로 이루어진 집합"입니다. 배열을 선언하는 방법은 간단합니다. 변수를 선언하는 것과 비슷합니다. 다른 점이라면 [ ] 기호를 이용하여 저장 공간의 크기를 명시한다는 것입니다 . 이때, 저장 공간의 크기를 명시할 때는 반드시 "숫자 상수"여야 합니다. int student[20]; // int형 ..
loading