[포스코 x 코딩온] 스마트팩토리 개발자 과정 TIL | 포인터 (1)

배돌·2023년 5월 8일
0

포인터

메모리 주소를 가진 변수.

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;	// 동적 메모리 해제
profile
스마트팩토리 지향 누-비

0개의 댓글