글
■ 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 |
RECENT COMMENT