포인터는 메모리의 주소를 저장하는 변수다.
포인터 연산을 하면 데이터 타입에 따라 주소를 옮겨준다.
즉, 실생활을 생각하면 지하철의 앞칸, 뒷칸의 열차번호는 현재열차번호를 알면 알 수 있다.
포인터 변수를 선언하고 변수에 연산 +1,-1해주면 앞뒤 주소를 알 수 있다.
int val = 7;
int *ptr = &val;
//int형 앞뒤 주소를 알 수 있다.
cout << uintptr_t(ptr) << endl;
cout << uintptr_t(ptr + 1) << endl;
cout << uintptr_t(ptr - 1) << endl;
포인터 연산으로 배열의 값과 주소를 똑같이 알아올 수 있다.
(uintptr_t)를 사용하면 16진수가 아닌 8진수로 출력된다.
cout << uintptr_t(ptr) << endl;
int형 char형 배열 포인터 연산
#include <iostream>
using namespace std;
int main()
{
int val = 7;
int *ptr = &val;
cout << uintptr_t(ptr) << endl;
cout << uintptr_t(ptr + 1) << endl;
cout << uintptr_t(ptr - 1) << endl;
int arr[] = { 9,7,5,3,1 };
int *ptrArr = arr;
for (int i = 0; i < 5; i++) {
cout << arr[i] << " addr : " << (uintptr_t)&arr[i] << endl;
cout << *(ptrArr + i) << " addr : " << (uintptr_t)(ptrArr + i) << endl;
}
char name[] = "Choi";
const int n_name = sizeof(name) / sizeof(name[0]);
cout << "n_name : " << n_name << endl;
for (int i = 0; i < n_name; i++) {
cout << *(name + i);
}
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ 동적할당배열,포인터와 const (0) | 2019.07.26 |
---|---|
c++ 메모리 동적할당 new와 delete (0) | 2019.07.26 |
c++ C언어 스타일 배열문자열,문자열 심볼릭 상수 (0) | 2019.07.25 |
c++ 포인터와 정적배열 (0) | 2019.07.25 |
c++ 널 포인터 Null Pointer (0) | 2019.07.25 |