15-2-´Ù.Æ÷ÀÎÅÍ·Î ÇÔ¼ö È£ÃâÇϱâ

±×·¸´Ù¸é ÇÔ¼ö Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â ÀÌÀ¯´Â ¹«¾ùÀϱî? ¾Õ ¿¹Á¦ÀÇ °æ¿ì ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÅëÇØ °£Á¢ÀûÀ¸·Î func ÇÔ¼ö¸¦ È£ÃâÇߴµ¥ ±×³É func(2)¸¦ È£ÃâÇÏ´Â °ÍÀÌ ÈξÀ ´õ °£´ÜÇϰí Á÷°üÀûÀε¥ ¿Ö ±»ÀÌ ÇÔ¼ö Æ÷ÀÎÅͰ¡ ÇÊ¿äÇѰ¡ ¸»ÀÌ´Ù. ¹°·Ð ÀÌÀ¯°¡ Àִµ¥ ¾ðÁ¦³ª ÇÑ ´Ü°è¸¦ ´õ °ÅÄ¡¸é ¿©·¯ °¡Áö ±â¹ýµéÀÌ °¡´ÉÇØÁø´Ù.

ÇÔ¼ö Æ÷ÀÎÅÍ´Â º¯¼öÀ̱⠶§¹®¿¡ Á¶°Ç¿¡ µû¶ó ¾ðÁ¦µçÁö ´Ù¸¥ ÇÔ¼ö¸¦ °¡¸®Å³ ¼ö ÀÖ´Ù. ¹°·Ð ÇϳªÀÇ ÇÔ¼ö Æ÷ÀÎÅͰ¡ °¡¸®Å³ ¼ö ÀÖ´Â ÇÔ¼öµéÀÇ ¿øÇüÀº ¸ðµÎ ÀÏÄ¡ÇØ¾ß ÇÑ´Ù. ÇÔ¼ö Æ÷ÀÎÅ͸¦ Àμö·Î »ç¿ëÇϸé ÇÔ¼ö¸¦ ´Ù¸¥ ÇÔ¼ö¿¡°Ô Àü´ÞÇÏ´Â °Íµµ °¡´ÉÇØÁö¸ç ÇÔ¼ö Æ÷ÀÎÅÍ ¹è¿­À̳ª ±¸Á¶Ã¼¸¦ ÅëÇØ ¿©·¯ °³ÀÇ ÇÔ¼ö±ºÀ» Åë°·Î ¹Ù²ãÄ¡±â ÇÒ ¼öµµ ÀÖ´Ù.

ÇÔ¼ö Æ÷ÀÎÅÍÀÇ °¡Àå ½¬¿î ÀÀ¿ë¿¹·Î Á¶°Ç¿¡ µû¶ó ÇÔ¼ö¸¦ ¹Ù²ã °¡¸ç È£ÃâÇÏ´Â ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ. ´ÙÀ½ ¿¹Á¦¿¡´Â ¿øÇüÀÌ ¶È°°Àº multi2, multi3 µÎ °³ÀÇ ÇÔ¼ö°¡ Àִµ¥ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ °ª¿¡ µû¶ó µÑ Áß ÇϳªÀÇ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

 

¿¹ Á¦ : PointerCall

#include <Turboc.h>

 

int multi2(int a)

{

     return a*2;

}

 

int multi3(int a)

{

     return a*3;

}

 

void main()

{

     char ch;

     int i=5;

     int (*pf)(int a);

     printf("5¸¦ µÎ ¹è ÇÏ°í ½ÍÀ¸¸é 2, ¼¼ ¹è ÇÏ°í ½ÍÀ¸¸é 3À» ´©¸£½Ã¿À.\n");

     ch=getch();

     if (ch=='2') {

          pf=multi2;

     } else {

          pf=multi3;

     }

     printf("°á°ú´Â %dÀÔ´Ï´Ù.\n",(*pf)(i));

}

 

multi2´Â ÀԷ°ªÀÇ 2¹èµÇ´Â °ªÀ» µ¹·ÁÁÖ¸ç multi3´Â 3¹èµÇ´Â °ªÀ» µ¹·Á Áִµ¥ µÎ ÇÔ¼ö´Â ¿øÇüÀÌ µ¿ÀÏÇÏ´Ù. main¿¡¼­´Â ÀÌ µÎ ÇÔ¼ö¸¦ °¡¸®Å³ ¼ö ÀÖ´Â ÇÔ¼ö Æ÷ÀÎÅÍ pf¸¦ ¼±¾ðÇÏ°í »ç¿ëÀÚÀÇ ÀԷ¿¡ µû¶ó pf¿¡ multi2, multi3Áß Çϳª¸¦ ´ëÀÔÇØ µÐ´Ù. È£ÃâÇÒ ÇÔ¼öÀÇ ¹øÁö¸¦ pf°¡ °¡Áö°í ÀÖÀ¸¹Ç·Î (*pf)·Î È£ÃâÇϱ⸸ ÇÏ¸é ¼±ÅÃµÈ ÇÔ¼ö°¡ È£ÃâµÉ °ÍÀÌ´Ù. ÀÌ ¿¹Á¦ÀÇ °æ¿ì´Â ¾îµð±îÁö³ª »ç¿ë¿¹¸¦ º¸¿©ÁÙ »Ó Å« ½Ç¿ë¼ºÀº ¾ø´Âµ¥ ÇÔ¼ö Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â ´ë½Å ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÛ¼ºÇصµ °á°ú´Â µ¿ÀÏÇÏ´Ù.

 

