산술 연산자 ++, --...등
포인터에 증가 연산이 일어나면 포인터는 가리키고 있던 항목의 다음 항목을 가리키게 된다.
int *p;
p = p + 200; //현재 p가 가리키는 정수로부터 200번째 있는 정수를 가리키게 된다.
포인터에 정수의 덧셈과 뺄셈 외에 다른 산술 연산은 적용할 수 없다.
증감 연산자를 이용하여 포인터 자체에 또는, 포인터가 가리키는 객체에 적용하는 것이 가능하다.
*p++ //포인터 p를 증가시킨다.
(*p)++ //포인터가 가리키는 주소의 값이 증가한다.
포인터에 저장된 메모리 주소를 출력하기 위해 printf()를 사용할수 있고,
형식 지정자 %p를 사용한다.
p.203
#include <stdio.h>
int main(void)
{
char *cp, ch; //문자형
int *ip, i; //정수형
float *fp, f; //실수형
double *dp, d; //두배실수 형
cp = &ch;
ip = &i;
fp = &f; //각 포인터와 변수 연결
dp = &d;
printf("%p %p %p %p\n", cp, ip, fp, dp); //포인터의 메모리 주소 출력
cp++;
ip++;
fp++; //포인터 주소 증가
dp++;
printf("%p %p %p %p\n", cp, ip, fp, dp); //증가된 주소 출력
return 0;
}
결과 :
p.204 p.205
#include <stdio.h> #include <stdio.h>
int main(void) int main(void)
{ {
int *p, q; int *p, q;
q = 1; q = 1;
printf("%p\n", p); printf("%p\n", p);
*p++; //p증가 (*p)++; //q증가
printf("%d\n%p", q, p); printf("%d\n%p", q, p);
return 0; return 0;
} }
결과 :