프로그래밍/C 언어

포인터 ( 3. 포인터 연산 )

Jay_rock 2020. 2. 28. 00:26

1. 포인터 연산

포인터 연산은 주소에 더하거나 빼는 연산을 말한다. 포인터 연산을 할 때 덧셈, 뺄셈 연산자를 모두 사용 가능하다.

 

int ar[5] = {2, 3, 5, 7, -1}, i=4;
int *p = &ar[1];

printf("%p %d\n", p, *p);
printf("%p %d\n", --p, *p);
printf("%p %d\n", p+i, *(p+i));

실행 결과

0018F9A8 3

0018F9A4 2

0018F9B4 -1

 

포인터 연산에 ++, --  등 덧셈, 뺄셈 연산자를 사용할 수 있다.

 

2. 주소 비교

포인터의 주소는 '==, !=, <, >, <=, >=' 와 같은 비교 연산자를 사용하여 비교할 수 있다. 사실 포인터 연산은 일반 변수와 연결해서 사용하는 것보다 배열에 연결해서 사용할 때 의미가 있다.

 

int ar[5] = {2, 3, 5, 7, -2}, *p1, *p2;

p1 = &ar[1];
p2 = &ar[4];

printf("%d %d\n", p1 < p2, *p1 < *p2);

실행 결과

1 0

 

※ 포인터 연산할 때 주의사항 ※

 

1. 포인터 연산은 덧셈과 뺄셈만 가능하고, 곱셈과 나눗셈은 불가능하다.

2. 포인터 연산에서는 정수만 가능하다. 실수 연산은 물론 주소끼리 연산하는 것도 불가능하다.