-
C++ 포인터Visual Studio/C++ 기초 2013. 11. 5. 20:51
모든 데이터는 메모리 장치에 저장됩니다. 메모리 장치에 저장된 데이터를 참조하기 위해서는 데이터가 지정된 위치, 즉 주소를 지정해서 처리하여야 합니다.
일반적으로 메모리 장치는 1byte 단위로 주소가 지정되고, 메모리의 첫 번째 byte주소는 0번지, 1byte 증가할 때 마다 주소가 1씩 증가합니다.
포인터를 사용할 때 몇가지 주의사항이 있습니다.
1. 사용 전에 반드시 초기화해야 할 것.
2. 포인터 변수의 자료형을 반드시 지정해야할 것.
여기서 포인터는 void형으로 선언할 수 있는데요, 함수에 사용되는 반환 값이 없는 함수를 뜻하지만, 포인터 변수에 사용되는 void는 임의의 자료형을 가리키는 것을 의미합니다.
void *pa;
int a = 10;
이렇게 선언하면 컴파일 오류가 발생합니다.
pa가 알고 있는 것은 변수 a의 주소뿐이기 때문에 그것만으로는 값을 읽어들일 수가 없습니다. 메모리에서 값을 읽어 오기 위해선 값이 보관된 주소와 읽어올 자료의 길이를 알아야 하기 때문에 a에 대한 자료형으로 형변환을 해주어야 합니다.
간단한 예제를 들겠습니다.
#include <iostream>
using namespace std;int main(){
int a = 10, *pa;
pa = &a;
cout << "&a = " << &a << ", a = " << a << "\n";
cout << "pa = " << pa << ", *pa = " << *pa << "\n";
}&a의 값이 컴퓨터 환경에 따라 다를 수 있습니다.
먼저, pa = &a; << int형 변수 a의 시작 주소를 포인터 변수 pa에 대입하는 간단한 과정입니다.
포인터는 추후에 포스팅 하게 될 배열과 함께 포스팅 하겠습니다.
'Visual Studio > C++ 기초' 카테고리의 다른 글
C++ 다차원 배열 (0) 2013.11.07 C++ 1차원 배열 (2) 2013.11.07 C++ 함수 (0) 2013.10.12 C++ switch (0) 2013.10.10 C++ if, else if (0) 2013.10.10