포인터의 기본 개념
•
포인터의 역할
임의의 메모리에 접근하여 값을 저장하거나 읽는 역할
•
포인터 변수?
메모리 주소를 저장 하는 변수
'*' 의 역할
•
(간접) 참조 연산자 ' * ' 의 역할과 의미
◦
선언된 변수가 포인터 변수임을 나타내는 역할
ex ) int pVar == int pVar;
◦
포인터 변수에 저장된 메모리 주소로 접근한 메모리 영역의 데이터(값)를 의미
◦
참조를 접근으로 이해하자.
포인터 선언
•
선언 형식
데이터형 *변수명;
예) int *pPtr;
다수의 포인터 변수 선언 형식
int *pPtr1, *pPtr2, *pPtr3;
포인터 데이터형
•
포인터 데이터형에 따른 의미
모두 4 byte(32bit환경) 크기를 가진다.
일반 변수의 선언과 그 의미
int nVar; → nVar; → 0x8000C7A0 : 4 byte
nVar = 3;
메모리 주소 0x8000C7A0 에 값 3이 저장되어 있고 크기는 4 byte 이다.
포인터 변수의 선언과 의미
•
int nVar = 7;
int *pPtr = &nVar;
포인터 pPtr이 가지는 메모리 주소에 있는 값은 nVar의 주소를 가지고 있다.
•
&, Ampersnd의 의미
주소 연산자, 변수의 메모리 주소
포인터 변수 실습
#include <stdio.h>
int main(void){
int var1 = 10;
int *ptr = &var1;
*ptr = 12;
printf("%p %p\n", &var1, ptr);
printf("%d %d\n", var1, *ptr);
return 0;
}
C
복사
포인터 변수의 사용 예
•
int nVar = 7;
int *pPtr = &nVar;
*pPtr = 12;