반응형
포인터 변수를 하나 선언해봅시다.
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씩 증가하는 것을 알 수 있습니다.
반응형
'C++ > 포인터' 카테고리의 다른 글
[C++] 배열의 원소를 포인터로 접근하기 ar[i]=*(ar+i) (0) | 2022.08.12 |
---|---|
[C++] 포인터에서 * 연산자의 두 가지 사용법 (0) | 2022.08.12 |
[C++] 변수의 주소는 몇 진수일까 (0) | 2022.08.11 |
[C++] 포인터에서 p와 *p의 차이 (0) | 2022.08.11 |
[C++] 포인터란 무엇인가 (0) | 2022.08.11 |
댓글