if (ch=='2') {

     printf("°á°ú´Â %dÀÔ´Ï´Ù.\n",multi2(i));

} else {

     printf("°á°ú´Â %dÀÔ´Ï´Ù.\n",multi3(i));

}

 

¿¹Á¦°¡ ª°í °£´ÜÇϱ⠶§¹®¿¡ ÇÔ¼ö Æ÷ÀÎÅÍ¿¡ °ªÀ» ´ëÀÔÇÏ´Â Á¶°ÇÀ» ÇÔ¼ö È£Ãâ¹®¿¡ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ´ÙÀ½°ú °°Àº °æ¿ì¿¡´Â ÇÔ¼ö Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ ÁÁ´Ù.

 

¨ç ¼±ÅÃÇØ¾ß ÇÒ ÇÔ¼ö°¡ µÎ °³ ÀÌ»óÀÎ °æ¿ì, ¿¹¸¦ µé¾î ¼ö½Ê°³ÀÇ ÇÔ¼öÁß Çϳª¸¦ È£ÃâÇØ¾ß ÇÑ´Ù¸é ÇÔ¼ö Æ÷ÀÎÅÍ ¹è¿­À» ¼±¾ðÇÏ°í ±× Ã·ÀÚ¸¦ ¼±ÅÃÇÏ´Â °ÍÀÌ ´õ ½±´Ù.

¨è ÇÔ¼ö¸¦ ¼±ÅÃÇÏ´Â ½ÃÁ¡°ú ½ÇÁ¦·Î È£ÃâÇÏ´Â ½ÃÁ¡ÀÌ ¿ÏÀüÈ÷ ºÐ¸®µÇ¾î ÀÖ´Â °æ¿ìµµ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¾²´Â °ÍÀÌ À¯¸®ÇÏ´Ù. È£ÃâÇÒ ÇÔ¼ö¿¡ ´ëÇÑ Á¶°Ç Á¡°ËÀº ÇÊ¿äÇÒ ¶§ ÇÑ ¹ø¸¸ ÇÏ°í ¼±ÅÃµÈ ÇÔ¼ö´Â º°´Ù¸¥ Á¶°Ç Á¡°Ë¾øÀÌ ÇÔ¼ö Æ÷ÀÎÅÍ·Î ¹Ù·Î È£ÃâÇÒ ¼ö ÀÖ´Ù.

¨é È£ÃâÇÒ ÇÔ¼ö°¡ DLL°°Àº ¿ÜºÎ ¸ðµâ¿¡ ÀÖ°í ÀÌ ÇÔ¼ö¸¦ µ¿ÀûÀ¸·Î ¿¬°áÇÒ °æ¿ì´Â ÄÄÆÄÀÏÇÒ ¶§ ÇÔ¼öÀÇ Á¸Àç°¡ ¾Ë·ÁÁöÁö ¾ÊÀ¸¹Ç·Î ¹Ýµå½Ã ÇÔ¼ö Æ÷ÀÎÅ͸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ÇÔ¼ö Æ÷ÀÎÅ͸¦ »ç¿ëÇϸé À̸§À¸·ÎºÎÅÍ ¿øÇÏ´Â ÇÔ¼öÀÇ ¹øÁö¸¦ ã¾Æ È£ÃâÇÒ ¼ö ÀÖ´Ù.

 

ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¹Ýµå½Ã »ç¿ëÇØ¾ß ÇÏ´Â ¿¹´Â ¾ÆÁÖ ¸¹´Ù. ´ëÇ¥ÀûÀ¸·Î °³¹æµÈ µ¥ÀÌÅÍ º£À̽º ȯ°æÀÎ ODBC¸¦ µé ¼ö Àִµ¥ ODBC´Â ´Ù¾çÇÑ µ¥ÀÌÅÍ º£À̽º ¼­¹ö¸¦ ÀϰüµÈ ¹æ¹ýÀ¸·Î ´Ù·ê ¼ö Àִ ǥÁØ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÑ´Ù. ¾ðÁ¦µçÁö µå¶óÀ̹ö¸¦ ¹Ù²Ù±â¸¸ Çϸé ODBC Ç¥ÁØÀ» µû¸£´Â ¸ðµç µ¥ÀÌÅÍ º£À̽º ¼­¹ö¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. °¢ µå¶óÀ̹ö´Â ODBC ±Ô¾à¿¡ µû¶ó ¹Ì¸® Á¤ÇØÁø ÇÔ¼öÀÇ ÁýÇÕÀ» ±¸ÇöÇϸç ODBC °ü¸®ÀÚ´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¿ä±¸¿¡ µû¶ó µå¶óÀ̹öÀÇ ÇÔ¼ö¸¦ ã¾Æ È£ÃâÇϴµ¥ À̶§ µå¶óÀ̹ö³»ÀÇ ÇÔ¼ö ¹øÁö¸¦ ÀúÀåÇϱâ À§ÇØ ÇÔ¼ö Æ÷ÀÎÅÍ ¹è¿­ÀÌ »ç¿ëµÈ´Ù.