포인터 식

C : 2007. 11. 3. 11:36
 

산술 연산자 ++, --...등

포인터에 증가 연산이 일어나면 포인터는 가리키고 있던 항목의 다음 항목을 가리키게 된다.


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;

 p = &q;                                          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;
}                                                   }

결과 :

사용자 삽입 이미지

Posted by 청웨일