본문 바로가기
C언어/배열

[C언어] 2차원 배열의 이름 증감연산 (포인터)

by bigpicture 2022. 7. 7.
반응형

2차원 배열 두개를 정의했습니다. ar1 은 3행 2열의 배열이고, ar2 는 2행 3열의 배열입니다. 1씩 더해서 주소를 출력했습니다. 배열의 이름에 주소가 저장됩니다. 배열은 포인터입니다. 첫번째 원소를 가리키는 포인터입니다. 

#include <stdio.h>

int main ()
{
    int ar1[3][2];
    int ar2[2][3];
    
    printf("%p \n",ar1);
    printf("%p \n \n",ar1+1);

    printf("%p \n",ar2);
    printf("%p",ar2+1);
}

 

결과는 아래와 같습니다. 

 

 

3행2열의 배열은 1을 더하면 8이 증가합니다. 아래와 같은 이유 때문입니다. 

 

 

첫번째 원소에서 세번째 원소가 되므로 4+4 만큼 주소가 shift 되는 것입니다. 

 

2행3열인 배열은 1을 더하면 c만큼 증가하는데 c는 12입니다. 이유는 위와 같습니다. 첫번째 원소에서 네번째 원소가 되므로 4+4+4 만큼 주소가 shift 된 것입니다. 

 

반응형

댓글