C++ 포인터 연산

2014.06.15 00:41

엘카 조회 수:383

참고 문서  
포인터 변수는 +, -, ++, -- 연산자를 이용하여 연산할 수 있으며, 이때의 연산은  
     포인터 변수의 자료형 크기에 맞추어 증감된다. 
자료형에 따른 포인터 변수의 증감 변화 예 

 자료형

크기 

p-1 

p (기준점) 

p+1 

 char

 1

 0x7f7e051f

 0x7f7e0520

 0x7f7e0521

 int 

 4

 0x7f7e0524

 0x7f7e0528

 0x7f7e052c

 float 

 4

 0x7f7e052c

 0x7f7e0530

 0x7f7e0534

double  

 8

 0x7f7e0530

 0x7f7e0538

 0x7f7e0540


  • char형 포인터 변수는 포인터 변수가 1 증가하면 1증가된 포인터 변수가 가리키는 실제주소번지는 1 증가한다. 
  • int형 포인터변수는 포인터 변수가 1증가하면 1증가된 포인터 변수가 가리키는 실제주소번지는 4 증가한다. 
  • float형 포인터변수는 포인터 변수가 1증가하면 1증가된 포인터 변수가 가리키는 실제주소번지는 4 증가한다. 
  • double형 포인터변수는 포인터 변수가 1증가하면 1증가된 포인터 변수가 가리키는 실제주소번지는 8 증가한다. 
 포인터 변수 
#include <stdio.h> 
int main(void) 
{ 
  char ch = 'A', *cp;   
  int num = 10, *ip;   
  float fnum = 0.123, *fp;   
  double dnum = 3.123456, *dp;   
  cp = &ch;  ip = #  fp = &fnum;  dp = &dnum;    
  printf("ch = %c, num = %d, fnum = %f,  dnum = %lf \n", 
           ch, num, fnum, dnum );   
  printf("cp = %p, ip = %p, fp = %p, dp = %p \n", 
           cp, ip, fp, dp);    
  ch++; num++; fnum++; dnum++;    
  cp++; ip++; fp++; dp++;    
  printf("변수의 값과 포인터 변수를 1씩 증가 \n");   
  printf("ch = %c, num = %d, fnum = %f,  dnum = %lf \n", 
           ch, num, fnum, dnum );   
  printf("cp = %p, ip = %p, fp = %p, dp = %p \n",   
           cp, ip, fp, dp);   
  return 0; 
} 


 포인터 변수의 이해 

#include <stdio.h> 
 
int main(void) 
{ 
  int num[3]={100,200,300}, *ip;    
 
  printf("포인터의 증가 \n");   
  ip = num;    /* num 배열의 선두주소를 포인터 변수 ip에 할당 */ 
  printf("%d, %p \n", *ip, ip);   
  *ip++;           /* 포인터의 증가 */ 
  printf("%d, %p \n", *ip, ip);    
  printf("값의 증가 \n");   
  ip = num;    /* num 배열의 선두주소를 포인터 변수 ip에 할당 */ 
  printf("%d, %p \n", *ip, ip);   
  (*ip)++;  /* 값의 증가 */ 
  printf("%d, %p \n", *ip, ip);   
 
  return 0; 
} 

번호 제목 날짜 조회 수
43 구조체 포인터 2014.06.15 926
42 구조체의 선언과 데이터 입·출력 2014.06.15 3080
41 함수 포인터 2014.06.15 438
40 배열과 포인터 2014.06.15 402
» 포인터 연산 2014.06.15 383
38 포인터 변수 2014.06.15 411
37 데이터 정렬 2014.06.15 422
36 배열 초기화 2014.06.14 627
35 2차원 배열 2014.06.14 667
34 문자열 처리 함수 2014.06.14 407
33 문자열 입출력 함수 2014.06.14 435
32 접근 수정자 2014.06.14 819
31 전역 변수 2014.06.14 305
30 지역 변수(local variable) 2014.06.14 291
29 변수와 메모리 저장 위치 2014.06.14 423
28 비트 연산자 2014.06.14 284
27 관계 연산자와 논리 연산자 2014.06.14 467
26 증감 연산자 2014.06.14 316
25 printf() 함수의 형식 지정자 2014.06.14 7520
24 열거 형 변수의 이해 2014.06.14 465