0w0
[C] 포인터 3 간접 참조 연산자와 증감 연산자 본문
//NULL은 stdio.h에 0으로 정의되어 있다.
//간접 참조 연산자와 증감 연산자
// *p++; 포인터 p를 증가( 포인터 p는 주소이기 값, 포인터 타입만큼 한번 증가)
// (*p)++; p가 가리키는 위치의 값을 증가(포인터 p가 가지고 있는 주소의 대상을 한번 증가)
#include<stdio.h>
int main(){
int i= 10;
int *pi= &i;
printf("i = %d, pi= 0x%x \n",i,pi);
(*pi)++; //pi가 가리키는 대상 값을 증가
printf("i = %d, pi= 0x%x \n",i,pi);
*pi++; //포인터 pi를 증가
printf("i = %d, pi= 0x%x \n",i,pi);
return 0;
}
수식 |
의미 |
v= *p++ |
p가 가리키는 값을 v에 대입한 후에 p를 증가한다. (주소 증가) |
v= (*p)++ |
p가 가리키는 값을 v에 대입한 후에 p가 가리키는 값을 증가한다. (값 증가) |
v= *++p |
p를 증가시킨 후에 p가 가리키는 값을 v에 대입한다. (주소 증가) |
v= ++*p |
p가 가리키는 값을 가져온 후에 그 값을 증가하여 v에 대입한다. (값 |
우선 순위
가장 먼저 붙어있는 기호가 있다면 아래 표로 우선 순위를 생각안하고 ++*p 처럼 대상 값을 가져오고 그 값을 가져온다고 생각하면 됩니다. 그 외에 기호들이 양옆으로 붙어 있거나 불확실할 때 생각하기 편합니다.
우선 순위 |
1순위 |
2순위 |
3순위 |
기호 |
( ) 괄호 |
++, -- 덧셈, 뺼셈 |
* 포인터 |
'Coding > C' 카테고리의 다른 글
[C] 포인터 5 포인터와 배열 (0) | 2016.09.05 |
---|---|
[C] 포인터 4 포인터의 형변환 (0) | 2016.09.05 |
[C] 정렬 2 버블 정렬 (0) | 2016.09.05 |
[C] 정렬 1 선택 정렬 (0) | 2016.09.05 |
[C] 포인터 2 간접 참조 연산자 * (0) | 2016.09.05 |