포인터란 ?
물리적인 메모리 공간에 접근하여 저장된 변수의 값이나 할당된 주소를 변경할 수 있는 연산자이다.
포인터의 특징
모든 포인터의 크기는 자료형에 관계없이 모두 16비트이다.
포인터 변수의 선언은 편수 앞에 '*' (Asterisk)를 붙여 선언한다.
포인터 변수를 초기화하는 방법에는 두가지가 있다. '&'(엔퍼센트)와 '*'(에스터리스크)를 사용하는 방법이다.
'&'는 주소를 의미하고, '*'는 값을 의미한다고 한다.
C언어 선생님께서는 메모리에는 레벨이 있고, 주소값이 저장된 레벨과
값이 저장된 레벨은 서로 달라서 '*'나'&'를 통해서만 서로 상호간 값을 주고받을 수
있다고 알기쉽게 설명해주셨다.
포인터의 주소를 출력할때는 %p, 그 외의 자료형 값을 출력할 때에는 그 자료형에 맞는 연산자를 사용한다(%d, %lf등...)
예를 들어,
int num=100; //int 형 변수 선언&초기화
int *numPtr; //포인터 변수 선언
numPtr=# //포인터 변수 numPtr에 num의 주소 할당
이라 한다면, int 형 변수 num의 값 100이 담겨있는 주소를 numPtr에 넣는다는 의미이다.
또
int num=100;
int *numPtr;
*numPtr=num; //numPtr에 num의 값 저장.
이라 하면, 포인터 변수 numPtr에는 num의 값 100이 들어간다.
상수 포인터와 void 포인터도 있는데, 상수 포인터는 하나의 값으로 초기화 하면, 그 값을 바꿀수 없는 포인터이고
void 포인터는 주로 함수 입력에 많이 사용하는데, 강제형변환을 통에 값을 넣을 수 있다고 한다.