IT 프로그래밍/객체지향프로그래밍

[따배시 6.12] 동적 할당 배열

기술1 2024. 5. 17. 11:19
반응형
int main()
{
	int length = 5;

	int array[length];

	return 0;
}

배열은 고정이 되어 있어야 가능한데요.

이런 식으로는 불가능합니다.

 

int main()
{
	const int length = 5;

	int array[length];

	return 0;
}

이런 식으로 const를 해주면 정상적으로 작동하게 됩니다.

 

이것을 동적 배열이 가능하도록 바꿔보겠습니다.

 

delete[] array;

긴 사이즈  (배열) 등의 new를 제거할 때는 []를 써줘야 합니다.

 

#include <iostream>
#include <string>
using namespace std;

int main()
{
	int length;

	cin >> length;

	int* array = new int[length];

	array[0] = 1;
	array[1] = 2;

	for (int i = 0; i < length; ++i)
	{
		cout << (uintptr_t)&array[i] << endl;
		cout << array[i] << endl;
	}

	delete[] array;
		
	return 0;
}

이런 식으로 해주면 되는데요. 동적 배열이 완성이 된 것입니다. new로 받은 다음 입력을 받은 것을 배열로 해주는 것입니다. 

 

이렇게 2를 넣으면 연속된 2개의 값이 할당이 되는 것을 볼 수 있습니다. 

int* array = new int[length] {11, 22, 33, 44, 55, 66};

이렇게 하면 지정을 해준 11 부터 66까지 6개의 칸에 이것이 지정이 됩니다. 만약 6보다 작은 수를 넣어준다면 오류가 발생하게 됩니다. 큰 값을 넣어준다면 이후의 값은 0으로 나오면서 진행이 됩니다.

 

 

int main()
{
	int fixedArray[] = { 1, 2, 3, 4, 5 };  //ok

	int* array = new int[] {1, 2, 3, 4, 5}; //error
	
	delete[] array;
	return 0;
}

그냥 배열은 [] 로 가능하지만 new int는 [] 안에 숫자를 넣어줘야 가능합니다. 

 

 

반응형