- 대상의 주소를 통해 대상을 가리키는 지시자
- 주소를 나타내는 자료 또는 그러한 자료형
- 포인터가 가리키는 데이터의 자료형 정보, 즉 참조 자료형 정보도 가지고 있다.
int* a; // a는 int(정수)형 포인터 변수이다.
& : Address of - 참조 연산자, 대상의 주소를 얻어오는 연산자
예)a = &b; // 변수 b의 주소를 포인터 변수 a에 저장
- : 역참조 연산자, 주소로부터 대상 변수값을 얻어오는 연산자
예)int c = *a // 변수 C는 포인터 변수 a가 가리키는 주소
- 메모리에 직접 접근하기 위해 사용한다.
- 연결된 자료 구조를 구성 및 동적 할당 자료구조 저장
포인터를 매개 변수로 전달하면 호출된 함수에서 호출한 함수의 변수 내용을 변경할 수 있다.
1) 개념
배열을 포인터 변수에 저장한 후, 포인터를 이용하여 배열의 요소에 접근할 수 있다.
int a[5];
int* b;
b = a; // 배열 a의 시작 주소인 a[0]의 주소를 포인터 변수 b에 저장
배열의 이름 : 배열의 첫번째 요소의 주소
배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자를 사용
b = &a[2]; // 배열 a의 세 번째 요소인 a[2]의 주소를 포인터 변수 b에 저장한다.
- 포인터 변수에 대해 정수 변수와 유사하게 +,-,++,-- 연산 가능
- 정수 변수와 달리 실제 더해지거나 빼지는 값은 포인터 변수가 참조하는 자료형의 크기에 따라 달라짐
- 배열의 이름은 배열의 시작 주소를 나타내는 포인터/주소 상수
- 배열이름은 상수이므로 값 변경 불가
- 배열 이름은 포인터이므로 + 연산 가능
void f(int arr[] 또는 int *a)