■ 2차원 배열의 연산은 연산자에 의해 달라진다.


(1) CODE

#include<stdio.h>

int main()
{
    int arr[2][3] = {{1,2,3},{4,5,6}};

    printf("arr         = %x\n", arr);
    printf("**arr       = %x\n\n", **arr);

    printf("arr[0]+1    = %x\n", arr[0]+1);
    printf("*(arr[0]+1) = %x\n\n", *(arr[0]+1));

    printf("arr+1       = %x\n", arr+1);
    printf("**(arr+1)   = %x\n\n", **(arr+1));

    printf("&arr+1      = %x\n", &arr+1);

    return 0;
}


(2) RESULT

arr       = bfe2bcf0
**arr     = 1

arr[0]+1  = bfe2bcf4
*arr[0]+1 = 2

arr+1     = bfe2bcfc
**arr+1   = 4

&arr+1    = bfe2bd08


(3) Explanation

- arr : 배열 첫번째 인자의 주소값
- arr[0]+1 : arr + 4바이트(int 이므로)한 주소값
- arr+1 : arr + 12바이트(int*3)한 주소값 => 한 행 이동
- &arr+1 : arr + 24바이트(전체 배열의 크기)한 주소값

● 포인터를 이용한 데이터값 출력 부분은 다중포인터에 관한 이론 참조.


'P rogramming > C Language' 카테고리의 다른 글

1차원 배열과 포인터 이론  (0) 2011.10.26
포인터 이론  (0) 2011.10.26
2차원 배열의 포인터  (0) 2011.10.25
배열과 포인터의 관계  (0) 2011.10.25
포인터의 const  (0) 2011.10.24
by 민트앤라떼 2011. 10. 25. 17:32