Language/C
포인터 연산
MAKUBEX
2010. 3. 17. 17:54
●포인터 와 포인터 변수의 연산
포인터 와 포인터 변수의 연산은 상당히 제한적이다. 포인터 변수에 포인터를 할당할때는 가리키는 자료형이 일치해야만 한다.
ex)int in;
float *fp = ∈ //이는 불가능한 연산이다.
○포인터 또는 포인터 변수에 정수값을 더할수 있다.
예를 들어서int in;
int *ip = ∈
in=100번지 ip=100번지
포인터 + 정수*sizeof(*포인터)
로 연산이 수행되는 것이다. 여기서 sizeof(*포인터)는 포인터 변수가 할당되어 있는 자료형의 크기만큼 더한다는 말이 된다. 정수 in형은 4byte 이기 때문에 1과 4를 먼저 곱한다음 *ip 안에 있는 100번지랑 더해지는 것이다 즉 104라는 값으로 되는 것이다.
○포인터 또는 포인터 변수끼리 차를 구할수 있다.
예를 들어서 int a,b;
int *ap, *bp;
ap=100번지 bp=104번지
bp = &b;
bp - ap;
라고 선언이 되었다고 가정했을 때 차의 연산은 다음과 같이 이루어 진다.
(포인터 - 포인터) / sizeof(*포인터)
한마디로 (104 - 100 ) /sizeof(*포인터)로 연산이 이루어 지는 것이다.