2024년 2학기/C++ 프로그래밍

2학기 9주차 예습과제

윤지선 2024. 10. 28. 00:37

배열

배열이란 연속적인 항목들이 동일한 크기의 순서를 갖고 나열되어 있는 데이터의 집합

 

일차원 배열

- 배열명 다음에 구두점 대괄호([])를 쓰며 대괄호 안에 배열의 크기를 나타내는 수를 하나 씀

   - 첨자(subscript) 또는 인덱스(index)

자료형 배열명[첨자]

int score[7]

   - 배열명 만드는 규칙은 변수명 만드는 규칙과 동일

   - 배열 선언문에서 사용하는 첨자는 양의 정수이며 배열의 크기

   - score 배열은 정수형 자료 7개를 저장할 수 있음

   - 7개의 공간을 배열의 원소(element)라 함

 

일차원 배열 초기화 방법

- int  score[5]={10,20,30,40};

- 변수 초기화와 달리 원소가 많으므로 중괄호({})로 묶어줌

- score[0]에는 10이, score[1]에는 20등이 차례대로 초기화됨

 

문자형 배열 초기화 방법

- char name[]={'H', 'a', 'n', ' '}

- 배열 선언과 함께 초기화까지 할 경우 원소의 개수 4는 생략 가능

- 문자 배열의 마지막 원소는 반드시 널(NULL) 문자인 \0이어야 함

- 문자형 배열은 문자열과 관련이 있는데 C언어에서 문자열은 항상 널문자로 끝나기 때문

 

문자 배열은 문자열 형태로 초기화할 수도 있음

- char name[] = "Han S H"

- 널 문자가 자동으로 마지막 원소에 할당됨

 

함수명 기능 의미
strcpy(st1, st2) 문자열 st2를 st1으로 복사 Copy a string.
strcat(st1, st2) 문자열 st2를 st1과 연결 Append a string(concatenation)
strcat(st1, st2) 문자열  st1과 st2를 비교 Compare strings
strlen(st) 문자열 st의 길이 Get the length of a string

# include <string> 나 #include <string.h> 추가!

 

 

함수는 컴파일 시 기계어 코드로 변환되고, 함수를 호출하면 함수의 기계어 코드가 위치하는 메모리 번지로 점프하여 실행됨. 그러나,  inline함수는 함수를 호출할 때마다 점프하여 실행하지 않고 호출하는 위치에 함수의 기계어 코드가 복사됨.

 

 

생성자와 소멸자

- 생성자(constructor)와 소멸자(destructor)라는 멤버함수는 사용자가 꼭 정의하지 않아도 되는 함수. 

- 그렇다고 해서 존재하지 않는것은 아니며 시스템 내부에서 언제나 객체의 생성과 소멸 담당

- 사용자가 이를 좀 더 유용하게 사용하고자 하는 경우에만 가시화시켜 클래스 내부에 선언, 정의한다

 

생성자

- int a = 5라는 명령에서 일어나는 작업

 : 정수형 기억장소 4바이트를 메모리에 할당하고 그곳에 5라는 값으로 초기화를 하라

- 일반 자료형(int, float 등)의 경우 컴파일러가 알아서 처리해주지만 사용자 정의형인 클래스는 어떻게 해당 객체를 초기화 하나?

- 이런 작업을 담당하는 함수가 생성자이다.

- 생성자는 사용자가 특별히 지정하지 않아도 자동으로 호출되지만 멤버에 대한 초기화 자료를 지정하지 않으면 객체 멤버변수들은 쓰레기(garbage) 값을 갖는다.

- 즉, 생성자는 주로 멤버변수의 초기화를 한다.