개인노트
int main(void) {int num1 = 10, num2 = 20, num3 = 30, num4 = 40, num5 = 50;int arr[2][4] = { 1,2,3,4,5 }; int *ptr1[5] = { &num1,&num2,&num3,&num4,&num5 }; // 포인터 배열int (*ptr2)[4] = arr; //배열 포인터 system("pause");} 포인터 배열과 배열 포인터의 차이점을 알고 넘어가자. 포인터 배열은 포인터의 기능인 주소값을 저장하지만 그 대상이 여러개일 때 유용하며, 배열의 형식으로 저장된다. 배열 포인터는 다차원 배열의 포인터이다.
int arr[3][4];의 포인터 변수 선언은 int *ptr [4];와 같이 선언한다.자료형은 같게하고 포인터 변수명을 쓰고 대괄호 안에는 배열의 열의 갯수를 쓴다.
길이가 3인 1차원 배열 arr를 선언하고 arr+1을 출력하면 어떤 결과가 나올까? int arr[3]={1,2,3};printf("arr + 1 : ", arr + 1 ); [ arr = arr[0] ] 1차원 배열에서 배열의 이름은 배열의 첫번째 요소를 가리키고, int형 배열은 배열의 요소마다4Byte씩 사용 할 수 있다. 즉, arr의 크기는 12Byte이고 arr+1은 arr + 4Byte(자료형의 크기)라고 할 수 있다.arr + 1은 arr[1]인 것이다. 이제 2차원 배열의 포인터 연산을 해보자. int arr1[2][3];int arr2[3][5]; 위와같은 2차원 배열 2개를 선언한 후 각자 배열의 이름에 +1을 더해보자. #include #include "stdlib.h" int m..