11-3.¹è¿­ Æ÷ÀÎÅÍ

11-3-°¡.¹è¿­ Æ÷ÀÎÅÍ

Æ÷ÀÎÅÍ ¹è¿­Àº ¹Ù·Î ¾Õ Àý¿¡¼­ ¹è¿ü°í ÀÌ Àý¿¡¼­´Â ¹è¿­ Æ÷ÀÎÅÍ¿¡ ´ëÇØ ¾Ë¾Æ º»´Ù. ÀÌ µÑÀº À̸§ÀÌ ºñ½ÁÇؼ­ ´Ù¼Ò È¥¶õ½º·¯¿ï ¼ö Àִµ¥ À̸§¸¸ ºñ½ÁÇÏÁö ¿ÏÀüÈ÷ ´Ù¸¥ °ÍÀÌ´Ù. ¹è¿­ Æ÷ÀÎÅÍ´Â »ç¿ë ºóµµ°¡ ±×¸® ³ôÁö ¾ÊÀ¸¸ç ½Ç¿ë¼ºµµ ¶³¾îÁø´Ù. ¹®¹ýÀû ´ëĪ¼ºÀ» À§ÇØ Á¸ÀçÇϴµ¥ Æ÷ÀÎÅÍ ¹è¿­ÀÌ ÀÖÀ¸´Ï ¹è¿­ Æ÷ÀÎÅ͵µ ´ç¿¬È÷ ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù. ÇÏÁö¸¸ Æ÷ÀÎÅ͸¦ ¿ÏÀüÇÏ°Ô ÀÌÇØÇϱâ À§Çؼ­´Â °³³äÀ» Àß ¾Ë¾Æ µÎ¾î¾ß ÇÑ´Ù. Æ÷ÀÎÅÍ ¹è¿­°ú ¹è¿­ Æ÷ÀÎÅ͸¦ ºñ±³ÇØ º¸¸é ´ÙÀ½°ú °°´Ù.

 

¡á Æ÷ÀÎÅÍ ¹è¿­(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]ÀÌ ¸ðµÎ °¡´ÉÇÑ °Í°ú ¸¶Âù°¡ÁöÀÌ´Ù. ±×·¸´Ù¸é ¹è¿­ Æ÷ÀÎÅÍ°¡ ²À ÇÊ¿äÇÑ »óȲÀº °ú¿¬ ¾ðÁ¦ÀÎÁö ´ÙÀ½ Ç׿¡¼­ ¾Ë¾Æº¸ÀÚ.