실행결과 |
배열 arr[0]의 값 : 5 배열 arr[1]의 값 : 10 배열 arr[2]의 값 : 15 포인터 변수 ptr[0]의 값 : 5 포인터 변수 ptr[1]의 값 : 10 포인터 변수 ptr[2]의 값 : 15 배열 arr[0]의 값 : 100 배열 arr[1]의 값 : 200 배열 arr[2]의 값 : 300 포인터 변수 ptr[0]의 값 : 100 포인터 변수 ptr[1]의 값 : 200 포인터 변수 ptr[2]의 값 : 300 포인터 변수의 값을 바꾸면 포인터 변수가 가리키는 배열의 값도 바뀜 |
포인터 변수의 값을 바꾸기 전에는 배열의 초깃값 그대로 5, 10, 15가 출력됩니다. 그런데 값을 새로 넣은 후에는 포인터 변수의 값도 바뀌고 배열의 값도 바뀌었습니다. 즉, 포인터 변수가 직접 배열의 각 요소에 접근해서 값을 바꿉니다. 따라서 배열의 이름인 arr과 포인터 변수인 ptr은 같은 역할을 한다고 볼 수 있습니다. 단, ptr은 필요하다면 arr과 같은 배열을 값으로 넣을 수 있지만, 반대로는 불가능합니다.
int * ptr = arr; (ㅇ)
int arr[3] = ptr; (×)