본문 바로가기
C++/기초

C++ 기초 : 가변 배열 (1)

글: 시플마 2024. 4. 6.

아래 코드처럼

 

배열을 선언할 때, 배열의 개수를 정하기 위한 대괄호 안에

변수를 넣을 수 없는 이유는 무엇일까요?

 

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