본문 바로가기

기초83

C++ 기초 : 분할 구현의 문제점 함수를 선언하는 헤더 파일과함수를 정의하는 소스 파일,그리고 함수를 사용하는 파일로 나누었습니다. 그러면 '굳이 함수의 선언과 정의를나누지 않고 헤더 파일에 다 넣으면 안될까?'라는생각이 듭니다. 하지만 이런 경우 문제가 발생합니다.  아래 그림처럼헤더 파일에 Add 함수의 선언과 정의를 모두 넣고 다른 파일에서 Add 함수를 사용하려면각 파일마다 #include를 써야 합니다.#include는 사실 복사 붙여넣기와 같습니다.즉 각 파일마다 Func.h의 내용을 복사해서 붙여넣는 것이죠.그렇게 되면 각 파일마다 Add 함수가 선언되고 정의되는 것입니다. 각각의 파일에서는 문제가 발생하지 않을지 몰라도결국 마지막에 하나의 파일로 합쳐질 때 Add 함수가 여러 개 선언.. 2024. 3. 22.
C++ 기초 : 분할 구현 아래와 같이 구현하면 오류가 발생합니다. 이유가 뭘까요?  하단에 표시되는 오류 목록에서코드를 보니 'C3861'입니다.오류 코드가 C로 시작하는 거 보니컴파일 과정에서 발생하는 오류네요.Test 식별자를 찾을 수 없다고 합니다.  컴파일러는 위에서부터아래로, 순차적으로컴파일을 진행합니다. main 함수에서 Test 함수를 호출했는데Test 함수를 호출하기 전, 위 코드에서Test 함수를 검사한 적이 없습니다.물론 main 함수 밑에 Test 함수가 정의되어 있지만,Test 함수 호출 시점에서는 정의되었는지 모르기 때문에오류가 발생하는 것이죠.  그렇다면 이번에는 이렇게 해볼까요? main 함수 위에 void Test(); 라는 코드를 넣었습니다... 2024. 3. 6.
C++ 기초 : 지역 변수 / 전역 변수 변수의 종류는 여러 가지 있습니다. 1. 지역 변수2. 전역 변수3. 정적 변수(static) 4. 외부 변수(extern)  변수가 할당되는 메모리 영역도 다양하죠. 1. 스택 영역2. 데이터 영역3. 읽기 전용(코드, ROM)4. 힙 영역     지역 변수는 스택 영역에 존재합니다. main 함수가 시작되면 main 함수 안에 있는 변수,main 함수에서 A 함수를 호출하면 A 함수 안에 있는 변수 등지역 변수는 함수와 함께 존재하기 때문에 스택 영역에 있으며함수가 사라지면서 같이 소멸되는 특징이 있죠. 아래와 같은 코드가 있습니다.void Test(){ int i = 0; ++i;}int main(){ Test(); Test(); .. 2024. 3. 5.
C++ 기초 : 구조체 C와 C++에서는 구조체(Struct)라는 키워드를 제공합니다.구조체는 사용자 정의 자료형을 만드는 것입니다. 문법을 알아보죠. 위 코드에서 _tagMyST 부분이 구조체(Struct)입니다.     구조체는 사용자 정의 자료형을 만드는 것이라고 하였는데,자료형은 뭘까요? 바로 데이터 타입이죠? 즉 구조체는 사용자가 임의로선언하는 데이터 타입이며 크기가 있을 겁니다.  확인해 보죠. 구조체를 만든 부분 끝에 'MYST'가 구조체의 이름입니다.사용할 때는 MYST 키워드를 자료형으로 생각하고 사용하면 됩니다. main 함수에서 MYST형 변수 ms를 선언해줬습니다. 그리고 sizeof 함수를 사용해서 변수 ms의 크기를 얻었습니다.sizeof 함수는 소괄호.. 2024. 3. 3.
C++ 기초 : 배열 int형 변수를 하나 선언하면 4Byte의 공간을 할당하죠.다른 공간을 할당하려면 다른 이름으로 다른 변수를 선언해 줘야겠죠. 그런데 같은 이름으로 여러 개의 공간을 할당할 수 있는데이를 배열이라고 합니다.    배열의 문법을 살펴봅시다.int iArray[10] = { };int형으로 배열을 선언하였습니다. 이름은 iArray이며 10개의 공간을 할당하고 있습니다.해당 공간들은 모두 연속적으로 붙어 있습니다. 각 공간마다 특정 값을 넣어서 초기화할 수도 있지만위 코드처럼 아무 값도 넣지 않으면모든 공간을 0으로 초기화한다는 의미입니다. 만약 6개만 초기화하면 나머지 4개 공간은 0으로 초기화합니다.      각 공간에 접근하려면int iArray.. 2024. 3. 2.
C++ 기초 : 재귀 함수 (2) 반복문으로 구현한 Factorial 함수를 재귀 (Recursion) 함수를 이용해서 구현해 보겠습니다.  7!은 7 * 6!과 같습니다.10!은 10 * 9!과 같죠.규칙성이 보이시나요? 수식으로 써 보면 n! = n * (n-1)! 이죠. 이러한 규칙성을 적용해서 구현하면 될 것입니다.  Factorial_Recursion 이라는 이름으로Factorial 계산을 위한 재귀(Recursion) 함수를 만들었습니다. Factorial_Recursion 함수를 보면if 문이 있는데 재귀 함수를 탈출하기 위해서 존재합니다.변수 _iNum의 값으로 1이 들어오면 더 이상 계산할 필요 없이 1을 반환하고 재귀 함수를 탈출하면 됩니다.1!은 계산해봤자 1이니까요.  i.. 2024. 3. 1.