본문 바로가기

C_C++

2차원 배열 이름의 포인터 타입

※ 다차원(2차원) 배열의 포인터 타입 결정 포인트
    - 포인터가 가리키는 요소의 자료형
    - 포인터 연산시 증가하는 바이트의 크기

※ 2차원 배열 이름
    - 포인터가 가리키는 요소의 자료형이 같다 해도 포인터 연산시 증가하는 값(바이트)의 크기 불일치! (포인터 연산 결과도 생각.)


======================================================

#include <stdio.h>
int main(void)
{
int a[3][2]={1, 2, 3, 4, 5, 6};

printf("a[0] : %d \n", a[0]);
printf("a[1] : %d \n", a[1]);
printf("a[2] : %d \n", a[2]);

printf("a    : %d \n", a);

return 0;
}


결과


=======================================================================

#include <stdio.h>

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

printf("a   : %d \n", a);
printf("a+1 : %d \n", a+1);
printf("a+2 : %d \n", a+2);

printf("a[0] : %d \n", a[0]);
printf("a[1] : %d \n", a[1]);
printf("a[2] : %d \n", a[2]);

printf("*(a+0) : %d \n", *(a+0));
printf("*(a+1) : %d \n", *(a+1));
printf("*(a+2) : %d \n", *(a+2));
printf("\n");

printf("a   : %d \n", sizeof(a));
printf("a+1 : %d \n", sizeof(a+1));
printf("a+2 : %d \n", sizeof(a+2));

printf("a[0] : %d \n", sizeof(a[0]));
printf("a[1] : %d \n", sizeof(a[1]));
printf("a[2] : %d \n", sizeof(a[2]));

printf("*(a+0) : %d \n", sizeof(*(a+0)));
printf("*(a+1) : %d \n", sizeof(*(a+1)));
printf("*(a+2) : %d \n", sizeof(*(a+2)));

return 0;
}


결과