2학기 9주차 예습과제
배열
배열이란 연속적인 항목들이 동일한 크기의 순서를 갖고 나열되어 있는 데이터의 집합
일차원 배열
- 배열명 다음에 구두점 대괄호([])를 쓰며 대괄호 안에 배열의 크기를 나타내는 수를 하나 씀
- 첨자(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) 값을 갖는다.
- 즉, 생성자는 주로 멤버변수의 초기화를 한다.