포인터와 동적 객체 생성
포인터
포인터(pointer)
메모리의 주소값을 저장하는 변수
변수 선언시 타입 뒤에 *를 지정
int *p; // 정수를 가리키는 포인터 선언
주소 연산자 &
기존 변수의 주소 값을 획득하여 포인터 변수에 저장할 때 사용
int number = 10;
int *p; // 정수를 가리키는 포인터 선언
p = &number;
간접 참조 연산자 *
포인터 변수에는 주소가 저장되어있음
그 주소에 저장되어 있는 데이터를 얻을 때 사용
#include <iostream> using namespace std; int main() { int number = 0; double d = 20.2; int *p = &number; // p = &d; // 에러 double *pd = &d; cout << p << endl; cout << *p << endl; cout << sizeof(number) << "," << sizeof(d) << endl; cout << sizeof(p) << endl; // int * cout << sizeof(pd) << endl; // double * return 0; }
0x61fe0c
0
4,8
8
8
NULL
포인터가 아무것도 가리키지 않는 것을 의미하는 특수한 데이터
- 0으로 해석되므로 int이기도 하면서 포인터 이기도 함
포인터 변수를 초기화할 때 사용
nullptr 사용 가능
- 포인터로만 해석
#include <iostream> using namespace std; void f(int i) { cout << "f(int)" << endl; } void f(char *p) { cout << "f(char *)" << endl; } int main() { int *pNumber = NULL; // 권장 int *pNumber2; // 권장하지 않음, 임의의 초기값을 가짐 if(pNumber != NULL) { // 포인터 안정성 검사 cout << *pNumber << endl; } if(pNumber2 != NULL) { // 결과 장담 못함... cout << *pNumber2 << endl; } // f(NULL); -- int, char * 둘 다 가능하므로 에러 f(nullptr); // nullptr : 포인터 NULL의 의미하는 키워드 return 0; }
17439201
f(char *)
관례 : pointer 변수 --> pNumber
'IoT 디바이스 활용 > C++' 카테고리의 다른 글
C++ - 객체의 동적 생성 (0) | 2020.10.12 |
---|---|
C++ - 동적 할당 메모리 (0) | 2020.10.12 |
C++ - 객체 배열, 벡터 (0) | 2020.10.12 |
C++ - 객체와 함수 (0) | 2020.10.12 |
C++ - 생성자와 접근 제한자 (0) | 2020.10.12 |
댓글