배열의 내부적 처리
 C에서 다차원 배열이란 1차배열의 연장선을 말한다. 내부적으로는 하나로 쭉 연결된 구조이다. 하지만 부분 배열이 온전하게 배열로 대접받는다

#include <Turboc.h>

void arDump(void *array, int length);

void main(void)
{
	unsigned char ari[2][3] = {{1,2,3},{4,5,6}};

	arDump(ari, sizeof(ari));
	arDump(ari[0], sizeof(ari[0]));
	arDump(ari[1], sizeof(ari[1]));
}

void arDump(void *array, int length)
{
	int i;
	for(i=0;i<length;i++){
		printf("%02X ", *((unsigned char *)array+i));
	}

	printf("\n");
}
결과

01 02 03 04 05 06
01 02 03
04 05 06

ari[0], ari[1] 라는 부분 배열이 배열명으로 인정되며 부분 배열 혼자만 떼어내서 사용하는 것이 가능하다. ari[0]는 배열의 이름이기 때문에 부분 배열의 시작 번지를 가리키는 포인터 상수이며 따라서 arDump 함수로 전달할 수 있다.

+ Recent posts