아래 코드처럼
배열을 선언할 때, 배열의 개수를 정하기 위한 대괄호 안에
변수를 넣을 수 없는 이유는 무엇일까요?
a는 변수이기 때문에 값이 변할 수 있고 이것을
컴파일러가 미리 예상해서 메모리 공간을 할당하는 것은
불가능하기 때문이죠?
만약 아래 코드처럼
scanf 함수를 통해 a의 값을
정할 수 있어 100을 입력했다고 합시다.
100을 입력하는 동작은 런타임 중에 발생합니다.
근데 이것을 런타임 전 컴파일 과정에서 예상하고
미리 400Byte(int형 배열이 100개)의 공간을 할당할 수 없겠죠?
구조체의 경우도 같습니다.
구조체도 사용자 정의 자료형이라는 것 외의는
일반 자료형과 다르지 않기 때문이죠.
Instance(객체)라는 개념이 있습니다.
예를 들면 int라는 자료형이 있고
이 자료형 int로 a라는 변수를 만들면 이것이 바로 instance죠.
int라는 자료형으로 a와는 다른 instance를 또 만들어 낼 수 있습니다.
int형 변수 b, int형 변수 c 등등. 각 instance에는 다른 값을 넣어줄 수 있죠.
저는 가변 배열을 만들기 위해 '솔루션 탐색기'에서
'Array' 폴더를 만들고 그 밑에 Arr.h(헤더 파일)과
Arr.cpp(소스 파일)을 만들었습니다.
Arr.h에서 struct를 하나 선언했습니다.
이 struct는 가변 배열을 위한 자료형이죠.
그리고
main.cpp에 Arr.h 파일을 포함시키고
헤더 파일에서 선언한 구조체를 이용해
가변 배열 자료형인 arr1, arr2, arr3라는
instance를 선언하였습니다.
강의 출처 : https://www.youtube.com/watch?v=PFc4g8mxOiI&list=PL4SIC1d_ab-aOxWPucn31NHkQvNPHK1D1&pp=iAQB
'C++ > 기초' 카테고리의 다른 글
C++ 기초 : 가변 배열 (3) (0) | 2024.04.07 |
---|---|
C++ 기초 : 가변 배열 (2) (0) | 2024.04.06 |
C++ 기초 : 동적 할당 (2) (2) | 2024.04.06 |
C++ 기초 : 동적 할당 (1) (0) | 2024.04.04 |
C++ 기초 : 구조체 포인터 (0) | 2024.04.04 |