Language/C, C++
[C] 포인터 연산
Phulasso
2020. 12. 17. 19:59
포인터 변수를 대상으로도 증가 및 감소 연산이 가능하다.
#include <stdio.h>
int main(void)
{
int * ptr1 = 0x0010;
double * ptr2 = 0x0010;
printf("%p %p\n", ptr1+1, ptr1+2); // 4증가, 8증가
printf("%p %p\n", ptr2+1, ptr2+2); // 8증가, 16증가
printf("%p %p\n", ptr1, ptr2);
ptr1++;
ptr2++;
printf("%p %p\n", ptr1, ptr2);
return 0;
}
/* output:
00000014 00000018
00000018 00000020
00000010 00000010
00000014 00000018
*/
위 코드의 결과값을 보면 int형 포인터를 대상으로 1증가 시키면 4가 증가하고, double형 포인터를 대상으로 1증가시키면 8 이 증가한다. 포인터의 증감연산은 n 크기 만큼 증가 및 감소시 n x (자료형의 크기)만큼 주소값이 증가 및 감소함을 알 수 있다.
포인터 연산을 활용하여 다음과 같이 배열의 요소에 접근할 수 있다.
int main(void)
{
int arr[] = {1,2,3};
int *ptr = arr;
printf("%d\n", *(ptr+1)); // 2
return 0;
}