정의 : 데이터가 저장되는 메모리의 주소 값을 저장하기 위한 변수
주소 값 : 메모리 영역의 1byte마다 주소 값이 존재
->32(64)bit 시스템에서는 주소값을 32(64)bit으로 표현
->따라서 주소값의 크기와 포인터 변수의 크기는 같음
(32bit = 4byte, 64bit = 8byte)
int main(void) { int num = 7 int * pnum; -> 포인터 변수 pnum의 선언 pnum = # -> 포인터 변수 pnum에 변수 num의 주소 값 저장 }
포인터 변수 기초 코드
int num = 10; -> 변수 num에 10저장 int * pnum = # -> 변수 num의 주소값을 반환하여 포인터 변수 pnum에 저장 *pnum = 20; -> 포인터 변수 pnum이 가리키는 변수를 참조하여 20을 저장
포인터 변수 심화 코드
int num1 = 10; int num2 = 20; int* ptr1 = &num1; int* ptr2 = &num2; *ptr1 += 10; // * 연산자를 활용해 포인터 변수 ptr이 가리키는 변수를 참조 *ptr2 -= 10; ptr1 = &num2; // * 연산자를 활용할 필요 없음. 포인터 변수가 가리키는 변수를 바꿀 것이기 때문 ptr2 = &num1; printf("포인터 변수 ptr1 %d ", *ptr1); // * 연산자는 필요. 포인터 변수가 가리키는 값을 참조 return 0;
포인터 변수 특이사항
int main(void) { int * ptr1 = 0; int * ptr2 = NULL; }