메모리 주소를 가진 변수.
int* p; -> 포인터 p 선언
int n = 10; -> 변수 n에 10을 담아둠
p = &n; -> 포인터 변수 p에 변수 n의 주소값(프로그램 실행 때마다 바뀜) 을 담음
실행될때마다 주소값은 메모리가 담기는곳이 계속 변하기때문에 변경됨
한번 실행한 실행문 안에서는 주소값은 그대로 유지
포인터는 원격에서 해당 변수의 주소값, 값을 바꾸는 역할을 한다.
-> 새로이 변수를 선언하지 않고 기존의 값을 변경시켜서 사용 가능해짐!
배열에는 많은 양의 데이터를 넣을 수 있지만 몇가지 단점이 있다.
예시로 100명의 학생을 관리하는 배열을 선언해서 프로그래밍하다가 자료가 200명으로 늘어나게 되면 해당 배열을 버리고 다른 배열을 선언하는 등의 방식으로 해결해야 한다. 배열의 크기를 넉넉하게 배분하는 방법 또한 있겠지만 좀 더 유연한 해결을 위해 동적할당을 이용하면 배열의 크기를 조절할 수 있게 된다.
동적메모리 변수는 빌드가 될때 메모리를 할당 받지 않고 실행 중에 할당 받는다. 첫 실행 때 사용되는 메모리의 위치가 고정되어 있지 않고 비어있는 메모리의 자리를 할당 하기 때문에 '동적(動的)'할당 이라고 부른다.
포인터를 이용해서 사용. 선언부,배열부,배열해제 구간으로 구성
int* arr = new int[n]; // 동적 배열 선언
for (int i=0; i< n; i++){
arr[i] = i+1;
}
delete[] arr; // 동적 메모리 해제