[열거형(enum)]
사용자 정의형 자료로서 식별자를 값으로 저장한다. 즉 string을 int로 저장한다. enum을 사용하면 코드의 가독성을 높일 수 있다.
[반복문]
반복문에는 for문, while문 doWhile문이 있다.
continue
- for문에서는 제어식(증감식)으로 이동. while문에서는 조건식으로 이동한다.
break
- (switch문과) 반복문을 단 한번 탈출
[함수란?]
함수란 특정 작업을 수행하기 위해 설계된 재사용 가능한 코드의 집합이다.아래의 사진을 보면 함수의 정의에 대해서 이해할 수 있을 것이다.
[프로그램 메모리 구조]
프로그램 메모리는 프로그램 실행을 위해 운영체제로 부터 할당 받은 메모리이다.
코드 (소스 코드) |
|
데이터 (정적메모리 영역) |
static, 전역변수처럼 프로그램 시작 할 때부터 종료될 때까지 메모리 공간에 있어야 할 데이터가 저장 |
스택 (지역 변수) |
지역변수나 매개변수처럼 함수 호출 시에 메모리에 할당되었다가 함수 실행 종료와 함께 자동 소멸됨 |
힙 (동적메모리영역) |
동적으로 메모리가 할당되는 곳, 프로그래머가 원하는 시점에 할당하고 소멸 시킬 수 있는 영역 |
[함수 호출 시 인수 전달]
함수 호출 시에 인수를 전달하는 방법으로는 call-by-value, call-by-reference, call-by-address가 있다. 지금은 value와 reference만 설명하겠다.
- 값으로 호출하기 (call-by-value)
:호출하는 곳에서 인수를 전달할 때 인수의 값이 매개변수로 복사 되는 방법이다.
- 참조로 호출하기 (call-by-reference)
:원본 인수가 함수에 전달되는 방법이다. 함수 안에서 매개 변수를 변경하면 원본 인수가 변경된다.
[값으로 호출하기 vs 참조로 호출하기]
- 참조로 전달하면 인수와 매개변수가 동일 한 객체이므로 따로 복사할 필요가 없기 때문에 복사 비용이 발생하지 않는다.
- 포인터로 전달하면 4바이트의 포인터만 복사하면 되므로 복사 비용이 굉장히 적다.
- 변경을 하면 안 되는 경우에 작은 객체라면 값으로 전달을 사용, 큰 객체라면 const 한정자를 붙여서 참조로 전달 또는 포인터로 전달을 사용한다.
- 변경이 필요한 경우에는 반드시 참조로 전달 또는 포인터로 전달을 사용해야한다.
[재귀함수]
자기 자신을 참조하는 함수이다. 밑의 사진을 보자.
[참고]
- 참조자
- 참조 변수는 일반적인 변수와 다르게 메모리 위에 새로운 영역을 잡지 않는다. 단순하게 기존에 있던 변수와 연결 (바인드)해서, 기존에 있던 변수에 새로운 이름을 붙여주는 것 뿐이다. 이름을 새로 붙이기 위해서는 원본 변수가 꼭 필요하다.
- 포인터
- 주소를 저장하는 변수이다.
- 포인터 선언 : 형명* 포인터명;
- 포인터를 통해 원래 변수의 값 접근 : *포인터명; (여기서 *는 간접참조 연산자이다.)
'C++ 자료구조' 카테고리의 다른 글
[c++] vector (0) | 2024.03.26 |
---|---|
[c++] 배열 (0) | 2024.03.25 |
[c++] 문자열(string) (0) | 2024.03.12 |
[c++] c++의 기본 개념 (0) | 2024.03.05 |
[c++] 자료구조와 알고리즘 (0) | 2024.03.04 |