Pointer
- 변수의 값이 아니라 주소를 저장
- 포인터 변수도 포인터 변수만의 주소를 가짐
- int* a; → int형 포인터 변수 a
- int** a; → 더블 포인터, 포인터 변수의 주소를 가리키는 포인터 변수
int a =5;
int* pa= &a;
std::cout << *pa << std::endl;
pa = 3; // ->(x)
*pa =4; // ->(o)
Operator
Address Operator &
- 주소 연산자 &를 사용하면 변수의 주소를 확인할 수 있음.
Dereference Operator
- 역참조 연산자 *를 사용하면 특정 주소에 접근하여 값을 알 수 있음
int main() {
int x =10;
std::cout << *&x <<std::endl;
// -> 10이 출력됨
}
Array
- int a[10]; → a배열의 0번째 인덱스의 주소를 저장
int main() {
int a[10];
a[4]=5; // == *(a+4)=5
int b[5][10];
b[3][4] = 5; // == *(*(b+3)+4) = 5;
}
Dynamic Allocation
- new int[a]; → 동적할당
- delete로 메모리 할당한 거 직접 지워줘야 함