국비지원 학원 - JAVA기반 스마트앱 개발2021/프로그래밍 언어활용
배열 포인트 처리
KDONG
2021. 7. 31. 15:55
학습내용
- 포인터 배열 기초
- 고급 포인터 배열 기술
학습목표
- 배열을 포인터 배열로 참조하는 방법을 구현할 수 있다.
- 구조체를 포인터 배열로 참조하는 방법을 구현할 수 있다.
포인터 배열 기초
1. 1차원 포인터 배열
- 주소를 저장하는 배열
1) 포인터 배열의 각 원소로 변수의 주소를 저장함
2) 배열의 각 원소가 포인터형이므로, 원소가 가리키는 변수에 접근 하려면 배열의 원소 앞에 간접 참조 연산자 *를 사용해야 함
2. 2차원 포인터 배열
- 포인터 배열의 각 원소에 배열의 시작 주소를 저장
- arr[i]가 int 배열의 시작 주소로 초기화되었을 때, arr[i]가 가리키는 배열의 원소에 접근하려면 arr[i][j]라고 씀
고급 포인터 배열 기술
1. 구조체 포인터 배열
1) 구조체 배열은 메모리를 많이 사용하므로 비효율적임
2) 구조체 포인터 배열을 이용하면 구조체는 동적 메모리에 할당하고 그 주소만 포인터 배열에 넣어두고 사용할 수 있음
3) 구조체 포인터 배열의 메모리 구조
2. 2차원 배열 포인터 처리
- 행 단위 포인터 변수
- 배열에 대한 포인터와 이차원 배열
1) 배열에 대한 포인터를 &arr[0]으로 초기화하는 대신, 간단하게 arr로 초기화할 수 있음
2) 배열에 대한 포인터 p로 이차원 배열의 원소에 접근하려면 p가 마치 이차원 배열명인 것처럼 2개의 인덱스를 사용하면 됨
학습정리
1. 포인터 배열 기초
- 각 변수의 주소를 배열과 같이 묶어서 처리하는 것이 가능함
- 배열의 주소를 포인터 배열에 저장하면 2차원 배열과 같이 참조할 수 있음
2. 고급 포인터 배열 기술
- 구조체 포인터 배열은 구조체를 이용하는 것보다 메모리 사용 측면에서 더 효율적임
- 2차원 배열은 열 크기를 기준으로 포인터 변수를 선언할 수 있음