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차원 배열은 열 크기를 기준으로 포인터 변수를 선언할 수 있음