반응형
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는 [] 안에 숫자를 넣어줘야 가능합니다.
반응형
'IT 프로그래밍 > 객체지향프로그래밍' 카테고리의 다른 글
[C++] 상속이란? (0) | 2024.05.24 |
---|---|
[c++]포인터와 참조 설명 (0) | 2024.05.17 |
[따배시 6.11] 메모리 동적할당 new 와 delete, 메모리누수 (0) | 2024.05.17 |
[따배시 8.4] 생성자 멤버 초기화 목록 (0) | 2024.05.15 |
[8.3] 생성자 c++ (0) | 2024.05.15 |