Æ÷ÀÎÅÍ ¹è¿Àº ¹Ù·Î ¾Õ Àý¿¡¼ ¹è¿ü°í ÀÌ Àý¿¡¼´Â ¹è¿ Æ÷ÀÎÅÍ¿¡ ´ëÇØ ¾Ë¾Æ º»´Ù. ÀÌ µÑÀº À̸§ÀÌ ºñ½ÁÇؼ ´Ù¼Ò È¥¶õ½º·¯¿ï ¼ö Àִµ¥ À̸§¸¸ ºñ½ÁÇÏÁö ¿ÏÀüÈ÷ ´Ù¸¥ °ÍÀÌ´Ù. ¹è¿ Æ÷ÀÎÅÍ´Â »ç¿ë ºóµµ°¡ ±×¸® ³ôÁö ¾ÊÀ¸¸ç ½Ç¿ë¼ºµµ ¶³¾îÁø´Ù. ¹®¹ýÀû ´ëĪ¼ºÀ» À§ÇØ Á¸ÀçÇϴµ¥ Æ÷ÀÎÅÍ ¹è¿ÀÌ ÀÖÀ¸´Ï ¹è¿ Æ÷ÀÎÅ͵µ ´ç¿¬È÷ ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ Æ÷ÀÎÅ͸¦ ¿ÏÀüÇÏ°Ô ÀÌÇØÇϱâ À§Çؼ´Â °³³äÀ» Àß ¾Ë¾Æ µÎ¾î¾ß ÇÑ´Ù. Æ÷ÀÎÅÍ ¹è¿°ú ¹è¿ Æ÷ÀÎÅ͸¦ ºñ±³ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.
¡á Æ÷ÀÎÅÍ ¹è¿(Array of Pointer) : ±× ¿ø¼Ò°¡ Æ÷ÀÎÅÍÀÎ ¹è¿ÀÌ´Ù. °¢°¢ÀÇ ¹è¿ ¿ä¼ÒÀÎ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ´ë»óÀº ¿øÄ¢ÀûÀ¸·Î ÀÓÀÇÀÇ Å¸ÀÔÀ» °¡Áú ¼ö ÀÖÁö¸¸ ÁÖ·Î ¹®ÀÚÇüÀ» °¡¸®Å°´Â °æ¿ì°¡ ¸¹´Ù.
¡á ¹è¿ Æ÷ÀÎÅÍ(Pointer to Array) : ¹è¿ÀÇ ¹øÁö¸¦ ´ã´Â Æ÷ÀÎÅÍ º¯¼öÀÌ´Ù. Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ´ë»óÀº ¹è¿ÇüÀ¸·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸ç Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹è¿ÀÇ ¿ä¼Ò´Â ÀÓÀÇÀÇ Å¸ÀÔÀ» °¡Áø´Ù.
µÑ ´Ù µÚÂÊ¿¡ °¼¼¸¦ µÎ°í ÀÐÀ¸¸é ½Çü¸¦ ÆľÇÇϴµ¥ ´Ù¼Ò µµ¿òÀÌ µÉ °ÍÀÌ´Ù. Æ÷ÀÎÅÍ ¹è¿Àº °á±¹Àº ¹è¿ÀÌ°í ¹è¿ Æ÷ÀÎÅÍ´Â °á±¹Àº Æ÷ÀÎÅÍÀÌ´Ù. Áö±Ý ÇÑÂü ¹è¿ì´Â ÀÔÀå¿¡¼´Â ÀÌ µÑÀ» °°ÀÌ °øºÎÇÏÀÚ¸é ¹«Ã´ °ñ¸Ó¸®°¡ ¾ÆÇÁ°í Â¥Áõ³¯ °ÍÀÌ´Ù. ÇÑ´Ü°è ´õ ³ª°¡¸é ¹è¿ Æ÷ÀÎÅÍ ¹è¿À̳ª Æ÷ÀÎÅÍ ¹è¿ Æ÷ÀÎÅÍ°°Àº °Íµéµµ ÀÖÀ» ¼ö ÀÖÀ¸¸ç ÀÌ·± °ÍµéÀÌ ½ÇÁ¦·Î »ç¿ëµÈ´Ù. ¿©±â¿¡ ±¸Á¶Ã¼±îÁö °¡¼¼ÇÏ¸é ´õ º¹ÀâÇØÁö´Âµ¥ ¿ø¸®¸¸ ÆľÇÇÏ¸é ¸ðµÎ º° °Íµµ ¾Æ´Ï´Ù.
¹è¿ Æ÷ÀÎÅÍ´Â ¹è¿ÀÌ ¿©·¯ °³ ¸ð¿© ÀÖ´Â ¹è¿ÀÇ ¹è¿, ±×·¯´Ï±î 2Â÷¿ø ÀÌ»óÀÇ ¹è¿¿¡¼¸¸ Àǹ̰¡ ÀÖ´Ù. 1Â÷¿ø ¹è¿¿¡ ´ëÇÑ ¹è¿ Æ÷ÀÎÅͶó´Â °ÍÀº ¾ø´Ù. ÀÏÂ÷¿ø ¹è¿ int ar[5]¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ°¡ ÇÊ¿äÇÏ´Ù¸é int *pa; ·Î ¼±¾ðÇÏ°í pa=ar·Î ÃʱâÈÇÑ´Ù. pa·Î ar[0], ar[1] µîÀÇ Á¤¼öÇü º¯¼öµéÀ» °¡¸®Å³ ¼ö Àִµ¥ À̶§ pa°¡ °¡¸®Å°´Â ´ë»óÀº ar ¹è¿ÀÇ ¿ä¼ÒÀÌÁö ar ¹è¿ ±× ÀÚü°¡ ¾Æ´Ï±â ¶§¹®¿¡ pa´Â ´Ü¼øÇÑ Á¤¼öÇü Æ÷ÀÎÅÍ º¯¼ö¿¡ ºÒ°úÇÏ¸ç ¹è¿ Æ÷ÀÎÅÍ°¡ ¾Æ´Ñ °ÍÀÌ´Ù.
1Â÷¿ø ¹è¿Àº ºÎºÐ ¹è¿ÀÇ °³³äÀÌ ¾øÀ¸¹Ç·Î ¹è¿ Æ÷ÀÎÅ͸¦ ¼±¾ðÇÒ ¼ö ¾øÀ¸¸ç ¼±¾ðÇÒ ÇÊ¿äµµ ¾ø´Ù. ÃÖ¼ÒÇÑ 2Â÷¿ø ÀÌ»óÀ̾î¾ß Àüü ¹è¿ÀÇ ¿ä¼Ò°¡ ºÎºÐ ¹è¿ÀÌ µÇ¸ç ºÎºÐ ¹è¿À» °¡¸®Å°´Â ¹è¿ Æ÷ÀÎÅ͸¦ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. ´ÙÂ÷¿ø ¹è¿ÀÇ ´ëÇ¥°ÝÀÎ 2Â÷¿ø ¹è¿ÀÇ Æ÷ÀÎÅ͸¦ ¼±¾ðÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù.
¿ä¼ÒÇü (*Æ÷ÀÎÅ͸í)[2Â÷ ÷ÀÚ Å©±â]
¼±¾ð¹®ÀÇ ¸ð¾çÀÌ ´Ù¼Ò »ý¼ÒÇѵ¥ ÀÌ ¼±¾ð¹®¿¡¼ °ýÈ£´Â »ý·«ÇÒ ¼ö ¾øÀ¸¸ç ¹Ýµå½Ã ÇÊ¿äÇÏ´Ù. ¸¸¾à °ýÈ£¸¦ »ý·«ÇØ ¹ö¸®¸é ¹è¿ Æ÷ÀÎÅÍ°¡ ¾Æ´Ñ Æ÷ÀÎÅÍ ¹è¿ÀÌ µÇ¾î ¹ö¸°´Ù. ¹è¿ Æ÷ÀÎÅÍ ¼±¾ð½Ã 2Â÷ ÷ÀÚ Å©±â´Â ¹Ýµå½Ã ¹àÇô¾ß Çϴµ¥ ÀÌ Å©±â¸¦ ¾Ë¾Æ¾ß °¡¸®Å³ ¹è¿(°ð ´ë»óü)ÀÇ Àüü Å©±â¸¦ ±¸ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
Æ÷ÀÎÅÍ´Â ÀÚ½ÅÀÌ °¡¸®Å³ ´ë»óÀÇ Å©±â¸¦ ¾Ë¾Æ¾ß *¿¬»êÀÚ·Î °ªÀ» ÀÐÀ» ¼ö ÀÖ°í ++, -- ¿¬»êÀÚ·Î ¾ÕµÚ ¿ä¼Ò·Î À̵¿ÇÒ ¼ö ÀÖ´Ù. ±×·¡¼ ¿ä¼ÒÀÇ Å¸ÀÔ°ú 2Â÷ ÷ÀÚ Å©±â¿¡ ´ëÇÑ Á¤º¸°¡ ÇÊ¿äÇѵ¥ ½±°Ô ¸»ÇØ ¾î¶² ³à¼®µéÀÌ ¾ó¸¶³ª ¸ð¿© ÀÖ´ÂÁö ¾Ë¾Æ¾ß ÇÏ´Â °ÍÀÌ´Ù. ±×·¯³ª 1Â÷ ÷ÀÚ Å©±â´Â ¹àÈ÷Áö ¾Ê¾Æµµ µÇ¸ç ¹àÈú ÇÊ¿äµµ ¾ø´Ù. ¿Ö³ÄÇϸé Æ÷ÀÎÅÍ´Â ÀÚ½ÅÀÌ °¡¸®Å°´Â ¹øÁöÀÇ ¾ÕµÚ¿¡ µ¿ÀÏ Å¸ÀÔÀÇ µ¥ÀÌÅÍ°¡ ÀÓÀÇÀÇ °³¼ö¸¸Å ÀÖ´Ù°í °¡Á¤ÇÏ°í À̵¿ÇÒ ¼ö ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù.
3Â÷ ÀÌ»óÀº 2Â÷ ÀÌÈÄÀÇ Ã·ÀÚ¸¸ Àû°í ±× ¾Õ¿¡ (*º¯¼ö¸í)¸¸ ºÙÀÌ¸é µÈ´Ù. ¿¹¸¦ µé¾î int ar[2][3][4] ¹è¿À» °¡¸®Å°´Â ¹è¿ Æ÷ÀÎÅÍ´Â int (*par)[3][4]·Î ¼±¾ðÇÑ´Ù. ´ÙÀ½ ¿¹Á¦°¡ ¹è¿ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â °¡Àå °£´ÜÇÑ ¿¹Á¦ÀÌ´Ù.
¿¹ Á¦ : ArrayPointer |
#include <Turboc.h>
void main(void)
{
char arps[5][9]={"°í¾çÀÌ","°³","¿À¶û¿ìź","µÅÁö","Áö··ÀÌ"};
char (*ps)[9];
ps=arps;
int i;
for (i=0;i<5;i++) {
printf("%s\n",*ps++);
}
}
arps´Â ÀÌÂ÷¿ø ¹®ÀÚÇü ¹è¿·Î ¼±¾ðµÇ¾úÀ¸¸ç °¢ ºÎºÐ ¹è¿Àº µ¿¹° À̸§À¸·Î ÃʱâȵǾî ÀÖ´Ù. °¡Àå ±ä µ¿¹°ÀÇ À̸§ÀÌ "¿À¶û¿ìź"ÀÌ¸ç ³Î ¹®ÀÚ±îÁö °í·ÁÇÏ¿© ÃÖ´ë 9ÀÚ±îÁö ÀúÀåÇØ¾ß ÇϹǷΠ2Â÷ ÷ÀÚ´Â 9·Î ¼±¾ðµÇ¾î ÀÖ´Ù. ÀÌ ¹è¿ÀÇ ºÎºÐ ¹è¿À» °¡¸®Å°´Â ¹è¿ Æ÷ÀÎÅÍ´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.
char (*ps)[9];
¸¸¾à ÀÌ ¼±¾ð¹®¿¡¼ °ýÈ£¸¦ »ý·«ÇÏ°í char *ps[9];·Î ¼±¾ðÇÑ´Ù¸é ÀÌ°ÍÀº ¹®ÀÚÇüÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍ 9°³¸¦ ¿ä¼Ò·Î °¡Áö´Â Æ÷ÀÎÅÍ ¹è¿ÀÌ µÇ¾î ¹ö¸± °ÍÀÌ´Ù. ÀÌ ¼±¾ð¿¡ ÀÇÇØ ps ¹è¿ Æ÷ÀÎÅÍ´Â ÀÚ½ÅÀÌ °¡¸®Å³ ´ë»óü°¡ Å©±â 9ÀÇ ¹®ÀÚÇü ¹è¿À̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. µû¶ó¼ *ps·Î ÀÐÀ¸¸é Å©±â 9ÀÇ ¹®ÀÚÇü ¹è¿(°ð ¹®ÀÚ¿)ÀÌ ÀÐÇôÁö°í ps++, ps--´Â ´ë»óüÀÇ Å©±âÀÎ 9¹ÙÀÌÆ®¸¸Å ¾Õ µÚ·Î À̵¿ÇÏ°Ô µÈ´Ù.
ps´Â Å©±â 9ÀÇ ¹®ÀÚÇü ¹è¿À» ´ë»óü·Î °¡Áö¹Ç·Î ÀÌ º¯¼ö¿¡ °ªÀ» ´ëÀÔÇÒ ¶§µµ ŸÀÔ¿¡ ¸Â´Â ´ë»óüÀÇ ¹øÁö¸¦ ´ëÀÔÇØ¾ß ÇÑ´Ù. ¿¹Á¦¿¡¼´Â arps ¹è¿ ÀÚü¸¦ ´ëÀÔÇߴµ¥ arps ¹è¿¸íÀº ÀÌ ¹è¿ÀÇ ½ÃÀÛ ¹øÁö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ »ó¼öÀÌ°í ÀÌ ¹øÁö´Â °ð &arps[0]¿Í °°´Ù. arps[0]´Â ºÐ¸íÈ÷ Å©±â 9ÀÇ ¹®ÀÚÇü ¹è¿À̹ǷΠÀÌ ¹è¿ÀÇ ¹øÁö¸¦ ps¿¡ ´ëÀÔÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù.
ps°¡ arps[0]¸¦ °¡¸®Å°°í ÀÖ´Â »óÅ¿¡¼ *¿¬»êÀÚ·Î ÀÌ ¹è¿À» ÀÐÀ¸¸é ¹è¿ÀÇ ³»¿ëÀÌ ÀÐÇôÁú °ÍÀÌ´Ù. ±×¸®°í ++ ¿¬»êÀÚ·Î ´ÙÀ½ ´ë»óü·Î À̵¿Çϸé arps[1]·Î À̵¿ÇÏ°í ´Ù½Ã ÇÑ ¹ø ++ ¿¬»êÀÚ¸¦ Àû¿ëÇϸé arps[2]·Î À̵¿ÇÑ´Ù. ¿¹Á¦¿¡¼´Â ·çÇÁ¸¦ ´Ù¼¸ ¹ø µ¹¸é¼ ps°¡ °¡¸®Å°´Â ºÎºÐ ¹è¿À» ¼ø¼´ë·Î Àоî ȸéÀ¸·Î Ãâ·ÂÇÏ¿´´Ù.
¹è¿ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© ºÎºÐ ¹è¿µéÀ» ¼ø¼´ë·Î Àд ¿¹Á¦¸¦ ¸¸µé¾î ºÃ´Âµ¥ »ç½Ç ÀÌ °æ¿ì´Â ±»ÀÌ ¹è¿ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ µÈ´Ù. ´ÙÀ½°ú °°ÀÌ arps¿¡ [ ] ¿¬»êÀÚ¸¦ »ç¿ëÇصµ ºÎºÐ ¹è¿À» ÀÐÀ» ¼ö ÀÖ´Ù.
for (i=0;i<5;i++) {
printf("%s\n",arps[i]);
}
arps[i]°¡ °á±¹ *(arps+i)À̹ǷΠarps°¡ À̵¿Çϳª i¸¦ Áõ°¡½ÃÅ°³ª °°Àº °ÍÀÌ´Ù. int ar[5]; int *pi=ar; ¿¡¼ *pi++°ú ar[n]ÀÌ ¸ðµÎ °¡´ÉÇÑ °Í°ú ¸¶Âù°¡ÁöÀÌ´Ù. ±×·¸´Ù¸é ¹è¿ Æ÷ÀÎÅÍ°¡ ²À ÇÊ¿äÇÑ »óȲÀº °ú¿¬ ¾ðÁ¦ÀÎÁö ´ÙÀ½ Ç׿¡¼ ¾Ë¾Æº¸ÀÚ.