: 배열의 이름은 배열의 주소로 알아왔지만,
정확히 말하자면, 배열의 주소가 아니다.
: 선언문에서 변수의 이름을 빼면, 해당 변수의 타입이 결정됨.
-> 배열 arr을 보면, 타입이 포인터가 아니고, int[3] 이라는 것을 확인할 수 있다.
포인터를 만드는 것은 우변의 타입과 동일한 타입으로 맞춰주고
(+)추가적으로 * 표시를 붙이는 것임,
포인터로 참조 하는 규칙!(위의 설명을 토대로)
: int arr[3] 은 어떻게 포인터를 작성할 수 있을까?
이렇게 일까??? -> 보지도 못함...
int[3] *p = &arr;
39번 줄처럼 사용한다.
: [] 연산자가 * 보다 연산자 우선순위보다 높기 때문에 애스터리스크가 있는 부분을 괄호로 묶어서 우선순위를 높여야 한다.
외워라!
- 배열의 이름은 첫번째 원소의 주소로 암시적 형변환 된 것임.
int arr[3]{1,2,3};
int * p = arr; // 배열의 첫번째 요소를 나타냄.
int *p2 = &arr; // 전체 배열[3] 의 주소를 의미하고
problem
위의 내용을 확인하는 방법은 .
+1을 증가해 주소값이 어떻게 출력되는지를 확인하자.
: 알아둬야 할 부분 : c++은 포인터 변수에 ++/ -- 연산자를 사용하면
자신의 타입 크기만큼 주소값이 변경되는 특징이 있다.