´ÙÂ÷¿ø(multidimensional) ¹è¿À» µ¿ÀûÀ¸·Î ÇÒ´ç
°¡Àå ³Î¸® ¾²ÀÌ´Â ¹æ¹ýÀº Æ÷ÀÎÅÍÀÇ ¹è¿À» ÇÒ´çÇÏ°í, °¢ Æ÷ÀÎÅÍ°¡ µ¿ÀûÀ¸·Î ÇÒ´çÇÑ [¿(row)]À» °¡¸®Å°°Ô ÇÏ´Â ¹æ¹ýÀÌ´Ù. ´ÙÀ½ ÄÚµå´Â 2Â÷¿ø ¹è¿À» µ¿ÀûÀ¸·Î ÇÒ´çÇÑ °ÍÀÌ´Ù.
#include <stdlib.h>
int **array1 = malloc(nrows * sizeof(int *)); for (i=0; i<nrows; i++) array1[i] = malloc(ncolumns * sizeof(int));
(½ÇÁ¦ Äڵ带 ¾µ ¶§¿¡´Â mallocÀÇ ¸®ÅÏ °ªÀ» °Ë»çÇØ ÁÖ¾î¾ß ÇÑ´Ù)
¹è¿ÀÇ ³»¿ëÀ» ¿¬¼ÓÀûÀ¸·Î ¸¸µé·Á¸é, °¢°¢ÀÇ ¿À» µû·Î ÀçÇÒ´çÇؾßÇÏ´Â ¼ö°í¸¦ ÇØ¾ß ÇÑ´Ù.
int **array2 = malloc(nrows * sizeof(int *)); array2[0] = malloc(nrows * ncolumns * sizeof(int)); for (i = 1; i < nrows; i++) array2[i] = array2[0] + i * ncolumns;
µÑ Áß ¾î¶² °ÍÀ̶óµµ, µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ¹è¿ÀÇ °¢ ¿ä¼Ò´Â ÀϹÝÀûÀÎ ¹è¿ subscript ¿¬»êÀÚÀÎ [] ¸¦ ½á¼ ´Ù·ê ¼ö ÀÖ´Ù.
arrayx[i][j] (ÀÌ ¶§ 0 <= i < nrows ¿Í 0 <= j < ncolumns¸¦ ¸¸Á·ÇØ¾ß ÇÑ´Ù)
À§¿Í °°ÀÌ µÎ¹ø °£Á¢ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ´Â °ÍÀÌ ¾î¶² ÀÌÀ¯·Î ÀÎÇÏ¿© ºÒ°¡´ÉÇÏ´Ù¸é, ´ÙÀ½°ú °°ÀÌ ¸Þ¸ð¸®¸¦ ÇÑ ¹ø¸¸ ÇÒ´çÇÒ ¼öµµ ÀÖ´Ù. Áï ÀÏÂ÷¿ø ¹è¿À» ´ÙÂ÷¿ø ¹è¿·Î Èä³»³»´Â °ÍÀÌ´Ù.
int *array3 = malloc(nrows * ncolumns * sizeof(int));
±×·¯³ª, ÀÌ·± ½ÄÀ¸·Î ¸¸µé¾ú´Ù¸é °¢°¢ÀÇ ¿ä¼Ò¿¡ Á¢±ÙÇϱâ À§ÇØ ¾à°£ÀÇ °è»êÀ» ÇØ¾ß ÇÑ´Ù. (i, j) ¹ø° ¿ä¼Ò¿¡ Á¢±ÙÇϱâ À§Çؼ´Â array3[i * ncolumns + j] ¶ó°í ÇØ¾ß ÇÑ´Ù. (¸ÅÅ©·Î¸¦ ½á¼ °£ÆíÇÏ°Ô ÇÒ ¼ö ÀÖÁö¸¸ °ýÈ£¿Í Äĸ¶(comma)¸¦ ½á¾ß Çϱ⠶§¹®¿¡, ¿ø·¡¿Í °°Àº Ç¥ÇöÀ» ¾µ ¼ö´Â ¾ø´Ù)
¶Ç ´Ù¸¥ ¹æ¹ýÀ¸·Î ¹è¿¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾²´Â ¹ýµµ ÀÖ´Ù.
int (*array4)[NCOLUMNS] = malloc(nrows * sizeof(*array4));
±×·¯³ª ¾²´Â Çü½ÄÀÌ ±î´Ù·Ó°í ½ÇÇà ½Ã°£¿¡ Àû¾îµµ ÇϳªÀÇ Â÷¿ø(dimension)ÀÌ ÁöÁ¤µÇ¾î¾ß ÇÑ´Ù.
ÀÌ ¸ðµç Å×Å©´Ðµé¿¡¼ µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ¸Þ¸ð¸®´Â ³ªÁß¿¡ ÀüºÎ ÇØÁ¦(free)½ÃÄÑ ÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀ» ÀØÀ¸¸é ¾ÈµÈ´Ù. (¹°·Ð ¿©·¯ ´Ü°è°¡ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù)
±×¸®°í µ¿ÀûÀ¸·Î ÇÒ´çÇÑ ¹è¿°ú Á¤ÀûÀ¸·Î ÇÒ´çµÈ º¸Åë ¹è¿°ú ¹Ýµå½Ã ¼¯¾î¾µ ¼ö ÀÖ´Â °Íµµ ¾Æ´Ï´Ù.
¸¶Áö¸·À¸·Î C9X¿¡¼´Â Å©±â º¯°æÀÌ °¡´ÉÇÑ ¹è¿À» Áö¿øÇÑ´Ù.
¿©±â¿¡¼ ¾ð±ÞÇÑ ¸ðµç Å×Å©´ÐµéÀº »ïÂ÷¿ø ¶Ç´Â ±× ÀÌ»óÀÇ Â÷¿øÀÇ ¹è¿¿¡µµ Àû¿ëÇÒ ¼ö ÀÖ´Ù.
|
|
|