C++87 C++ 기초 : 리스트 (1) Linked List(연결형 리스트)라는 것이 있습니다. 동적 할당 공간이 필요할 때마다 공간 하나를 할당합니다.일단 필요한 공간을 배열 형식으로 할당하는 가변 배열과는 다르죠. Linked List는 할당될 때마다 이전 공간과 다음 공간을 연결해 줍니다.이전 공간에 다음 공간의 주솟값을 저장하고 있는 것이죠. 이러한 공간을 각각 Node(노드)라고 부릅니다. Linked List를 구조체로 구현을 해 봅시다. LinkedList.h 파일에 구조체와 함수를 선언할 것이고LinkedList.cpp 파일에 함수를 정의할 것입니다. LinkedList.h 파일에 두 개의 구조체를 선언하였습니다. 먼저 구조체 _tagList를 살펴 보죠. .. 2024. 4. 7. C++ 기초 : 가변 배열 (3) 동적 할당된 공간에 새로운 데이터를 넣으려고 합니다. 근데 해당 공간이 꽉 차서 공간을 늘려줘야데이터를 넣을 수 있는 상황입니다. 이 공간을 늘려주는 함수를 만들어 보죠. 아래와 같은 상황에서 pInt가 가리키고 있는 heap 영역의 공간에서1번 인덱스 뒤에 공간을 추가하는 게 가능할까요? 불가능합니다. 1번 인덱스 뒤에 주솟값은 5008번지겠죠? 그곳엔 어떤 데이터가 들어있을지 모릅니다. 그래서 무작정 1번 인덱스 뒤에 공간을 사용하려고 하면프로그램 전체적으로 봤을 때 문제가 생길 수 있죠. pInt를 통해서 5008번지에 1000을 넣으려고 했는데그 공간이 '몬스터의 체력'으로 사용되고 있는 공간이라면3.14의 값이어야 하는 몬스터의 체력이 갑자기 .. 2024. 4. 7. C++ 기초 : 가변 배열 (2) Arr.h 파일에서 가변 배열(int형)을 위한 구조체 tArr을 선언하였습니다. 멤버는힙 영역 공간의 주솟값을 받을 수 있도록 int형 포인터 변수 pInt와현재 값이 들어가 있는 배열의 개수를 나타내는 변수 iCount,현재 할당된 배열의 최대 개수를 나타내는 변수 iMaxCount입니다. 이후 main.cpp에서 tArr 자료형을 가진 객체를 초기화하려고 하였는데초기화할 때마다 멤버 하나씩 값을 지정해주어야 하네요. 차라리 초기화를 해 주는 함수를 따로 구현하는 게 나아 보입니다. 객체를 초기화하기 위한 함수의 선언을 Arr.h 파일에 해주고 정의는 Arr.cpp 파일에 했습니다. 객체의 주솟값을 받아 멤버에 직접 접근할 수 있게 합니다... 2024. 4. 6. C++ 기초 : 가변 배열 (1) 아래 코드처럼 배열을 선언할 때, 배열의 개수를 정하기 위한 대괄호 안에변수를 넣을 수 없는 이유는 무엇일까요? a는 변수이기 때문에 값이 변할 수 있고 이것을컴파일러가 미리 예상해서 메모리 공간을 할당하는 것은불가능하기 때문이죠? 만약 아래 코드처럼 scanf 함수를 통해 a의 값을정할 수 있어 100을 입력했다고 합시다. 100을 입력하는 동작은 런타임 중에 발생합니다.근데 이것을 런타임 전 컴파일 과정에서 예상하고 미리 400Byte(int형 배열이 100개)의 공간을 할당할 수 없겠죠? 구조체의 경우도 같습니다. 구조체도 사용자 정의 자료형이라는 것 외의는 일반 자료형과 다르지 않기 때문이죠. Instance(객체)라는 개념이.. 2024. 4. 6. C++ 기초 : 동적 할당 (2) 아래 코드를 보시죠. 오류로 실행이 되지는 않지만 만약 실행이 된다면 int형 변수 i에는 정상적인 값이 대입될까요? 위 코드를 그림으로 표현하면 아래와 같은 상황입니다. 2.1이 대입된 Heap 영역 공간의 값을int형 변수 i가 받으려고 하면 의도하지 않은 값이 대입될 것입니다. 이처럼 동적 할당된 공간은선언될 때 어떤 자료형으로 사용될 것인지 정하지 않기 때문에어떤 자료형으로든 사용될 수 있다는 것이 특징입니다. 애초에 선언하면서 어떤 자료형으로 사용할 것인지정하는 일반적인 변수 형태와는 다르죠. 동적 할당은 두 가지 특징이 있죠. 1. 런타임 중에 대응 가능하다.2. 사용자(프로그래머)가 직접 관리해야 한다.(할당한 메모리를 직접 해제해.. 2024. 4. 6. C++ 기초 : 동적 할당 (1) 지역 변수는 메모리의 Stack 영역에,전역, 정적, 외부 변수는 메모리의 Data 영역에 있습니다. 그럼 Heap 영역은 무엇을 위한 공간일까요? 바로 동적 할당을 위한 공간입니다. 변수는 미리 코드에 선언하고 프로그램을 실행합니다.프로그램이 실행되기 전부터 애초에 특정 공간에 값이 이미 들어가 있죠. 동적 할당은 "프로그램이 실행되는 도중에(런타임)이 공간이 사용될 수 있어요."라고 지정만 해주는 겁니다. 즉 프로그램을 실행하고 있을 때, 이렇게 동적 할당된 공간을사용하는 동작이 없으면 공간에 값이 들어가지 않습니다. 사용하게 되면 지정한 그 공간을 사용하게 되죠. 아래 코드가 동적 할당을 한 경우입니다. malloc 함수를 사용하여 동적 할당을 할 수 있.. 2024. 4. 4. 이전 1 ··· 5 6 7 8 9 10 11 ··· 15 다음