C++ 이야기 (열혈)
4. 참조자(Reference)와 함수
Call-by-value & Call-by-reference Call-by-value : 값을 인자로 전달하는 함수의 호출방식 Call-by-reference : 주소 값을 인자로 전달하는 함수의 호출방식 #include using namespace std; void SwapByValue(int num1, int num2) { int temp = num1; num1 = num2; num2 = temp; } // Call-by-value int main(void) { int val1 = 10; int val2 = 20; SwapByValue(val1, val2); // val1과 val2에 저장된 값이 바뀌기를 기대함 cout
3. 참조자 &(Reference)의 이해
참조자의 이해 변수는 할당된 메모리 공간에 붙여진 이름이다 그리고 그 이름을 통해서 해당 메모리 공간에 접근이 가능하다. 할당된 하나의 메모리 공간에 둘 이상의 이름을 부여할 수는 없을까? ==> 참조자의 이해로 이어진다 int num1 = 2010; ==> 2010으로 초기화된 메모리 공간에 num1이라는 이름이 붙게 된다 int* ptr = &num1; // 변수 num1의 주소 값을 반환해서 포인터 ptr에 저장해라! int& num2 = num1; // 변수 num1에 대한 참조자 num2를 선언해라! & 연산자는 C언어 포인터에서 배웠듯이 변수의 주소 값으로 반환하는 연산자였지만 참조자에서는 의미가 또 다르다 이미 선언된 변수의 앞에 이 연산자가 오면 주소 값의 반환을 명령하는 뜻이 되지만, 새..
2. 새로운 자료형 bool
'참' 을 의미하는 true와 '거짓'을 의미하는 false #define TRUE 1 #define FALSE 0 #include using namespace std; int main(void) { int num = 10; int i = 0; cout
1. 시작에 앞서
키워드 const의 의미 const int num=10; ==> 변수 num이 상수화 const int * ptr1=&val1; ==> 포인터 ptr1을 이용해서 val1 값을 변화시킬 수 없음 int *const ptr2=&val2; ==> 포인터 ptr2가 상수화 const int * const ptr3 = &val3; ==> 포인터 ptr3가 상수화 및 포인터 ptr3을 이용해서 val3 값을 변화시킬 수 없음 실행중인 프로그램의 메모리 공간 데이터 = 전역변수가 저장되는 영역 스택 = 지역변수 및 매개변수가 저장되는 영역 힙 = malloc 함수호출에 의해 프로그램이 실행되는 과정에서 동적으로 할당이 이뤄지는 영역 malloc & free = malloc 함수호출에 의해 할당된 메모리 공간은 fr..
5. 이름공간(namespace)에 대한 소개
이름공간(namespace) 이름을 붙여놓은 공간 (말 그대로 특정 영역에 이름을 붙여주기 위한 문법적 요소이다) 이름공간의 기본원리 한 집에 철수라는 이름의 사람이 두 명 산다면, 상황에 따라서 문제가 될 수 있다. 그냥 '철수야!'라고 부르면, 어떤 철수를 부르는지 알 수 없기 때문이다. 그러나 서로 살고 있는 집이 다르다면 문제 될 것이 없다. '201호에 사는 철수'와 '202호에 사는 철수'로 구분되기 때문이다. 즉, 다음과 같이 부르면 철수를 구분할 수 있다. "202호에 사는 철수야!" 이것이 이름공간의 기본 원리이다 #include void SimpleFunc(void) { std::cout