Part12 포인터란 무엇인가
12.1 포인터란
- 주소를 저장하는 변수
- C언어의 장점 중 하나, 메모리 주소를 참조해서 다양한 자료형 변수들의 접근과 조작 용이
- 메모리 주소를 참조하여 배열과 같은 연속된 데이터에 접근과 조작 용이
- 동적 할당된 메모리 영역(힙영역)에 접근과 조작 용이
- 포인터 변수는 4바이트 크기의 메모리 공간이 할당됨(함수 포인터도 동일)
12.2 포인터 변수의 선언과 사용
int* pointer=NULL;
자로형 포인터 변수 이름 NULL 포인터 설정
- 자료형: 포인터 변수의 자료형을 지정, 자료형 다음에 * 연산자를 붙임
- 포인터 변수 이름: 주소를 저장할 변수의 이름을 지정
- NULL 포인터 설정: 포인터 변수 선언 시 NULL로 초기화
12.3 다차원 포인터 변수의 선언과 사용
- 2차원 이상의 포인터 변수, 자료형 다음에 차원의 수 만큼 * 연산자를 붙임
ex)
int** p2=NULL;
int*** p3=NULL;
12.4 주소의 가감산
- 자료형은 모두 주소를 가지며 주소의 가감산이 가능
- 각각의 주소를 가감산하면 자료형의 크기에 따라 결과가 다름
- char형 주소에 +1를 하면 1바이트 증가, int형 주소에 +1을 하면 4바이트 증가, double형 주소에 +1을 하면 8바이트 증가
12.5 함수 포인터
함수 이름은 함수의 시작 주소
- 함수를 실행하기 위해서는 함수가 있는 메모리 공간의 주소를 알아야 하는데 그것이 함수의 이름
함수 포인터란 함수의 시작 주소를 저장하는 변수
int (*pointer) (int, int)
자로형 함수 포인터 이름 인수 자료형 목록
- 자료형: 가리키는 대상이 되는 함수의 자료형을 설정
- 함수 포인터 이름: 함수 포인터의 이름을 설정하며 괄호와 *을 반드시 사용
- 인수 자료형 목록: 가리키는 대상이 되는 함수의 인수들의 자료형 목록
Reference
강의: 박정민, 『C 프로그래밍』, KOCW 한국산업기술대학교, 12강
교재: 박정민, 『열혈강의 C 언어 본색 명강의가 일으키는 C 언어 기적』, 프리렉 (2011), p327-364.