[C언어] 꼭 알아야 할 배열 포인터
태스트 : Visual Studio 2008.
#include <stdio.h>
main()
{
int i, j;
int imsi[3][2] = {{6, 3}, {9, 1}, {7, 2}};
int (*imsip)[2];
imsip = imsi;
for(i = 0; i < 3; i++)
for(j = 0; j < 2; j++)
printf("[ %d][ %d] %d\n", i, j, *(*(imsip + i) + j));
printf("################################################\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 2; j++)
printf("[ %d][ %d] %d\n", i, j, *(imsip[i] + j));
printf("################################################\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 2; j++)
printf("[ %d][ %d] %d\n", i, j, imsi[i][j]);
printf("################################################\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 2; j++)
printf("[ %d][ %d] %d\n", i, j, imsip[i][j]);
}
출력
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2
################################################
[ 0][ 0] 6
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2
################################################
[ 0][ 0] 6
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2
################################################
[ 0][ 0] 6
[ 0][ 1] 3
[ 1][ 0] 9
[ 1][ 1] 1
[ 2][ 0] 7
[ 2][ 1] 2
2. 2차원 배열 포인터 변수에 주소 할당
#include <stdio.h>
main()
{
int imsi[3];
int *imsip;
imsip = imsi;
printf("%d\n", sizeof(imsi));
printf("%d\n", sizeof(imsip));
printf("%d\n", sizeof(*imsip));
}
결과
12
4
4
설명 :
imsi[0] + imsi[1] + imsi[2] 이므로 4 + 4 + 4 = 12Byte
imsip, *imsip 는 포인터 변수이므로 무조건 4Byte로 할당됩니다.
'소프트웨어(SW) > GNU - C, C++' 카테고리의 다른 글
[C언어] 문자열에 대해서 (163) | 2009.06.07 |
---|---|
[C언어] 포인터 배열 정리 (134) | 2009.06.07 |
[C언어] 포인터 변수 관계 (124) | 2009.06.07 |
[C언어] 포인터 변수에 번지 할당 (130) | 2009.06.07 |
[C언어] 포인터를 이용한 다중 배열 요소의 출력 - 2 - (128) | 2009.05.14 |