프로그래밍 공부

2024/01 107

카테고리 설명
  • 1.2.3 C++의 문자열 C++에는 문자열을 다루는 세 가지 방법이 있다. 기존 C와 같이 문자의 배열로 이용 C++에서 제공하는 string타입을 이용 비표준적인 방법으로 프로그래머가 C++ 타입 정의 기능을 이용하여 직접 정의 당장은 C++의 string타입이 헤더 파일에 정의되어있고 C++에서는 string타입을 기본 타입처럼 사용한다는 것만 알면 된다. I/O스트림과 마찬가지로 string은 std네임스페이스 에 속한다. std::string mySring = "Hello, World"; cout

  • 1.2.2 참조형 함수의 전형적인 패턴은 0개 또는 1개 이상의 파라미터를 받아서 계산을 하고 하나의 결괏값을 리턴하는 것이다. 하지만 이런 패턴이 맞지 않는 경우도 있다. 리턴하고 싶은 결곽값이 2개 이상일 수도 있고, 파라미터로 넘겨진 변수를 함수에서 변경해주길 원할 수도 있다. 이런 경우 C에서는 변수 대신 변수의 포인터를 전달하여 해결한다. 이러한 방법의 유일한 단점은 포인터 조작 때문에 코드가 지저분해지는것 이다. C++에서는 포인터 없이도 명시적으로 참조에 의한 전달(Pass by Referance)를 지원한다. 함수 파라미터의 정의부에서 각 파라미터 변수 이름 앞에 & 연산자를 붙이는 것이다. 사용법은 보통 변수와 동일하지만 내부적으로는 함수 안에서도 함수 호출 시 사용된 변수의 포인터가 사..

  • 1.2.1 포인터와 동적 메모리 동적 메모리는 컴파일 타임에 크기를 정할 수 없는 데이터를 이용할 수 있게 해준다. 거의 모든 프로그램은 동적 메모리를 어떤 형태로든 이용하게 된다. 스택과 힙 C++ 애플리케이션이 사용하는 메모리는 스택(stack)과 힙(heap) 두가지로 나누어진다. 스택 메모리는 쌓여있는 카드에 비유할 수 있다. 가장 위에 놓인 카드는 프로그램의 상태를 나타내는데, 보통 현재 실행중인 함수에 관한것 이다. 현재 실행 중인 함수의 로컬 변수는 모두 가장 위에 놓인 카드, 즉 제일 위 스택에 위치한다. 만약 현재 실행 중인 함수 foo()가 또 다른 함수 bar()를 호출한다면 새로운 스택 프레임 이 생성되고, bar() 함수를 호출할 때 넘겨진 파라미터가 foo()의 스택 프레임에서 ..

  • 참조형 변수 (Reference Types) 동작방식 참조형 변수는 기존 변수의 별칭(alias)이며, 동일한 메모리 주소를 가리킨다. 선언시 반드시 초기화 되어야 한다. 값에 의한 복사가 아닌, 원본 변수와 동일한 메모리를 공유함으로 한쪽에서 변경이 다른쪽에 반영된다. int main() { int original = 5; int &refVar = original; // 참조형 변수 선언 refVar += 10; // original은 이제 15이다. original -= 5; // refVar은 이제 10이다. return 0; }

  • 참조에 의한 전달 (Passing by Reference) 동작방식 함수에 전달되는 변수의 메모리주소(참조) 가 매개변수에 전달된다. 함수 내에서 매개변수를 통해 직접 메모리 위치를 참조함으로, 값을 변경하면 호출자의 변수도 변경된다. void addTenByReference(int &num) { num += 10; } int main() { int value = 5; addTenByReference(value); // value는 이제 15이다. return 0; }

  • 값에 의한 전달(Passing by Value) 동작방식 함수에 전달되는 변수의 값이 복사되어 매개변수에 전달된다. 함수 내에서 매개변수의 값을 변경해도 호출자의 변수에는 영향을 주지 않는다. void addTen(int num) { num += 10; } int main() { int value = 5; addTen(value); // value는 여전히 5이다. return 0; }