C++ 포인터 연산

2014.06.15 00:41

엘카 조회 수:384

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

 자료형

크기 

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 931
42 구조체의 선언과 데이터 입·출력 2014.06.15 3084
41 함수 포인터 2014.06.15 447
40 배열과 포인터 2014.06.15 406
» 포인터 연산 2014.06.15 384
38 포인터 변수 2014.06.15 414
37 데이터 정렬 2014.06.15 424
36 배열 초기화 2014.06.14 630
35 2차원 배열 2014.06.14 670
34 문자열 처리 함수 2014.06.14 412
33 문자열 입출력 함수 2014.06.14 442
32 접근 수정자 2014.06.14 824
31 전역 변수 2014.06.14 308
30 지역 변수(local variable) 2014.06.14 295
29 변수와 메모리 저장 위치 2014.06.14 428
28 비트 연산자 2014.06.14 288
27 관계 연산자와 논리 연산자 2014.06.14 472
26 증감 연산자 2014.06.14 319
25 printf() 함수의 형식 지정자 2014.06.14 7522
24 열거 형 변수의 이해 2014.06.14 465