배열의 내부적 처리
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
01 02 03
04 05 06
ari[0], ari[1] 라는 부분 배열이 배열명으로 인정되며 부분 배열 혼자만 떼어내서 사용하는 것이 가능하다. ari[0]는 배열의 이름이기 때문에 부분 배열의 시작 번지를 가리키는 포인터 상수이며 따라서 arDump 함수로 전달할 수 있다.