본문 바로가기

분류 전체보기131

C++ 기초 : 동적 할당 (2) 아래 코드를 보시죠. 오류로 실행이 되지는 않지만 만약 실행이 된다면 int형 변수 i에는 정상적인 값이 대입될까요?  위 코드를 그림으로 표현하면 아래와 같은 상황입니다. 2.1이 대입된 Heap 영역 공간의 값을int형 변수 i가 받으려고 하면 의도하지 않은 값이 대입될 것입니다. 이처럼 동적 할당된 공간은선언될 때 어떤 자료형으로 사용될 것인지 정하지 않기 때문에어떤 자료형으로든 사용될 수 있다는 것이 특징입니다. 애초에 선언하면서 어떤 자료형으로 사용할 것인지정하는 일반적인 변수 형태와는 다르죠.     동적 할당은 두 가지 특징이 있죠. 1. 런타임 중에 대응 가능하다.2. 사용자(프로그래머)가 직접 관리해야 한다.(할당한 메모리를 직접 해제해.. 2024. 4. 6.
C++ 기초 : 동적 할당 (1) 지역 변수는 메모리의 Stack 영역에,전역, 정적, 외부 변수는 메모리의 Data 영역에 있습니다. 그럼 Heap 영역은 무엇을 위한 공간일까요? 바로 동적 할당을 위한 공간입니다. 변수는 미리 코드에 선언하고 프로그램을 실행합니다.프로그램이 실행되기 전부터 애초에 특정 공간에 값이 이미 들어가 있죠. 동적 할당은 "프로그램이 실행되는 도중에(런타임)이 공간이 사용될 수 있어요."라고 지정만 해주는 겁니다. 즉 프로그램을 실행하고 있을 때, 이렇게 동적 할당된 공간을사용하는 동작이 없으면 공간에 값이 들어가지 않습니다. 사용하게 되면 지정한 그 공간을 사용하게 되죠.  아래 코드가 동적 할당을 한 경우입니다. malloc 함수를 사용하여 동적 할당을 할 수 있.. 2024. 4. 4.
C++ 기초 : 구조체 포인터 구조체 포인터에 대해 알아보기 전에먼저 구조체부터 짧게 알아보죠.  아래 코드를 보면 구조체가 있습니다.  형태는 int형 멤버 a와 float형 멤버 f가 있습니다.자료형은 MYST입니다. 이 구조체를 통해 MYST형 변수 s와 MYST형 변수 s2를 선언하였습니다.  여기서 주의할 점은 멤버 a와 f는 변수가 아닌 멤버라는 점입니다. 위 그림처럼MYST는 자료형이고 변수는 s와 s2입니다.이 s와 s2 각각에 속해 있는 a와 f는 멤버이죠.즉 MYST는 자료형 변수 s에 int형 멤버 a와 float형 멤버 f가 있고,MYST는 자료형 변수 s2에 int형 또 다른 멤버 a와 float형 멤버 f가 있는 겁니다.       코드를 통해 구조.. 2024. 4. 4.
C++ 기초 : wcscmp 함수 wcscmp 함수는 두 개의 문자열을 비교합니다.그리고 같으면 0, 왼쪽이 우열이 높으면 -1, 오른쪽이 우열이 높으면 1을 반환합니다. 여기서 우열이 높다라는 것은 사전순으로 따져보았을 때먼저 오는 것이라는 의미이죠.  아래 코드를 보시죠. 문자열 "abc" 두 개를 비교하였을 때 0을 반환합니다. 문자열 "abc"와 "bbc"를 비교하였더니 -1을 반환하네요.사전순으로 보았을 때 a가 더 먼저이므로 왼쪽 문자열이 우열이 높다고판단하였고 -1을 반환하는 모습입니다. 문자열 "bbc"와 "abc"를 비교하였더니 1을 반환하네요.사전순으로 보았을 때 a가 더 먼저이므로 오른쪽 문자열이 우열이 높다고판단하였고 1을 반환하는 모습입니다.  그럼 길이가 다른 경우는 어떨.. 2024. 4. 4.
C++ 기초 : 문자열 (4) 이번에는 문자열을 이어 붙이는 함수를 다루어 보겠습니다. 해당 기능을 하는 함수 wcscat_s입니다. 세 개의 인자를 받습니다. 첫 번째는 인자는 목적지, 즉 이어 붙여질 문자열이죠. const가 붙지 않는 이유는문자열이 수정되어야 하기 때문이겠죠? 두 번째 인자는 크기입니다. 이어 붙여질 문자열은 배열 형식일테고,이 배열의 크기가 얼마나 있는지 알려주는 것입니다.대입할 문자열이 너무 길어, 이어 붙여질 문자열이 들어가 있는배열의 크기를 넘으면 오류를 표시할 것을 예상해 볼 수 있습니다.  세 번째 인자는 소스, 즉 대입할 문자열입니다. const가 붙는 이유는대입할 문자열은 수정될 필요가 없기 때문이죠.  그럼 wcscat_s 함수를 이용해서 문자열을 이어 보겠습니.. 2024. 4. 3.
C++ 기초 : 문자열 (3) 문자열의 길이를 반환해 주는 함수로는 'wcslen'가 있습니다. 이것을 직접 구현해 볼까요? 아래 코드를 보시죠. 기본으로 제공되는 함수 wcslen과 같은 기능을 하는함수 GetLength를 만들었습니다. 반환 타입을 unsigned int로 설정했습니다. 이유는 문자열의 길이를 반환하는 함수이므로 음수가 나오면 안되기 때문이죠. 함수 GetLength는 const wchar_t형 포인터 변수를 요구합니다.문자열의 내용을 확인하기 위해 포인터 변수를 통해 문자열의 주솟값을 저장하고,문자열의 값을 수정하지 않는다는 것을 의미하기 위해서 const를 붙였습니다. 그리고 int형 변수 i를 선언하였습니다. i는 문자가 있다는 것이 확인될 때마다1씩 증가하며 함수가 종료되면.. 2024. 4. 3.