포인터

이유정·2023년 9월 14일

c언어

목록 보기
5/16

· 포인터 정의

포인터(pointer)란, 메모리 공간의 주소를 가리키는 변수
포인터 변수로도 불림
역참조란, 포인터가 가리키는 값을 가져오는 것임

· 포인터 종류

(1) 주소 연산자(&)
변수의 이름 앞에 사용하여, 해당 변수의 주소값을 반환
'&'는 ampersand라고 읽으며, 번지 연산자라고도 함

(2) 참조 연산자(*)
포인터 이름이나 주소 앞에 사용하여, 포인터가 가리키는 주소에 저장된 값을 반환
c언어에서 '*' 기호는 이항연산자로 사용하면 곱셈 연산으로 사용되며, 포인터의 선언 시나 메모리에 접근할 때도 사용됨

· 포인터 기능

포인터는 컴퓨터 시스템의 특정 메모리에 바로 접근 가능
따라서 기존에 존재하던 중요한 메모리 영역에 접근하지 않도록 유의해야함

· 포인터 할당 및 해제

c언어에서 변수는 정적, 동적 변수가 있음

(1) 정적변수: 처리할 데이터의 숫자를 예측할 수 있는 경우 선언
예측 불가하다면 최대의 데이터 처리량을 정한 후, 선언

(2) 동적변수: 정적변수의 문제를 해결하기 위해 사용

ex. malloc() 함수 사용하여 데이터 저장공간 확보
      할당 malloc(): heap 영역으로부터 데이터 공간 할당받음
      재할당 realloc(): 이미 할당된 메모리 공간 크기 조정
      해제 free(): 더 이상 쓸 필요가 없는 메모리 공간을 heap 영역에 반환 

· 포인터 연산

v = *p++: p가 가리키는 값을 v에 대입한 후, p를 증가
v = (*p)++: p가 가리키는 값을 v에 대입한 후, p가 가리키는 값을 증가
v = *++P: p를 증가시킨 후, p가 가리키는 값을 v에 대입
v = ++*p: p가 가리키는 값을 가져온 후, 그 값을 증가하여 v에 대입
profile
안녕하세요 이유정입니다. 반갑습니다.

0개의 댓글