본문 바로가기
C++/포인터

[C++] 포인터에서 덧셈 뺄셈 연산

by bigpicture 2022. 8. 11.
반응형

포인터 변수를 하나 선언해봅시다. 

int a=3;
int *p=&a;


p에는 a의 주소가 저장됩니다. 출력하면 아래와 같습니다. 

0x7ffdc969234c

만약 p에 1을 더하면 어떤 결과가 발생할까요. 1,2,3을 더하고 출력하면 결과는 아래와 같습니다. 

0x7ffc9f9d2a4c
0x7ffc9f9d2a50
0x7ffc9f9d2a54
0x7ffc9f9d2a58

위 값은 16진수입니다. 0x 는 16진수라는 의미입니다. 맨 뒷자리만 보면 주소가 입력된 포인터변수에 1을 더할 때마다 c, 0, 4, 8 로 변하고 있습니다. 16진수에서 c는 12입니다. 12에 4를 더하면 16이 되고 자릿수가 변하므로 첫자리는 0이 됩니다. c,0,4,8은 4씩 증가하는 것을 알 수 있습니다. 

int로 선언된 포인터변수에 1을 더하면 주소값이 4 증가합니다. int는 4바이트 메모리 공간을 사용합니다. 주소값이 4 증가한다는 것은 메모리 공간의 다음 주소로 이동한 것임을 알 수 있습니다. 

이번에는 메모리공간 8바이트를 사용하는 double 변수를 선언하고 테스트해봅시다. 

double a=3;
double *p=&a;


1,2,3을 더하고 출력하면 결과는 아래와 같습니다. 

0x7ffda9c9ab38
0x7ffda9c9ab40
0x7ffda9c9ab48
0x7ffda9c9ab50

주소값이 8씩 증가하는 것을 알 수 있습니다. 

반응형

댓글