본문 바로가기

C++ 자료구조

[c++] 제어 구조와 함수

[열거형(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