이거 안될거같은 이유?
나는 일단 될거 같다 라고 생각함.
이유
그냥 a의 주소값을 그 순간 복사를 해와서 arr의 크기를 정의해주고 초기화 하니까?
상수값 == const값이 있어야 한단다.
이렇게는 됨.
변수 = "값이 변하는 수"
그러면
이렇게하면 런타임 중간에 입력을 받아서 배열의 크기를 선언하나??
배열 지금 지역변수이고 main함수 내에 선언되는데,
"동적 할당" 하나?? => 동적할당은 ROM에??가나??
는 "어느정도" 될 것이다. 라고
Stack에서 계산이 이미 다된거임.
그러니까 해제할 수 있었고 사용자가 신경쓸 필요가 없었던 것이다.
지금
int a = 0;
int iInput = scanf_s("%d", &a);
int arr[iInput] = {};
이렇게 있을 때 main함수가 얼마만큼의 메모리를 사용할지 컴파일 해야하는데?
"파악"이 되나??
그래서
프로그램 실행중에 늘어났다 줄어들었다 하는 배열을 만들고 싶은데
그게 지역변수로 가능하다 불가능하다? => 불가능하다.
왜? =>
이거는 왜 안되노?
구조체 뭐라했나 ST라는 자료형을 가지는 변수의 이름 a == ST a;
사용자가 직접 만든 "자료형"
갯수가 정해지지 않았는데 main함수의 지역으로 할당할 끼고??
그래서 결국 어느 메모리 영역을 쓸 수 밖에 없나??
=> "Heap"메모리 영역을 사용할 수 밖에 없다.
배열 개수를 선언할 때는 변수를 사용할 수 없다.
int
int a; => 'a'가 "int"라는 자료형의 객체(Istance)이다.
"내가 의도한 자료형의 실질적인 데이터"
A4 종이에 도장으로 뭘 막 찍어내면 찍혀진 애들이 다 객체이다.
따라서,
가변배열이라는 어떤 형태를 선언하고 => 객체를 만들 것이다.
개변배열이라는 동작을 할 수 있는 "자료형"을 만들것이다.
폴더 만들고 -> .h, .cpp 만들고 -> include "Array.h"
그다음에 이 안에는 이녀석이 가변배열로써 필요한 멤버들로 구성을 해야한다.