포인터 배열 , 배열 포인터

2024. 7. 24. 20:39정보처리,전산/Clang

반응형
#include <stdio.h>

int main() {
    int a[3][3] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
    
    // 포인터를 배열의 첫 번째 요소로 설정
    int (p)[3] = a;

    // (p[2] + 1) 은 a[2][1]의 값
    // (p[0] + 3) 은 a[0][3]의 값을 (경계 밖)
    printf("%d\n", (p[2] + 1) - (p[0] + 3));

    return 0;
}




   - a는 3x3 크기의 2차원 배열이다. 배열의 요소는 행 우선 순서로 초기화된다.


   - p는 int[3] 타입의 포인터이다. 즉, p는 3개의 정수로 구성된 배열을 가리킨다. p는 a의 시작 주소를 가리킨다.

 

 

포인터와 배열 포인터 차이

- 배열 포인터: int (*p)[3]는 3개의 정수를 포함하는 배열을 가리키는 포인터이다. 즉, p는 2차원 배열 a의 각 행을 가리킨다.

- 포인터 배열: int *p[3]는 int 타입의 포인터를 3개 포함하는 배열이다. 즉, 포인터를 요소로 가지는 배열이다.

반응형