동적 할당 배열 Dynamically Allocation Arrays
동적 할당 배열은 메모리를 나중에 할당 받을 수 있다.
배열에 들어갈 값을 미리 정해놓을 수 있지만 할당받을 크기보다 크다면 에러가 난다.
동적 할당 배열 반납방법 : delete[]
#include <iostream>
using namespace std;
int main()
{
//정적 할당 배열은 컴파일될때 배열의 크기가 고정되어야한다.
const int length = 5;
//정적 할당 배열
int arr[length] = { 1,2,3,4,5 };
int dlen;
cin >> dlen;
//동적 할당 배열 받기
int *ptrArr = new int[dlen];
for (int i = 0; i < dlen; i++) {
cout << "i : " << i << endl;
ptrArr[i] = i;
cout << (uintptr_t)&ptrArr[i] << endl;
cout << ptrArr[i] << endl;
}
delete[] ptrArr;
ptrArr = nullptr;
return 0;
}
포인터에도 const를 사용할 수 있다.
const의 위치마다 결과가 다르다.
주소에 접근해 데이터를 변경할 수 없다.
const int *ptr = &value;
메모리 주소를 변경할 수 없다.
int *const ptr = &value;
메모리주소,주소안의 데이터를 모두 변경할 수 없다.
const int *const ptr = &value;
const활용 자세한 설명
#include <iostream>
using namespace std;
int main()
{
int value = 5;
const int *ptr2 = &value;
cout << *ptr2 << endl;
//역참조는 불가능하다.
//포인터를 이용해 값을 변경하지 않겠다는 표현으로 생각할 수 있다.
//*ptr = 6;
int value2 = 3;
//주소에 있는 값을 바꾸지 않겠다는 말이다.
ptr2 = &value2;
cout << *ptr2 << endl;
//에러가난다.
//*ptr2 = 6;
//포인터 자체를 상수로 만들기
int *const ptr = &value;
//주소값을 변경할 수 없다.
//ptr = &value2;
//모든것이 변경 불가능하다.
const int *const ptr3 = &value;
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ 포인터,참조의 구조체,클래스 멤버선택 (0) | 2019.07.29 |
---|---|
c++ 참조변수,참조변수와 const (0) | 2019.07.26 |
c++ 메모리 동적할당 new와 delete (0) | 2019.07.26 |
c++ 기본 포인터연산과 배열인덱싱 (0) | 2019.07.25 |
c++ C언어 스타일 배열문자열,문자열 심볼릭 상수 (0) | 2019.07.25 |