SW/C++

C++11 : 포인터에 대해 알아볼까요?

얇은생각 2018. 12. 20. 07:30
반응형

포인터는 참조자와 유사하게 주소로 특정 변수나 객체를 참조할 수 있습니다.

포인터변수에는 특정 변수의 주솟값이 저장됩니다.

참조자와 다른 점은 가리키는 대상이 없을 수 있고 가리키는 대상을 언제든 변경할 수 있습니다.

따라서 초기화할 필요도 없겠죠?


변수명 앞에 *를 선언하면 포인터 변수를 지정할 수 있습니다.

정수형 변수 value를 선언하고 100으로 값을 초기화합니다.

그 다음 pointerValue를 포인터 변수로 선언해 value 변수의 주소 참조 값을 저장합니다.


int value = 100;

int* pointerValue = &value;


다음의 예제의 결과를 생각해보세요. 

그리고 한번 돌려보시고 메모리 주소를 확인해봅시다.

이번 포스팅에서는 간단하게 다루겠습니다.

이미 좋은 강좌들이 많으니 참고하여 다루어주세요.


#include <iostream>
using namespace std
 
int main()
{
    int value = 100;
    int* pointerValue = &value;
    cout << value << endl;
    cout << &value << endl;
    cout << pointerValue << endl;cout << *pointerValue << endl;
    cout << &pointerValue << endl;
    int** ppointerValue = &pointerValue;
}    
cs



null 포인터

포인터는 초기화를 하지 않아도 됩니다.

중간에 가리키는 변수의 주소를 변경할 수 있습니다.

따라서 쓰레기 값이 저장되는 것을 방지하기 위해 null pointer를 할당하는 것입니다.

C++11 표준부터는 다음처럼 nullptr을 사용할 수 있습니다.

모든 포인터 형으로 형변환 할 수 있습니다.



void 포인터

void 포인터는 클래스 템플릿 처럼 자료형을 미리 지정하지 않고 나중에 원하는 형태로 자유롭게 변환할 수 있는 유용한 기능입니다. 고급 개발자들이 추상화를 구현할 때 자주 사용하는 패턴입니다.

반응형