포인터를 대상으로 메모리의 접근을 위한 * 연산 외에도 증감 연산도 가능하다.
이번에는 연산의 결과를 눈여겨 보자.
포인터 변수에는 주소값을 담고있다.
즉 , 자료형의 크기에 따라 연산이 진행된다.
예제를 살펴보자.
코드를 분석하고 결과값을 예상해보자
직접 짜보고 눈으로 확인하길 바란다 . 결과값은 각자....ㅎㅎ
결론만 얘기하겠다.
포인터를 대상으로 하는 증감 연산의 결과는 다음과 같다.
int형 포인터 대상으로 n 증가 n * sizeof(int)의 크기만큼 증가
double형 포인터 대상으로 n 증가 n* sizeof(double)의 크기만큼 증가
감소연산 또한 똑같은 값으로 감소한다.
위 내용을 일반화 시켜보면
" TYPE형 포인터를 대상으로 n의 크기만큼 값을 증가 및 감소 시 , n x sizeof(TYPE)의 크기만큼 주소 값이 증가 및 감소한다. "
이러한 포인터의 연산특성을 중심으로 다음 예제를 보자.
6행에 선언된 포인터변수 ptr은 int형 포인터이므로 값을 1 증가시키는 연산을 할 때마다 실제로는 4씩 증가한다.
때문에 , *ptr , *ptr+1 , *ptr+2 참조결과 출력시 arr[0] , arr[1] , arr[2]에 저장된 요소가 출력된 것이다.
여기서 얻는 가장 중요한 결론은 arr[i] = *(arr+i) 라는 점이다!
배열의 이름과 포인터 변수는 변수냐 상수냐의 차이일뿐 , 사실상 동일하다
'Programming > C Language' 카테고리의 다른 글
Call By Value & Call By Reference (0) | 2017.11.01 |
---|---|
포인터 배열 (0) | 2017.11.01 |
포인터와 배열의 관계 (0) | 2017.10.31 |
포인터 정리 (0) | 2017.10.31 |
char형 배열 , 문자열 (0) | 2017.10.31 |