Ãâó : codeland °­Á ½Ã˜Þ ±èÀçÈ«´Ô ¢ß »çÀ̹öÀ̸ÞÁö³×ÀÌ¼Ç ÀÔ»ç ±â¼ú¿¬±¸¼Ò WindowâÀü¿ë 2D °ÔÀÓ ½ºÇÁ¶óÀÌÆ® Åø °³¹ß ftp, http ½Ç½Ã°£ ¾÷µ¥ÀÌÆ® ¸ðµâ °³¹ß ActiveX ¸Þ½ÅÁ® Ŭ¶óÀ̾ðÆ® & ¸Þ½ÅÁ® ¼­¹ö °³¹ß IOCP ¸ÖƼ Ç÷¡½Ã °ÔÀÓ ¼­¹ö °³¹ß Çö) ³ªºñ¾ß °ÔÀÓ°³¹ß ȸ»ç¿¡¼­ Ŭ¶óÀ̾ðÆ® & (ÁÖ¾÷¹«) À¥ °ÔÀÓ ¼­¹ö °³¹ß < C/C++ ±âÃÊ Tip & Trick > 1Àå Æ÷ÀÎÅÍ ¸Àº¸±â ÇÁ·Î±×·¡¹ÖÀ» ÇÏ·Á¸é Æ÷ÀÎÅͶó´Â °ü¹®À» ²À °ÅÃÄ°¡¾ßÇÕ´Ï´Ù. ¸¸¾à °ü¹®À» Åë°úÇÏÁö ¸øÇÏ¸é °á±¹Àº Æ÷±âÇؾßÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Áö±ÝºÎÅÍ Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ³Ê¹« ¾î·Á¿î ¼³¸íº¸´Ù´Â ½ÇÀü¿¡ ¾²À̸鼭µµ ¹Ýµå½Ã ÀÌÇØÇÒ ¼ö ÀÖ´Â °­ÀǸ¦ ÁøÇà ÇÏ°Ú½À´Ï´Ù. ¿©·¯ºÐµéÀº ±ÛÀ» ÂßÂß ÀÐ¾î ³ª°£ÈÄ ¿¹Á¦¸¦ Ç®ÀÌ Çغ¸´Â ¹æ½ÄÀ¸·Î Æí¾ÈÇÏ°Ô °­ÀǸ¦ Àоî ÁÖ½Ã¸é µË´Ï´Ù. ¿ì¼± Æ÷ÀÎÅͶõ ¹«¾ùÀΰ¡? Æ÷ÀÎÅÍ¿¡ ´ëÇØ °£´ÜÇÏ°Ô °¡¸®Å²´Ù¶ó°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ¿¹¸¦µé¾î ³ó±¸¼±¼öµéÀÌ µî¹øÈ£°¡ ÀÖ½À´Ï´Ù °¢°¢ ¹øÈ£°¡ Ʋ¸³´Ï´Ù. ±×Áß¿¡ µî¹øÈ£¿¡ ÇØ´çÇÏ´Â »ç¶÷ÀÇ À̸§À» ¾Ë°í ½Í´Ù¸é ±× ¹øÈ£°¡ ÇØ´çÇÏ´Â »ç¶÷À» °¡¸®Å°¸ç ´©±¸´©±¸´Ù¶ó°í ¸»ÇÒ °ÍÀÔ´Ï´Ù. ÀÚ ¿¹¸¦ ¶Ç µé¾îº¾½Ã´Ù. C¾ð¾îÀÇ Æ÷ÀÎÅ͵µ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. A¶ó´Â º¯¼ö°¡ ÀÖ½À´Ï´Ù. ±×·¯¸é A¶ó´Â º¯¼ö´Â ÄÄÇ»ÅÍ ³»ºÎ¿¡ ±â¾ïµÈ ÁÖ¼Ò¸¦ °®°Ô µË´Ï´Ù. ±×·¯¸é AÀÇ ÁÖ¼Ò¸¦ ¾Ë°í ½Í´Ù¸é ¾î¶±ÇÏ¸é µÇ°Ú½À´Ï±î? °¡¸®Å°¸é µË´Ï´Ù. °¡¸®Å°±â À§Çؼ­´Â Æ÷ÀÎÅ͸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. Æ÷ÀÎÅÍ´Â º¯¼öÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°´Âµ¥ »ç¿ëÇÕ´Ï´Ù. °¡¸®Å°´Â ÀÌÀ¯´Â ±× ÁÖ¼Ò¸¦ ¾Ë±â À§Çؼ­ÀÔ´Ï´Ù. ÁÖ¼Ò¸¦ ¿Ö ¾Ë¾Æ¾ß ÇÏ´ÂÁö? ±× ÀÌÀ¯´Â ã¾Æ °¡±â À§Çؼ­ÀÔ´Ï´Ù. ¿ì¸®´Â ±× ÁÖ¼Ò¸¦ ¾ËÁö ¸øÇÕ´Ï´Ù. ÇÏÁö¸¸ ¾î¶°ÇÑ ÁÖ¼Ò°¡ ÀÖ´Ù´Â °ÍÀº ºÐ¸íÈ÷ ¾Ë°í ÀÖ½À´Ï´Ù. ±× ÁÖ¼Ò¸¦ ¾Ë±â À§Çؼ­ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ°í Æ÷ÀÎÅ͸¦ »ç¿ëÇØ ±× ÁÖ¼Ò¸¦ ¾ò¾î ±× ÁÖ¼Ò°¡ °¡¸®Å°´Â º¯¼ö¸¦ ã¾Æ°¡ ±× º¯¼ö°¡ °¡Áö°í ÀÖ´Â °ªÀ» ±×´ë·Î ¾ò¾î ¿Ã¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ¿ì¸®´Â ¾ÆÆÄÆ®¿¡ °³¶ËÀÌ°¡ »ì°í ÀÖ´Â °ÍÀ» ¾Ë°í ÀÖ´Ù°í Ĩ½Ã´Ù. ¿ì¸®´Â ±× °³¶ËÀÌ°¡ ¾ÆÆÄÆ®¿¡ »ì°í ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖÁö¸¸ ¸îµ¿ ¸îÈ£¿¡ »ç´ÂÁö´Â ¾Ë¼ö°¡ ¾ø½À´Ï´Ù. ±×·¯¹Ç·Î °³¶ËÀÌ³× Áý¿¡ ã¾Æ °¥¼ö°¡ ¾ø½À´Ï´Ù. ã¾Æ°¡±â À§Çؼ­´Â ¹Ýµå½Ã °³¶ËÀÌÀÇ ÁÖ¼Ò¸¦ Á¤È®È÷ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. ¸¶Âù°¡Áö·Î Æ÷ÀÎÅ͵µ ±× º¯¼öÀÇ °ªÀ» ¾ò°í ÂüÁ¶ Çϱâ À§Çؼ­´Â ¹Ýµå½Ã ÁÖ¼Ò¸¦ ¾Ë°í ã¾Æ °¡¾ßÇÕ´Ï´Ù. ±×·³ ¿©±â¼­ Á¤¸®Çغ¾½Ã´Ù. ¹Ýµå½Ã ÁÖ¼Ò¸¦ ¾Ë°Ô µÈ´Ù¸é ¿ì¸®°¡ ¿øÇÏ´Â ´äÀ» ¾òÀ» ¼ö°¡ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÚ ±×·³ ¿¹Á¦¸¦ Çϳª µé¾îº¾½Ã´Ù. int a; ¶ó°í ¼±¾ðÀ» Çß½À´Ï´Ù. printf("%d",a);·Î È­¸é¿¡ a¶ó´Â °ªÀ» Ãâ·ÂÇß½À´Ï´Ù. °á°ú´Â -858993460ÀÌ·¯ÇÑ °ªÀÌ ³ª¿À°Ô µË´Ï´Ù. ÃʱⰪÀ» ÁÖÁö ¾Ê¾Æ ÀÌ·± °á°ú¸¦ °®°Ô µÇ¾ú½À´Ï´Ù. ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Ùº¸¸é ÃʱⰪÀ» ÁÖÁö ¾Ê°í ½Ç¼öÇÏ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù. int a = 10; printf("%d",a); ÀÌ·¸°Ô ÇØÁÖ¸é 10ÀÌ Ãâ·ÂµÇ´Â °ÍÀ» º¼¼ö ÀÖ½À´Ï´Ù. ÃʱⰪÀ» ÁÖ¾ú±â ¶§¹®¿¡ º°¹®Á¦ ¾øÀÌ »ç¿ëÇÒ¼ö ÀÖ½À´Ï´Ù ÀÚ ±×·³ ¿©±â¼­ a°¡ »ì°í ÀÖ´ÂÁýÀº ¾îµðÀϱî¿ä? ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é ÁÖ¼Ò°¡ Á¤ÇØÁö´Âµ¥ aÀÇ ÁÖ¼Òµµ Á¤ÇØÁö°ÚÁö¿ä. ¿Ö³ÄÇϸé a¶ó´Â º¯¼öµµ ÀڱⰡ »ì°í ÀÖ´Â °÷Àº ¸Þ¸ð¸®ÀÔ´Ï´Ù. ±× ¸Þ¸ð¸®°¡ ¾ÆÆÄÆ®¶ó°í »ý°¢ÇϽʽÿä a´Â Æò¼ö°¡ 4ByteÅ©±âÀÇ ¸Þ¸ð¸®¶ó´Â ¾ÆÆÄÆ®¿¡¼­ »ì°í ÀÖ½À´Ï´Ù. ¾ÆÆÄÆ® ÁÖ¼Ò´Â ¿ì¸®°¡ ¸ð¸£°í ÀÖ½À´Ï´Ù. ´ÜÁö a°¡ ¸Þ¸ð¸®¶ó´Â ¾ÆÆÄÆ®ÀÇ a¶ó´Â º¯¼öÀÇ 4Byte¶ó´Â°Í¸¸ ¾Ë°í ÀÖ½À´Ï´Ù. ÀÚ ¿©±â¼­ a°¡ 10¿øÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ±×·¯¸é 10¿øÀ» ã±â À§Çؼ­´Â a°¡ »ì°í ÀÖ´Â ¾ÆÆÄÆ®¸¦ ã¾Æ°¡¾ß ÇÕ´Ï´Ù. ±×·¯±â À§Çؼ­´Â ÁÖ¼Ò¸¦ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. ¿©±â¼­ ÁÖ¼Ò¸¦ ¾Ë±â À§Çؼ­´Â Æ÷ÀÎÅ͸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. Æ÷ÀÎÅÍ´Â ¹«Á¶°Ç ÃʱâÈ­°¡ µÇ¾î¾ß ÇÕ´Ï´Ù. ±Ùµ¥ ¾Æ·¡ ¿¹´Â ÃʱâÈ­°¡ µÇ¾îÀÖÁö ¾Ê½À´Ï´Ù. ÃʱâÈ­¸¦ ÇØÁà¾ß ±× ÁÖ¼Ò¸¦ ã¾Æ °¥¼ö ÀÖ½À´Ï´Ù. int a = 10; int *p; ÀÚ ¿©±â¼­ p¶ó´Â º¯¼ö¿¡ *ºÙ¾î ÀÖ½À´Ï´Ù. *ÀÌ ºÙÀ¸¸é Æ÷ÀÎÅÍ º¯¼ö°¡ µË´Ï´Ù. Æ÷ÀÎÅÍ º¯¼ö´Â ´Ù¸¥ ÁÖ¼Ò¸¦ °¡¸®Å³ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ÇØÁÖ¸é pÆ÷ÀÎÅÍ º¯¼ö°¡ a¶ó´Â º¯¼ö°¡ ¾îµð¿¡ »ç´ÂÁö °¡¸£ÃÄ ÁÙ °ÍÀÔ´Ï´Ù. int a = 10; int *p = &a; ÀÚ ¿©±â¼­ a¶ó´Â ÁÖ¼Ò¸¦ p¶ó´Â Æ÷ÀÎÅͺ¯¼ö Áï ÁÖ¼Ò¸¦ ±â·ÏÇß½À´Ï´Ù. a¾Õ¿¡ &¸¦ ºÙÀÓÀ¸·Î¼­ aÀÇ ÁÖ¼Ò¸¦ Æ÷ÀÎÅÍ º¯¼ö p¿¡ ³Ö´Â´Ù´Â ¶æÀÔ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ´ÙÀ½ºÎÅÍ´Â a¶ó´Â ÁÖ¼Ò¸¦ ¾Ë±â À§Çؼ­´Â p¶ó´Â Æ÷ÀÎÅÍ º¯¼ö¸¦ ã¾Æ°¡¼­ ¹°¾î ºÁ¾ß°ÚÁÒ? printf("%d",p); ´ÙÀ½°ú °°ÀÌ p¸¦ È­¸é¿¡ Ãâ·ÂÇØ ÁÖ¾ú½À´Ï´Ù. p°ªÀÌ aÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. printf("%d",*p); ¾Õ¿¡ *¸¦ ºÙ¿©ÁÖ¸é p°¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ 10À» Ãâ·ÂÇØ ÁÝ´Ï´Ù. ´ÙÀ½ ±×¸²À¸·Î ±¸Á¶¸¦ Çѹø º¾½Ã´Ù. -------------- ¸Þ¸ð¸® ¾ÆÆÄÆ®- -------------- ÁÖ¼Ò : 1234 - -------------- À̸§ : a - -------------- Æò¼ö : 4Byte - -------------- °¡Áøµ· : 10 - -------------- -------------- °æºñ½Ç -------------- ÁÖ¼Ò : 1818 -------------- À̸§ : p -------------- Æò¼ö : 4Byte (Æ÷ÀÎÅÍ´Â º¯¼öÇü¿¡ »ó°ü¾øÀÌ 4ByteÀÇ ¸Þ¸ð¸®¸¸ °¡Áú¼ö ÀÖ´Ù) -------------- ¾Ë°íÀÖ´ÂÁÖ¼Ò:1234 -------------- p´Â °æºñ½ÇÀÌ µÇ°í a´Â ¾ÆÆÄÆ®°¡ µË´Ï´Ù. p´Â 1234ÀÇ ÁÖ¼Ò¸¦ ã¾Æ¼­ 10¿øÀ» ãÀ»¼ö ÀÖ½À´Ï´Ù void main() { int a = 10; int *p = &a; printf("a°ª:%d aÁÖ¼Ò:%d\r\n", a, &a); printf("aÁÖ¼Ò:%d pÁÖ¼Ò:%d p°¡ °¡¸®Å°´Â °ª:%d", p, &p, *p); } °á°ú: a°ª:10 aÁÖ¼Ò:1245052 aÁÖ¼Ò:1245052 pÁÖ¼Ò:1245048 p°¡ °¡¸®Å°´Â °ª:10 ÁÖ¼Ò´Â ÄÄÇ»Å͸¶´Ù Ʋ¸®°ÚÁö¸¸ °á°ú´Â ÀÌ·±½ÄÀ¸·Î ³ª¿À°Ô µË´Ï´Ù. ÀÚ ¿©±â¼­ a¿¡ 10À» ³Ö¾ú°í p´Â a¿¡ ÁÖ¼Ò·Î ÃʱâÈ­ µÇ¾ú½À´Ï´Ù. ¿©±â¼­ p´Â a¸¦ Ç×»ó °¡¸®Å³¼ö ÀÖ½À´Ï´Ù. p´Â aÀÇ ÁÖ¼Ò¸¦ Ãâ·ÂÇÒ ¼ö ÀÖ½À´Ï´Ù. pµµ ÁÖ¼Ò°¡ ÀÖ½À´Ï´Ù. À̰͵µ ³ªÁß¿¡ pÆ÷ÀÎÅ͸¦ ãÀ¸·Á¸é ÇÊ¿äÇÑ °ÍÀÌÁö¿ä. °¢°¢ ¸ðµç º¯¼öµéÀº ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ²À ÀÌÇØ ÇϽñ⠹ٶø´Ï´Ù. *¸¦ ºÙ¿©ÁÖ°Ô µÇ¸é p´Â Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÁÖ¼Ò ¹Ù·Î aÀÇ ÁÖ¼ÒÀÇ °ª 10À» Ãâ·ÂÇØ ÁÝ´Ï´Ù. ÀÚ ¿À´ÃÀº ¿©±â±îÁö ÀÌÇØÇϱ⠹ٶø´Ï´Ù. ´ÙÀ½ÁÖ¿¡´Â 2Â÷¿ø Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ ¹è¿ìµµ·Ï ÇÏ°Ú½À´Ï´Ù. ¾ÆÁ÷µµ Æ÷ÀÎÅÍÀÇ °¥±æÀÌ ¸ÖÁö¸¸ ÀÌÇØÇϸ鼭 ³Ñ¾î°¡¸é ½±°Ô Æ÷ÀÎÅ͸¦ ¸¶½ºÅ¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·³ ´ÙÀ½ ½Ã°£¿¡ ºË°Ú½À´Ï´Ù ¼ö°íÇϼ¼¿ä! ------------------------------------ < C/C++ ±âÃÊ Tip & Trick > 1Àå Æ÷ÀÎÅÍ ¸Àº¸±â [2] À̹ø ½Ã°£¿¡´Â 2Â÷¿ø Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ ¾Ë¾Æ º¸°Ú½À´Ï´Ù. ¾ÆÁ÷ Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ¸¹Àº °ü¹®ÀÌ ³²¾Æ ÀÖÁö¸¸ ¿ì¼± 2Â÷¿ø Æ÷ÀÎÅ͸¦ ¤°í ³Ñ¾î °¡¾ß °Ú½À´Ï´Ù. Àú¹øÀå¿¡¼­ 1Â÷¿ø Æ÷ÀÎÅÍ´Â ¹Ýµå½Ã ´Ù¸¥ º¯¼öÀÇ ÁÖ¼Ò·Î ÃʱâÈ­ÇØ¾ß ÇÑ´Ù´Â °ÍÀ» ¹è¿ü½À´Ï´Ù. ±×·³ À̹ýÄ¢À» ²À ¸Ó¸®¼Ó¿¡ »ý°¢ÇÏ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. '1Â÷¿ø Æ÷ÀÎÅÍ´Â ¹Ýµå½Ã ´Ù¸¥ º¯¼öÀÇ ÁÖ¼Ò°ªÀ¸·Î ÃʱâÈ­ µÇ¾î¾ß ÇÑ´Ù' '1Â÷¿ø Æ÷ÀÎÅÍ´Â ÀڱⰡ °¡Áø ÁÖ¼Ò¸¦ ã¾Æ °¥¼ö ÀÖ´Ù' '1Â÷¿ø Æ÷ÀÎÅÍ´Â º¯¼ö ¾Õ¿¡ *¸¦ ¹Ýµå½Ã ºÙ¿©Áà¾ß ÇÑ´Ù' ÀÚ ±×·³ 2Â÷¿ø Æ÷ÀÎÅÍ´Â 1Â÷¿ø Æ÷ÀÎÅÍ¿Í ´Ù¸¥Á¡Àº *¸¦ µÎ°³ ºÙÀδٴ Á¡ÀÔ´Ï´Ù. int **pp; ÀÌ·¸°Ô **¸¦ ºÙ¿©¼­ ¼±¾ð ÇÏ°Ô µÇ¸é 2Â÷¿ø Æ÷ÀÎÅÍ°¡ ¼±¾ðµÈ °ÍÀÔ´Ï´Ù. ÀÚ ¿©±â¼­ 1Â÷¿ø Æ÷ÀÎÅÍ´Â ´Ù¸¥ º¯¼öÀÇ ÁÖ¼Ò¸¦ °¡Áú ¼ö ÀÖ¾úÁö¸¸, 2Â÷¿ø Æ÷ÀÎÅÍ´Â ´Ù¸¥ º¯¼öÀÇ ÁÖ¼Ò¸¦ °¡Áú ¼ö ¾ø½À´Ï´Ù. 2Â÷¿ø Æ÷ÀÎÅÍ´Â 1Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù. ÀÚ ¿©±â¼­ ¸Ó¸®¼ÓÀÌ Á¡Á¡ º¹ÀâÇØ Áý´Ï´Ù. ±×·¸Áö¸¸ °£´ÜÇÏ°Ô »ý°¢Çϼ¼¿ä ¹ýÄ¢À̶ó°í »ý°¢ ÇϼžßÇÕ´Ï´Ù. 1Â÷¿ø Æ÷ÀÎÅÍ´Â º¯¼öÀÇ ÁÖ¼Ò¸¦ °¡Áú ¼ö ÀÖ°í 2Â÷¿ø Æ÷ÀÎÅÍ´Â 1Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ °¡Áú ¼ö ÀÖ´Ù. ±×¸®°í ÁּҴ ã¾Æ°¡±â À§ÇÑ °ÍÀÌ´Ù. ÀÚ ¾Æ·¡¿Í °°Àº ³»¿ëÀ» ²À ¾Ë¾ÆµÎ¼Å¾ß °ÚÁÒ. 1Â÷¿ø Æ÷ÀÎÅÍ ----> ÀϹݺ¯¼öÀÇ ÁÖ¼Ò¸¦ °¡Áú ¼ö ÀÖ´Ù. 2Â÷¿ø Æ÷ÀÎÅÍ ----> 1Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ °¡Áú ¼ö ÀÖ´Ù. int a = 10; a¿¡ 10¿øÀ» ³Ö´Â´Ù int *p = &a; aÀÇ ÁÖ¼Ò¸¦ pÆ÷ÀÎÅÍ¿¡ ³Ö´Â´Ù int **pp = &p; pÀÇ ÁÖ¼Ò¸¦ ppÆ÷ÀÎÅÍ¿¡ ³Ö´Â´Ù ÀÚ ÀÌ·±½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ ±×·³ ¿¹¸¦ Çϳª µé¾î º¾½Ã´Ù. int a = 10; // a´Â 10¿øÀ» °¡Áö°í ÀÖ´Ù printf("aÀÇ ÀüÀç»ê:%d\r\n", a); int *p = &a; // °æºñ½Ç p´Â aÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ¾î 10¿øÀ» °¡Á® °¥ ¼ö ÀÖ´Ù. *p = *p - 10; // °æºñ½Ç p´Â aÀÇ ÁּҷΠã¾Æ°¡ 10¿øÀ» °¡Á® °¬´Ù. printf("aÀÇ ÀüÀç»ê:%d\r\n", a); int **pp = &p; // º¹±Ç ´ç÷±ÝÀ» Àü´ÞÇÏ·¯¿Â ppÁ÷¿øÀº °æºñ¿øÀÇ ÁÖ¼Ò¸¦ ¾Ë°í ÀÖ´Ù. **pp = **pp + 100; // ppÁ÷¿øÀº 100¿øÀ» Àü´Þ ÇØÁÖ¾ú´Ù printf("aÀÇ ÀüÀç»ê:%d\r\n", a); -°á°ú- aÀÇ ÀüÀç»ê:10 -> 10¿ø ÀüÀç»ê aÀÇ ÀüÀç»ê:0 -> °ü¸®ºñ 10¿ø p°æºñ¿øÀÌ °¡Á®°¨ aÀÇ ÀüÀç»ê:100 -> ppÁ÷¿øÀÌ º¹±Ç ´ç÷±Ý 100¿øÀ» Àü´ÞÇÔ ÀÚ ¿©±â¼­ aÀÇ ÁÖ¼Ò¸¦ 1Â÷¿ø Æ÷ÀÎÅÍ¿¡ ³Ö¾ú½À´Ï´Ù. ±×¸®°í 1Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ 2Â÷¿ø Æ÷ÀÎÅÍ¿¡ ³Ö¾ú½À´Ï´Ù. ÁÖ¼Ò¿¬»êÀÚ &ºÙ¿©¼­ ÁÖ¼Ò°ªÀ» ³Ö¾úÁö¿ä. ÀÚ ÀÌ·¸°Ô µÇ¸é a¶ó´Â ¸Þ¸ð¸® ¾ÆÆÄÆ®¿¡ p¶ó´Â °æºñ¿øÀÌ ÁÖ¼Ò¸¦ ¾Ë±â ¶§¹®¿¡ Ç×»ó °ü¸®ºñ¸¦ ¹ÞÀ¸·¯ a°¡ »ì°íÀÖ´Â ÁּҷΠã¾Æ °¥ ¼ö ÀÖ½À´Ï´Ù. a´Â ¾ÆÆÄÆ® °ü¸®ºñ 10¿øÀ» °æºñ¿ø¿¡°Ô ÁÖ¾ú½À´Ï´Ù. 10¿øÀ» ÁÖ´Ï a´Â µ·ÀÌ ÇÑǬ¾ø´Â ºóÅÐÅÐÀÌ°¡ µÇ¾ú½À´Ï´Ù. ±×·¯´ø ¾î´À³¯ a´Â º¹±Ç¿¡ ´ç÷ÀÌ µÇ¾ú½À´Ï´Ù. ^^ ±×·¡¼­ pp¶ó´Â Á÷¿øÀº a¿¡°Ô ´ç÷±ÝÀ» Àü´ÞÇØ ÁÖ±â À§Çؼ­ ÁýÀ» ã¾Æ°¡¾ß ÇÕ´Ï´Ù. ±×·¸Áö¸¸ ppÁ÷¿øÀº a¶ó´Â ÁÖ¼Ò´Â ¸ð¸£°í ¸Þ¸ð¸® ¾ÆÆÄÆ®ÀÇ °æºñ¿ø p¶ó´Â ÁÖ¼Ò¸¦ ¾Ë°í ÀÖ½À´Ï´Ù. ±×·¡¼­ ppÁ÷¿øÀº ÀڱⰡ ¾Ë°í ÀÖ´Â °æºñ½Ç·Î ÇâÇØ °¬½À´Ï´Ù. ÀÚ ¿©±â¼­ °æºñ½ÇÀÇ p°æºñ¿øÀº aÀÇ ÁÖ¼Ò¸¦ ¾Ë°í ÀÖ½À´Ï´Ù. ±×·¡¼­ p°æºñ¿øÀº ppÁ÷¿ø¿¡°Ô aÀÇ ÁÖ¼Ò¸¦ ¾Ë·Á ÁÖ¾ú½À´Ï´Ù. ppÁ÷¿øÀº aÀÇ ÁÖ¼Ò¸¦ ¹Þ°í a¿¡°Ô ã¾Æ°¡ ´ç÷±Ý 100¿øÀ» Àü´ÞÇØ ÁÖ¾ú½À´Ï´Ù. ÀÚ ±×·±µ¥ ÀÌÇØ°¡ ¾È°¡ ½Å´Ù±¸¿ä? ´Ù½Ã Çѹø º¾½Ã´Ù int a = 10; int *p = &a; int **pp = &p; a´Â 10À» °¡Áö°í ÀÖ½À´Ï´Ù. p´Â aÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. printf("%d",p)¸¦ ÇØÁÖ°Ô µÇ¸é p°¡ °¡Áö°í ÀÖ´Â ÁÖ¼Ò aÀÇ ÁÖ¼Ò°¡ Ãâ·ÂµË´Ï´Ù. printf("%d",&p)¸¦ ÇØÁÖ¸é pÀÇ ÁÖ¼Ò°¡ Ãâ·ÂµË´Ï´Ù. pÀÇ ÁÖ¼Ò´Â 2Â÷¿ø Æ÷ÀÎÅÍ¿¡°Ô °¡¸£ÃÄ ÁÖ¾úÁÒ. printf("%d",*p)¿©±â¼­ p¾Õ¿¡ *¸¦ ºÙÀÓÀ¸·Î¼­ p°¡ °¡¸®Å°´Â ÁÖ¼Ò aÀÇ º¯¼öÀÇ °ª 10À» Ãâ·ÂÇÏ°Ô µË´Ï´Ù. ÀÚ ¿©±â¼­ 2Â÷¿ø Æ÷ÀÎÅ͵µ º¼±î¿ä. printf("%d",pp); 1Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò°¡ Ãâ·ÂµË´Ï´Ù. printf("%d",&pp); 2Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò°¡ Ãâ·ÂµË´Ï´Ù. ¿©±â¼­ 2Â÷¿ø Æ÷ÀÎÅ͵µ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖÁÒ. Æ÷ÀÎÅÍ ³¢¸®µµ ¼­·Î°¡ ÁÖ¼Ò¸¦ °¡¸£ÃÄÁÖ¸é ¸¶À½´ë·Î °ªÀ» ¹Ù²Ü ¼ö°¡ ÀÖ½À´Ï´Ù. printf("%d",*pp); 2Â÷¿ø Æ÷ÀÎÅÍ¿¡ *¸¦ ÇÑ°³ ÇØÁÖ¸é pp°¡ °¡Áø ÁÖ¼ÒÀÇ °ªÀ¸·Î ã¾Æ°¡°Ô µË´Ï´Ù. pp°¡ °¡Áø °ªÀº pÀÇ ÁÖ¼ÒÀÔ´Ï´Ù. pÀÇ ÁּҷΠã¾Æ °¡°Ô µÇ¸é p´Â aÀÇ ÁÖ¼Ò°ªÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ±×·¡¼­ *¸¦ ºÙÀÓÀ¸·Î½á *pp´Â aÀÇ ÁÖ¼Ò°ªÀ» °¡Áö°Ô µË´Ï´Ù. printf("%d",**pp); À̰͵µ ¸¶Âù°¡Áö·Î *À» Çϳª ´õ ºÙ¿´½À´Ï´Ù. *ppÀ϶§´Â aÀÇ ÁÖ¼Ò°ªÀ» °¡Áö°í ÀÖ´Â »óÅÂÀÔ´Ï´Ù. *¸¦ Çϳª ´õºÙ¿´À¸´Ï aÀÇ ÁÖ¼ÒÀÇ °ªÀ» ãÀ» ¼ö ÀÖ½À´Ï´Ù. °á·ÐÀûÀ¸·Î **pp´Â *pp°¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ª Áï aÀÇ °ªÀ» °¡Áö°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ÀÌÇØ°¡ ¾È°¡¸é ¸î¹øÀÌ°í ÀÐ¾î º¸½Ã±â ¹Ù¶ø´Ï´Ù. ÀÚ ¿©±â¼­ Æ÷ÀÎÅͳ¢´Â ´õ¿í´õ °£´ÜÇÕ´Ï´Ù ±×³É ÁÖ¼Ò¸¸ ³Ö¾îÁÖ¸é ³¡³ª°ÚÁÒ? int **pp = &p; 1Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ 2Â÷¿ø Æ÷ÀÎÅÍ pp¿¡°Ô ³Ö¾î ÁÖ¾úÁÒ. ÀÚ ±×·³ ppÀÇ ÁÖ¼Ò¸¦ ÀÚ±â Ä£±¸¿¡°Ô ±×´ë·Î ¾Ë·Á ÁÙ ¼ö ÀÖ½À´Ï´Ù. aa¶ó´Â Ä£±¸¿¡°Ô ±×´ë·Î ´ÙÀ½°ú °°ÀÌ ¾Ë·Á ÁÖ¾ú½À´Ï´Ù. Á¦°¡ ¸»ÇßÁÒ? Æ÷ÀÎÅÍ´Â ÁÖ¼Ò °ªÀ¸·Î ÃʱâÈ­°¡ µÈ´Ù°í ppÀÇ ÁÖ¼Ò°ªÀ» **aa¿¡ ³Ö¾úÀ¸´Ï ÁÖ¼Ò°ªÀ¸·Î ÃʱâÈ­°¡ µÇ¾úÀ¸´Ï ¹ýÄ¢¿¡ ¾î±ß³ªÁö ¾ÊÁÒ? int **aa = pp; ÀÌ·¸°Ô Çϸé **aa´Â ppÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖÀ¸´Ï±ñ pp¿Í ¶È°°ÀÌ µÇ´Â °ÍÀÔ´Ï´Ù! ±×·³ °á·ÐÀûÀ¸·Î aaµµ ppÀÇ ÁÖ¼Ò¸¦ ¾Ë°í ÀÖÀ¸´Ï pÀÇ ÁÖ¼Ò¸¦ ãÀ» ¼ö ÀÖ°í a¸¦ ã¾Æ °¥ ¼ö ÀÖ½À´Ï´Ù. 1Â÷¿ø Æ÷ÀÎÅ͵µ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. int a = 10; int *p1 = &a; int *p2 = p1; ¿©±â¼­ p1ÀÇ ÁÖ¼Ò¸¦ p2¿¡°Ô ¾Ë·Á ÁÖ¾úÁÒ. ÀÌ·¸°Ô µÇ¸é p2µµ aÀÇ ÁÖ¼Ò¸¦ ¾Ë°í ¶È°°ÀÌ p1°ú °°ÀÌ Á¢±Ù ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·³ ´ÙÀ½ ½Ã°£¿¡ ºË°Ú½À´Ï´Ù ¼ö°íÇϼ¼¿ä! -------------------------------- < C/C++ ±âÃÊ Tip & Trick > 1Àå Æ÷ÀÎÅÍ ¸Àº¸±â [3] Æ÷ÀÎÅÍ Àâ´À¶ó °í»ýÀÌ ¸¹½À´Ï´Ù. Æ÷ÀÎÅ͸¦ ¶§·ÁÀâ±â À§Çؼ­´Â ¿ì¸®°¡ Á¶±Ý ´õ ³ë·ÂÀ» Çؾ߰ڽÀ´Ï´Ù. ¿À´ÃÀº ¹®ÀÚ¿¡ ´ëÇÑ Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ °£´ÜÇÏ°Ô ÀÌÇظ¦ Çغ¾½Ã´Ù. char *a;°¡ ÀÖ½À´Ï´Ù. ÀÚ ÀÌ°ÍÀº ¹®ÀÚÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù. ¿©±â¼­ *a´Â Æ÷ÀÎÅÍÀ̱⠶§¹®¿¡ 4ByteÀÔ´Ï´Ù. Æ÷ÀÎÅÍ°¡ ¾Æ´Ï¿´´Ù¸é 1Byte¿´°ÚÁö¿ä? Æ÷ÀÎÅÍ´Â Çü¿¡ °ü°è¾øÀÌ ¹«Á¶°Ç 4Byte¶ó°í Àú¹ø ½Ã°£¿¡ ¹è¿ü½À´Ï´Ù. ÀÚ ±×·¯¸é ¿¹Á¦¸¦ Çϳª µé¾îº¾½Ã´Ù. char b = 'c'; char *a = &b; printf("%c",*a); b¿¡ c¶ó´Â ¹®ÀÚ¸¦ Áý¾î ³Ö½À´Ï´Ù. bÀÇ ÁÖ¼Ò¸¦ ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ a¿¡ Áý¾î ³Ö½À´Ï´Ù. ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ a´Â bÀÇ ÁÖ¼Ò¸¦ °¡Áö°í Àֱ⠶§¹®¿¡ 'c'¿¡ Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¼­ *¸¦ ºÙ¿©ÁÖ¾î *a´Â ÀڱⰡ °¡Áø ÁÖ¼ÒbÀÇ °ª 'c'¸¦ Ãâ·ÂÇÏ°Ô µÇ¾ú½À´Ï´Ù. ¿©±â±îÁö´Â ¿ì¸®°¡ À§¿¡¼­ º¸¾Ò´ø Æ÷ÀÎÅÍ¿Í ¹æ½ÄÀÌ ¶È°°½À´Ï´Ù. ÀÚ ±×·³ ´ÙÀ½ ¹®ÀåÀ» º¾½Ã´Ù. char *p = "abc"; ÀÚ ¸Ó¸®°¡ µ¹±â ½ÃÀÛÇϴ±º¿ä? ÀÚ ºÐ¸íÈ÷ Àú¹ø ½Ã°£¿¡ Æ÷ÀÎÅÍ´Â ÁÖ¼Ò °ªÀ» °¡Áø´Ù°í Çߴµ¥ ¿Ö ¹®ÀÚ¿­ÀÌ ÂÓ ´Þ¶ó ºÙ¾úÀ»±î¿ä? ÀÌ°ÍÀº ¹®ÀÚ¿­ÀÇ Ã¹¹ø° ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅͶó°í Çϴµ¥¿ä!! ÀÚ ¿©±â¼­ Áß¿äÇÑ°Í!! ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â ¹Ýµå½Ã ¹®ÀÚ¿­ÀÇ ¼±µÎ¹øÁö¸¦ °¡¸®Å²´Ù!!!!!! ¶ó´Â °ÍÀÔ´Ï´Ù. *p <-- ÀÌ°ÍÀº ¹®ÀÚÀÇ ÁÖ¼Ò¸¸À» °¡Áú ¼ö ÀÖ½À´Ï´Ù. ÀÚ ±×·±µ¥ "abc"¸¦ Áý¾î ³Ö¾úÁÒ? ÀÌ·¸°Ô µÇ¸é ½ÇÇà°ú µ¿½Ã¿¡ ¸Þ¸ð¸®¿¡´Â ´ÙÀ½°ú °°ÀÌ ÀúÀåÀÌ µË´Ï´Ù. a [1000¹øÁö] b [1001¹øÁö] c [1002¹øÁö] \0(³Î¹®ÀÚ) [1003¹øÁö] char *p = "abc"¸¦ ÇÔÀ¸·Î½á p¿¡´Â aÀÇ ÁÖ¼Ò 1000¹øÁö°¡ ÀúÀåÀÌ µË´Ï´Ù. ±×¸®°í ³¡ÀÌ ³³´Ï´Ù. ¿©±â¼­ p´Â ÁÖ¼Ò 1000¹øÁö¸¦ ¾Ë°í ÀÖ½À´Ï´Ù. p¿¡ 1À» Áõ°¡½ÃÅ°¸é 1001¹øÁö¿¡µµ °¥¼ö ÀÖ½À´Ï´Ù. 1À» »©ÁÖ¸é ´Ù½Ã 1000¹øÁö·Î °¥¼ö ÀÖ½À´Ï´Ù. ¹Ì¸® ½ÃÀÛÇÒ¶§ abc°¡ ¸Þ¸ð¸®¿¡ µî·ÏÀÌ µÇ¸é¼­ ÀÚµ¿À¸·Î µÚ¿¡ ³ÎÀÌ ºÙ°Ô µË´Ï´Ù. ³ÎÀº ¹®ÀÚ¿­ÀÇ ³¡À» ¾Ë¸®±â À§ÇÑ ¾Æ½ºÅ° Äڵ尪 0À» ¸»ÇÕ´Ï´Ù. ¸Þ¸ð¸® »ó¿¡´Â ÀÌ·¸°Ô |a|b|c|\0| ¼ø¼­´ë·Î µé¾î °¡°Ô µË´Ï´Ù. printf("%s", p)¸¦ ÇØÁÖ¸é printf´Â pÀÇ ¼±µÎ¹øÁö 1000¹øÁöÀÇ °ª a¸¦ Ãâ·Â ÇØÁÝ´Ï´Ù. ±×¸®°í ´ÙÀ½¹øÁö·Î À̵¿Çؼ­ b¸¦ Ãâ·ÂÇØÁÖ°í ³ÎÀ» ¸¸³¯¶§±îÁö Ãâ·ÂÀ» ÇØÁÝ´Ï´Ù. °á·ÐÀûÀ¸·Î abc°¡ Ãâ·ÂÀÌ µÇ°í ³¡³³´Ï´Ù. char *p = "abc"; -> aÀÇ ¼±µÎ¹øÁö 1000¹øÁö¸¦ Æ÷ÀÎÅÍ p¿¡ ÀúÀå½ÃŲ´Ù printf("%s",p); -> printf´Â p°¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀ» Ãâ·Â ÇØÁÖ°í ³ÎÀ» ¸¸³¯¶§±îÁö ´ÙÀ½¹øÁö·Î Áõ°¡ µÇ¸é¼­ Ãâ·Â ÇØÁØ´Ù ÀÚ ´ÙÀ½ ¿¹Á¦¸¦ º¾½Ã´Ù. int i = 0; char *p="okay"; while( *p++ != NULL ) { i++; } printf("°¹¼ö:%d",i); À§¿¡¼­ i¿¡ °ªÀ» 0À¸·Î ÃʱâÈ­ ½ÃÄ×½À´Ï´Ù. *p¿¡ "okay"¹®ÀÚ¿­ÀÇ ¼±µÎ¹øÁö oÀÇ ÁÖ¼Ò¸¦ µî·Ï ½ÃÄ×½À´Ï´Ù. while¹®Àº ÂüÀ϶§´Â °è¼Ó {¿Í }»çÀÌÀÇ ·çÇÎÀ» µ¹°Ô µË´Ï´Ù. ¶Ç´Â 1À϶§´Â ÂüÀÌ°í 0À϶§´Â °ÅÁþÀ¸·Î ÀνÄÇÕ´Ï´Ù. ¿©±â¼­ while( *p++ != NULL ) ¹®ÀåÀ» º¸½Ã¸é *p´Â ÀڱⰡ °¡¸®Å°´Â ¹®ÀÚÀÌÁö¿ä? µÚ¿¡ ++¸¦ ºÙ¿´±â ¶§¹®¿¡ *p°¡ ½ÇÇàÀÌ µÇ°í ³­ ´ÙÀ½¿¡ *p°¡ °¡¸®Å°´Â °÷ÀÌ ´ÙÀ½À¸·Î ÁøÇàµÇ°ÚÁö¿ä ±×·¯¸é *p++ != NULLÀ̸é ÇöÀç p°¡ °¡¸®Å°´Â ¹®ÀÚ°¡ ³ÎÀÌ ¾Æ´Ï¸é °è¼Ó ·çÇÁ¸¦ µ·´Ù´Â °ÍÀÔ´Ï´Ù. ±×¸®°í ´ÙÀ½ ¹®ÀÚ¸¦ °¡¸®Å°°Ô µÇ°í i++·Î i°ªÀÌ 1Áõ°¡ µË´Ï´Ù. °á°ú·Î º¸¾ÒÀ»¶§ 4°¡ Ãâ·ÂµÇ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ·çÇÁ¸¦ µ¹¸é¼­ ³Î¹®ÀÚ¸¦ ¸¸³¯¶§ ±îÁö i°ªÀ» Áõ°¡½ÃÄÑ "okay"ÀÇ ±æÀ̸¦ ±¸ÇÏ¿´½À´Ï´Ù. ³ªÁß¿¡ ¹®ÀÚ¿­À» °¡Áö°í ³î·Á¸é À̺κÐÀ» Àß ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù. Æ÷ÀÎÅÍ·Î °ªÀ» Áõ°¡½ÃÅ°°Å³ª »©°Å³ª Çؼ­ °¡¸®Å°´Â °÷ÀÇ °ªÀ» À̵¿ÇÏ¸ç ¿©·¯ºÐµéÀÌ ¿øÇÏ´Â ÄÚµùÀ» ÇÒ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÚ ¿©±â¼­ È¥µ¿ ÇÏÁö ¸¶½Ê½Ã¿ä. char *cp = "abcdefg"; int *ip = 12345; ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â ¹®ÀÚ¿­ÀÇ ¼±µÎ ¹øÁö¸¦ ÀúÀå ÇÒ ¼ö ÀÖ°í, Á¤¼öÇü Æ÷ÀÎÅÍ´Â Á¤¼öÇü Æ÷ÀÎÅ͸¦ ÀúÀå ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¼­ *ip = 12345´Â ´ç¿¬È÷ ÁÖ¼Ò°¡ ¾Æ´Ï±â ¶§¹®¿¡ ¿¡·¯°¡ ¹ß»ýÇÒ °ÍÀÔ´Ï´Ù. ±×·¯³ª *cp´Â ¹®ÀÚ¿­ÀÇ ¼±µÎ¹øÁö°¡ ÀúÀåµÇ±â ¶§¹®¿¡ "abcdefg"¸¦ ÇØÁÖ¸é ¹®ÀÚaÀÇ ÁÖ¼Ò°¡ cp¿¡ ÀúÀåÀÌ µÉ°ÍÀÌ°í ¿ì¸®´Â ±× ¼±µÎ¹øÁö¸¦ ¾Ë±â¶§¹®¿¡ abcdefg¸¦ NULL¹®ÀڷΠüũ ÇÏ¿© Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹è¿­À» ¿¹¸¦ µé¾î º¾½Ã´Ù. char ar[10] = "abcdefghi";¹è¿­À» ¿ì¸®°¡ ¼±¾ðÇß½À´Ï´Ù. a[0] 1000¹øÁö -> a a[1] 1001¹øÁö -> b a[2] 1002¹øÁö -> c a[3] 1003¹øÁö -> d a[4] 1004¹øÁö -> e a[5] 1005¹øÁö -> f a[6] 1006¹øÁö -> g a[7] 1007¹øÁö -> h a[8] 1008¹øÁö -> i a[9] 1009¹øÁö -> \0(³Î¹®ÀÚ) µü 10°³ÀÇ ¹è¿­À» ¸Þ¸ð¸®¿¡ Àâ¾ÒÁö¿ä. ¹è¿­Àº ¹Ýµå½Ã [0]ºÎÅÍ ½ÃÀÛÇÕ´Ï´Ù!!! ¹è¿­Àº °£´ÜÈ÷ char a¶ó°í ÇßÀ» °æ¿ì ÇÑ°³ÀÇ ¹®ÀÚ°¡ ¸Þ¸ð¸®¿¡ »ý¼ºµÇÁö¸¸ char a[10]À̶ó°í ÇÏ¸é ¹®ÀÚ 10°³°¡ ¸Þ¸ð¸®¿¡ ¹®ÀÚ¿­·Î »ý¼ºÀÌ µË´Ï´Ù. ¹è¿­ ¸ÇµÚ¿¡´Â ¹Ýµå½Ã NULLÀÌ ºÙ½À´Ï´Ù. a[0]ºÎÅÍ a[9]±îÁö ¸ðµÎ ÇÒ´çÀÌ µÇ¾ú½À´Ï´Ù. ÀÌÁÖ¼Ò¸¦ char *p = &a[0]; ÀÌ·±½ÄÀ¸·Î a[0]ÀÇ ÁÖ¼Ò 1000¹øÁö a°ªÀ» °¡¸®Å°µµ·Ï ÇÒ ¼ö ÀÖ°ÚÁÒ. ÀÌ·¸°Ô µÇ¸é char *p¸¦ printf("%s",p);¸¦ ÇØÁÖ¸é abcdefghi°¡ Ãâ·ÂÀÌ µË´Ï´Ù. ¹°·Ð ³ÎÀ» ¸¸³ª°Ô µÇ¾î i±îÁö¸¸ Ãâ·ÂÀÌ µÇ°ÚÁÒ. ±×¸®°í ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â ¹è¿­Ã³·³ »ç¿ë ÇÒ ¼ö ÀÖ½À´Ï´Ù À̰͵µ ¹ýÄ¢ÀÔ´Ï´Ù. ¹«Á¶°Ç ¹è¿­Ã³·³ »ç¿ë ÇÏ¸é °ªÀ» ±×´ë·Î ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. for(int i = 0 ; i < 10 ; i++) printf("%c",p[i]); ÀÌ·¸°Ô ÇØÁÖ¸é p[0]~p[9]±îÁö abcdefghi°¡ Ãâ·ÂÀÌ µÇ°ÚÁö¿ä. ¿ì¸®°¡ ¿©±â¼­ ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â ¹è¿­·Î ¾µ¼ö ÀÖ´Â °ÍÀ» ¹è¿ü½À´Ï´Ù. ¹è¿­°ú Æ÷ÀÎÅÍÀÇ µ¿ÀÏÇÑ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ°í ¶È°°Àº ÁÖ¼Ò¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¹è¿­Àº »ó¼öÀÌ°í Æ÷ÀÎÅÍ´Â ÁÖ¼Ò°ªÀ» °°´Â º¯¼öÀÔ´Ï´Ù. ²À ±â¾ïÇØµÖ¾ß ÇÕ´Ï´Ù. ¸¶Áö¸· ¿¹Á¦¸¦ º¾½Ã´Ù. char a = 'c'; char ar[10]="abcdefghi"; char *cp1 = &a; char *cp2 = "abcdefg"; char *cp3 = &ar[0]; printf("aÀÇ°ª %c\r\n",a); printf("arÀÇ°ª %s\r\n",ar); printf("cp1ÀÇ °ª %c\r\n",*cp1); printf("cp2ÀÇ °ª %s\r\n",cp2); printf("cp3ÀÇ °ª %s\r\n",cp3); printf("cp2ÀÇ 0 1 2¹ø°ÀÇ °ª%c\r\n", cp2[2]); ¿¹Á¦¸¦ Ç®ÀÌ Çغ¸¼¼¿ä ¿À´ÃÀº ¿©±â±îÁö~! ¼ö°íÇϼ̽À´Ï´Ù. ---------------------------------- < C/C++ ±âÃÊ Tip & Trick > 1Àå Æ÷ÀÎÅÍ ¸Àº¸±â [4] ¾ÆÁ÷ ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ ¿ì¸®°¡ Á»´õ ¤°í ³Ñ¾î°¡¾ß °Ú½À´Ï´Ù. char *p="abcd"; char p[5]="abcd"; ÀÚ ÀÌ·¸°Ô ÇÏ¸é ¸Þ¸ð¸® »ó¿¡´Â ÀÌ·¸°Ô µË´Ï´Ù *pÆ÷ÀÎÅÍ º¯¼ö 100 101 102 103 104 | a | b | c | d | \0 | *(p+0) *(p+1) *(p+2) *(p+3) *(p+4) p[0] p[1] p[2] p[3] p[4] p¹è¿­ 100 101 102 103 104 | a | b | c | d | \0 | p[0] p[1] p[2] p[3] p[4] ÀÚ ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ p´Â ¹è¿­ ó·³ »ç¿ëÇÒ ¼ö ÀÖ°í °¡¸®Å°´Â°÷À» 1¾¿ Áõ°¡½ÃÄÑ Á¢±Ù ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹è¿­Àº °ø°£À» ¹Ì¸® È®º¸ÇÑÈÄ »ç¿ëÇØ¾ß ÇÏÁö¸¸ ¹®ÀÚ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â °ø°£ È®º¸¸¦ ÇÏÁö ¾Ê°í ¹Ù·Î ÁÖ¼Ò°ª¸¸ ³Ö¾î Á¢±Ù ÇÒ ¼ö ÀÖ¾î °£´ÜÇÏ°Ô Ã³¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹è¿­Àº »ó¼öÀÌ°í Æ÷ÀÎÅÍ´Â º¯¼ö ÀÔ´Ï´Ù. ±×·¡¼­ ¹Ù·Î °ªÀ» ³Ö±â À§Çؼ­´Â char *AA="abcd"; char BB[5]="abcd"; ÀÌ·±½ÄÀ¸·Î ¹Ù·Î ³Ö¾î¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù ÇÏÁö¸¸ AA = "abcd"°Ô »ç¿ëÇÑ´Ù¸é Æ÷ÀÎÅÍ º¯¼ö À̱⶧¹®¿¡ ¹Ù·Î ÁÖ¼Ò°ªÀ» ³Ö¾î Á¢±Ù ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ¹è¿­Àº »ó¼öÀ̱⠶§¹®¿¡ ÀÌ·±½ÄÀ¸·Î BB = "abcd"·Î ´ëÀÔÇÒ ¼ö ¾ø½À´Ï´Ù. »ó¼ö¶õ Á¤ÇØÁø °ªÀ¸·Î óÀ½ ÃʱⰪ¸¸ °¡Áö´Â °Ì´Ï´Ù. ¿©±â¼­ abcd°¡ »ó¼öÀÌ°ÚÁÒ. °á·ÐÀûÀ¸·Î »ó¼ö¿¡ »ó¼ö¸¦ ³Ö°Ô µÇ¹Ç·Î ¿À·ù°¡ ¹ß»ýÇÕ´Ï´Ù. ±×·¯³ª Æ÷ÀÎÅÍ´Â º¯¼ö´Ï±ñ º¯¼ö¿¡ ¹®ÀÚ¿­ »ó¼öÀÇ ¼±µÎ¹øÁö¸¦ ÀúÀ常 ÇÏ´Â °Ì´Ï´Ù. ¿©±â¼­ AA´Â Æ÷ÀÎÅÍ ¹è¿­·Î¼­ ÁÖ¼Ò¸¦ °®´Â °ÍÀÌ°í BB´Â 5°³ÀÇ ¹®ÀÚ¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â °ø°£À» È®º¸ÇÑ ¹è¿­ÀÔ´Ï´Ù. ¿©±â¼­ strcpy¸¦ ¿¹¸¦ µé¾î º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù strcpy´Â ¹®ÀÚ¿­À» º¹»çÇÒ¶§ ¾²ÀÌ´Â ÇÔ¼öÀÔ´Ï´Ù. ÀÌ ÇÔ¼ö´Â È®º¸µÈ ¹öÆÛ¿¡¸¸ º¹»ç¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¼­ È®º¸µÈ ¹öÆÛ´Â BB°¡ µÇ°ÚÁö¿ä AA´Â È®º¸µÈ ¹öÆÛ¸¦ °¡Áö°í ÀÖÁö ¾Ê°í ±×³É ¹®ÀÚÀÇ ¼±µÎ¹øÁö¸¦ °¡¸®Å°°í¸¸ ÀÖ½À´Ï´Ù. strcpy(AA, "abcd"); ÀÌ·¸°Ô ÇϰԵȴٸé Æ÷ÀÎÅÍ´Â È®º¸µÈ °ø°£ÀÌ ¾ø´Â°÷¿¡ abcd¸¦ º¹»çÇϱ⠶§¹®¿¡ ½ÇÇà½Ã ÇÁ·Î±×·¥ÀÌ ´Ù¿îµÉ¼ö ÀÖ½À´Ï´Ù. strcpy(BB, "abcd"); ±×·¯³ª ÀÌ·±½ÄÀ¸·Î 5°³¸¦ ÀúÀåÇÒ ¼ö ÀÖ´Â ¹è¿­À» È®º¸ÇÑ BB´Â abcd¸¦ ±×´ë·Î È®º¸µÈ °÷¿¡ º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ ¾î´ÀÁ¤µµ ÀÌÇØÇϼ̽À´Ï±î? ¿©±â¼­ Àǹ®Á¡ÀÌ ³²½À´Ï´Ù. ±×·³ Æ÷ÀÎÅÍ¿¡´Â ÀúÀåÀ» ¸øÇÑ´Ü ¸»Àΰ¡? ¶ó°í »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â°÷À» È®º¸µÈ °ø°£À» °¡¸®Å°µµ·Ï Çϴ°ÍÀÔ´Ï´Ù! Æ÷ÀÎÅÍ¿¡°Ô ¾û¶×ÇÑ °÷À» °¡¸®Å°¸é ¿À·ù°¡ ¹ß»ýÇÏ´Â°Í Ã³·³. Æ÷ÀÎÅÍ¿¡°Ô È®º¸µÈ ¿µ¿ªÀ» °¡¸®Å°µµ·Ï ÇÏ¸é ±× È®º¸µÈ ¿µ¿ª¿¡ º¹»çÇÒ ¼ö ÀÖ½À´Ï´Ù. char *AA = new char[5]; strcpy(AA,"abcd"); printf("%s",AA); delete[] AA; ¿©±â¼­ free store(Èü or µ¿Àû¸Þ¸ð¸®)¸¦ ÇÒ´çÇÏ´Â new¸¦ »ç¿ë ÇÏ¿´´Âµ¥ new¸¦ »ç¿ëÇÏ¿© ÇÒ´çÀ»ÇÏ°í delete·Î ÇØÁ¦¸¦ ÇØÁÖ¾ú½À´Ï´Ù. malloc() free()·Îµµ ¾µ¼ö ÀÖÁö¸¸ new delete°¡ ¾ÈÀüÇÏ°í È®À强ÀÌ ´õ ÁÁ±â ¶§¹®¿¡ new delete¸¦ ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù. ¿©±â¼­ new·Î charÇü 5Byte¸¦ ÇÒ´çÇß½À´Ï´Ù. À̷μ­ 1000 1001 1002 1003 1004 | ¾²·¹±â°ª | ¾²·¹±â°ª | ¾²·¹±â°ª | ¾²·¹±â°ª | ¾²·¹±â°ª | 5°³¸¦ Áý¾î ³ÖÀ» ¼ö ÀÖ´Â °ø°£ÀÇ ¼±µÎ¹øÁö¸¦ AA Æ÷ÀÎÅÍ°¡ °¡¸®Å°°Ô µÇ¾ú½À´Ï´Ù. strcpy·Î 1000¹øÁöºÎÅÍ ³Î±îÁö º¹»çÇÑÈÄ ³¡³ª°Ô µË´Ï´Ù 1000 1001 1002 1003 1004 | a | b | c | d | \0(³Î) | ÀÌ·¸°Ô º¹»ç°¡ µÇ¾ú½À´Ï´Ù. Ãâ·ÂÇغ¸¸é abcd°¡ Ãâ·ÂÀÌ µË´Ï´Ù. ÀÌ·¸°Ô Æ÷ÀÎÅÍ´Â ÇÁ·Î±×·¡¸Ó°¡ ÇÒ´çÇÒ ¼ö ÀÖ´Â ÈüÀ̶ó´Â ¿µ¿ª¿¡¼­ ÇÒ´çÇÑ ¼±µÎ¹øÁö¸¦ °¡¸®Å³ ¼ö ÀÖ½À´Ï´Ù. µ¿Àû¸Þ¸ð¸®´Â ÈüÀ̶ó´Â ¿µ¿ª¿¡¼­ ÇÒ´çÀ» Çϴµ¥ ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ¸é ¿î¿µÃ¼Á¦°¡ ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇØ ÁÖÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ µû·Î ÇÁ·Î±×·¡¸Ó°¡ delete¸¦ ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à delete¸¦ ÇØÁÖÁö ¾ÊÀ¸¸é Memory Leak°¡ ³ª°Ô µË´Ï´Ù. ÇÁ·Î±×·¡¸ÓµéÀÌ Å« ÇÁ·Î±×·¥À» Â¥´Ùº¸¸é delete¸¦ »©¸Ô°Å³ª ÀûÀýÇÏ°Ô »ç¿ëÇÏÁö ¸øÇØ Memory Leak°¡ ¹ß»ýÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¶Ç´Â ¼­¹ö ÇÁ·Î±×·¥À̳ª Àå±â°£ ¶ç¿ö³õ°í ¸Þ¸ð¸®¸¦ ºó¹øÇÏ°Ô ÇÒ´çÇÏ´Â ÇÁ·Î±×·¥À̶ó¸é Memory Leak°¡ ½×¿© ÇÁ·Î±×·¥ÀÌ ´Ù¿îµÉ¼ö Àֱ⠶§¹®¿¡ ¸Þ¸ð¸®Ç®À» »ç¿ëÇÏ°Ô µË´Ï´Ù. ¸Þ¸ð¸®Ç®Àº ÇÁ·Î±×·¥ ½ÃÀÛÇÒ¶§ »ç¿ëÇÒ ¸¸Å­ ÇÒ´çÇÑÈÄ Àç»ç¿ëÇϱ⠶§¹®¿¡ Memory Leak°¡ ÀϾÁö ¾Ê½À´Ï´Ù. ÇÁ·Î±×·¡¸Ó´Â ÈüÀ̶ó´Â ³²°ÜÁø ¸Þ¸ð¸® ¿µ¿ªÀ» ÇÒ´çÇÏ¿© »ç¿ëÇÏ°Ô µË´Ï´Ù. ÀÌ·²¶§¸¶´Ù ÈüÀÇ ¸Þ¸ð¸®´Â º¯ÇÏ°Ô µÇ°í ³ªÁß¿¡ ¸Þ¸ð¸®°¡ ¹Ù´Ú³ª´Â °æ¿ìµµ ÀÖÀ¸´Ï ÇÁ·Î±×·¡¸Ó´Â ÀûÀýÇÏ°Ô »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ³Ê¹« ¸¹Àº ¸Þ¸ð¸® ÇÒ´çÀº ½Ã½ºÅÛ¿¡ ºÎÇϸ¦ ÁÙ¼öµµ ÀÖÀ¸´Ï ¹è¿­·Î ¹öÆÛ¸¦ Àâ¾Æ ¾²´Â°Íµµ ÀûÀýÇÑ »ç¿ë ¹æ¹ýÀÔ´Ï´Ù. ÈüÀÇ ¸Þ¸ð¸®´Â Ç×»ó º¯ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸ ÇÁ·Î±×·¥ÀÌ ³¡³¯¶§ ±îÁö º¯ÇÏÁö ¾Ê´Â °ÍÀÌ Àִµ¥ ±×°ÍÀ» static storage allocation(Á¤Àû ±â¾ï Àå¼Ò)¶ó°í ÇÕ´Ï´Ù. ÀÌ Á¤Àû ±â¾ïÀå¼Ò¿¡ ÇÒ´çÀ» ÇÏ¸é µ¿Àû ±â¾ïÀå¼Ò¿¡ ÇÒ´ç Çϴ°Ͱú´Â ´Þ¸® ¹öÆÛÀÇ Å©±â¿Í À§Ä¡°¡ ÄÄÆÄÀÏÇϰųª ÇÁ·Î±×·¥ ½ÇÇà½Ã Á¤ÇØÁö°Ô µÇ¹Ç·Î À¶Å뼺Àº ¶³¾îÁý´Ï´Ù. ¿¹¸¦µé¾î Àü¿ªÀ¸·Î ¼±¾ðµÈ º¯¼ö³ª Ŭ·¡½º ¸â¹öµîÀ» µé¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ÇÔ¼ö¾È¿¡¼­ ¸¸µé¾îÁø Áö¿ª º¯¼ö´Â µ¿Àû ¸Þ¸ð¸® ¿µ¿ªÁß ½ºÅà °ø°£¿¡¼­ ÇÒ´çÀ» ¹Þ½À´Ï´Ù. Áö¿ª º¯¼ö´Â ÇÔ¼ö¸¦ ¹þ¾î³ª°Å³ª { }¸¦ ¹þ¾î³¯¶§ ÀÚµ¿À¸·Î ½ºÅÿ¡¼­ ¼Ò¸êµË´Ï´Ù. ½ºÅðú ÈüÀº ¾çÂÊ ³¡¿¡ À§Ä¡ÇÏ¿© °ü¸®ÇÏ°Ô µË´Ï´Ù. <¸Þ¸ð¸® ±¸Á¶> --------------------------------- (Á¤Àû ¸Þ¸ð¸® ¿µ¿ª )µ¥ÀÌÅÍ °ø°£ - (ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â µ¿¾È °è¼Ó Áö¼ÓµÇ´Â ¿µ¿ª) --------------------------------- (µ¿Àû ¸Þ¸ð¸® ¿µ¿ª)½ºÅà °ø°£ - (ÇÔ¼ö¿Í º¯¼öµéÀÌ ÀÚµ¿À¸·Î ÀúÀåµÇ´Â °ø°£) --------------------------------- (µ¿Àû ¸Þ¸ð¸® ¿µ¿ª)Èü °ø°£ - (¼ø¼­¿Í ±ÔÄ¢ÀÌ ¾øÀÌ ÀÚÀ¯·Ó°Ô ÇÒ´ç°ú »èÁ¦°¡ °¡´ÉÇÑ ¿µ¿ª) --------------------------------- ¾î´À Á¤µµ ÀÌ·¸°Ô ¾²ÀÌ°í ÀÖ´Ù´Â °Í¸¸ È®½ÇÇÏ°Ô ±â¾ïÇØ µÓ½Ã´Ù. -------------------------------------- < C/C++ ±âÃÊ Tip & Trick > 1Àå Æ÷ÀÎÅÍ ¸Àº¸±â [5] Àú¹ø ½Ã°£¿¡ ¸Þ¸ð¸® ÇÒ´çÀ» ÇÏ¿© Æ÷ÀÎÅÍ°¡ °¡¸®Å°µµ·Ï Çؼ­ µ¥ÀÌŸ¸¦ ÀúÀåÇÏ´Â ¹ýÀ» ¹è¿ü½À´Ï´Ù. ¿©±â¼­ 1Â÷¿ø Æ÷ÀÎÅÍ´Â ¹è¿­Ã³·³ ¾²Àϼö ÀÖ´Ù´Â °ÍÀ» ¹è¿ü½À´Ï´Ù. Æ÷ÀÎÅÍ´Â º¯¼öÀ̹ǷΠ¾î¶°ÇÑ ÁÖ¼Ò¸¦ °¡¸®Å³¼ö ÀÖ´Ù°í Çß½À´Ï´Ù. ¿©±â¼­ ¿ì¸®´Â Æ÷ÀÎÅÍ ¹è¿­¿¡ ´ëÇؼ­ ¹è¿ö º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. Æ÷ÀÎÅÍ ¹è¿­À̶õ ¹è¿­¿¡ Æ÷ÀÎÅ͸¦ ºÙÀÎ °ÍÀÔ´Ï´Ù. char a[10]; ÀÌ·¸°Ô ÇØÁÖ¸é 10°³ÀÇ °ø°£ÀÌ È®º¸µÈ ¹è¿­À» ¼±¾ðÇÑ °ÍÀÔ´Ï´Ù. ÀÌ ¹è¿­ ¾Õ¿¡ *¸¦ ºÙÀÓÀ¸·Î½á char *a[10]; 10°³ÀÇ °ø°£ÀÌ È®º¸µÈ Æ÷ÀÎÅÍ ¹è¿­ Áï Æ÷ÀÎÅÍ 10°³°¡ ¸¸µé¾îÁ®¼­ °¢°¢ÀÇ Æ÷ÀÎÅÍ´Â ÁÖ¼Ò¸¦ °¡¸®Å³ ¼ö ÀÖ½À´Ï´Ù. ¾ÆÁÖ °£´ÜÇÏ°Ô ÀÌÇØ°¡ µÉ°ÍÀÔ´Ï´Ù. ÀÚ ¿©±â¼­ ¿ì¸®´Â ÁÖ¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¹è¿­·ÎÇؼ­ 10°³¸¦ ¸¸µé¾ú½À´Ï´Ù. ´ÜÁö ±â´ÉÀ» Çϳª·Î ºÃÀ»¶§ 1Â÷¿ø Æ÷ÀÎÅÍ¿Í ¶È°°´Ù°í º¸½Ã¸é µË´Ï´Ù. aÀÇ À̸§ ÀÚü´Â »ó¼öÀÌÁö¸¸ a[n]ÀÏ°æ¿ì¿¡´Â ÇϳªÀÇ Æ÷ÀÎÅÍ º¯¼ö·Î º¼ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹´Â Æ÷ÀÎÅÍ ¹è¿­·Î ¼±¾ðÇؼ­ Æ÷ÀÎÅÍ ¹è¿­ 0¹øºÎÅÍ ~ 2¹ø±îÁö °¢°¢ ¹®ÀÚÀÇ ¼±µÎ¹øÁö¸¦ °¡¸®Å°µµ·Ï ÃʱâÈ­ ½ÃÄ×½À´Ï´Ù. char *p[3]; Æ÷ÀÎÅÍ 3°³¸¦ ¼±¾ð (Æ÷ÀÎÅ͹迭) p[0]="1234"; 1234ÀÇ ¼±µÎ¹øÁö¸¦ ÀúÀå p[1]="5678"; 5678ÀÇ ¼±µÎ¹øÁö¸¦ ÀúÀå p[2]="abcd"; abcdÀÇ ¼±µÎ¹øÁö¸¦ ÀúÀå printf("%s %s %s",p[0], p[1], p[2]); ¹øÁö¿¡ ÀúÀåµÈ °ªÀ» Ãâ·Â ÀÚ ±×·³ p[0],p[1],p[2]µéÀº °¢°¢ ÇϳªÀÇ º¯¼ö¶ó°í º¼ ¼öµµ ÀÖ½À´Ï´Ù. ÀÚ p[0]ÀÌ °¡¸®Å°´Â °ÍÀº 1234ÀÇ ¼±µÎ ¹øÁöÀÔ´Ï´Ù. ¿©·¯ºÐÀÇ ÀÌÇظ¦ µ½±â À§ÇØ.. p[0]ÀÌ ¿¹¸¦µé¾î *hi¶ó°í »ý°¢ÇØ º¾½Ã´Ù. ±×·¯¸é ¸Þ¸ð¸® »ó¿¡ ¸Þ¸ð¸® | 1 | 2 | 3 | 4 | \0 | *(hi+0) *(hi+1) *(hi+2) *(hi+3) *(hi+4) ÀÚ 1Â÷¿ø Æ÷ÀÎÅÍ¿Í ¶È°°ÀÌ »ý°¢ÇØ º¸¸é Áõ°¡¸¦ ½ÃÄÑ Á¢±ÙÀ» ÇÒ¼ö ÀÖÁÒ? °á·ÐÀûÀ¸·Î hi¸¦ p[0]À¸·Î ¹Ù²Ù°í ´Ù½Ã »ý°¢Çغ¼¶§ *(p[0]+0)Àº 1À» °¡¸®Å²´Ù *(p[0]+1)Àº 2À» °¡¸®Å²´Ù *(p[0]+2)Àº 3À» °¡¸®Å²´Ù *(p[0]+3)Àº 4À» °¡¸®Å²´Ù *(p[0]+4)Àº ³ÎÀ» °¡¸®Å²´Ù À̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. p[0]Àº 1234ÀÇ ¼±µÎ¹øÁö¸¦ °¡¸®Å²´Ù´Â °ÍÀ» ¿©·¯ºÐÀº ¾Ë°í ÀÖ½À´Ï´Ù. ÀÚ ÀÌ·±½ÄÀ¸·Î Æ÷ÀÎÅÍ·Î Á¢±ÙÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸§ ÀÚüÀÏ °æ¿ì´Â ¼±µÎ¹øÁö¸¦ °¡¸®Å°°í *¸¦ ºÙÀÌ°Ô µÇ¸é °¡¸®Å°´Â ÁÖ¼ÒÀÇ µ¥ÀÌŸ¸¦ °Çµå¸± ¼ö ÀÖ½À´Ï´Ù. ÀÚ ´Ù½ÃÇѹø! (p[0])¿©±â ¾Õ¿¡ *() ºÙÀ̸é *(p[0])ÀÌ µÇ°Ú°í ÀÚ p[0]ÀÌ °¡¸®Å°´Â ù¹ø° ÁÖ¼Ò´Â 1234Áß 1ÀÇ ÁÖ¼Ò°ÚÁÒ.. ¾Õ¿¡ *()·Î °¨½ÎÁÖ¾ú±â ¶§¹®¿¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ µ¥ÀÌŸ°ª 1À» ±×´ë·Î ¾ò¾î ¿Ã¼ö ÀÖ½À´Ï´Ù. ÀÚ ±×·¯¸é, *(p[0]) ÀÌ°ÍÀº °ª 1À» °¡¸®Å°°í *(p[1]) ÀÌ°ÍÀº °ª 5¸¦ °¡¸®Å°°í *(p[2]) ÀÌ°ÍÀº °ª a¸¦ °¡¸®Å²´Ù´Â °ÍÀ» ¾Ë¾Ò½À´Ï´Ù. ÀüºÎ´Ù ¼±µÎ¹øÁöÀÇ ¹®ÀÚ¸¦ °¡¸®Å°°í ÀÖ½À´Ï´Ù. ¿©±â¿¡ °¢°¢ +,-¸¦ ÇØÁÜÀ¸·Î½á ´ÙÀ½ ¹®ÀÚ³ª ÀÌÀü ¹®ÀÚ¸¦ °¡¸®Å³ ¼ö ÀÖ´Ù´Â °ÍÀ» ¾Ë¾Ò½À´Ï´Ù. °ýÈ£¸¦ ÇØÁØ ÀÌÀ¯´Â ¿ì¼±¼øÀ§ ¶§¹®¿¡ ÇØÁØ°Í ÀÔ´Ï´Ù. ¿¹¸¦µé¾î ¿ì¼±¼øÀ§°¡ p[0]ÀÌ °¡¸®Å°´Â ÁÖ¼ÒÀÇ Æ÷ÀÎÅͱ⠶§¹®¿¡ p[0]ÀÌ ¿ì¼±ÀÌ µÇ¾î¾ß Çϱ⶧¹®¿¡ p[0]¿¡ °ýÈ£¸¦ ³Ö°í ¹Ù±ù¿¡ *¸¦ ³ÖÀº °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇØÁÜÀ¸·Î½á p[0]ÀÌ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀº 1ÀÌ µÇ´Â °ÍÀÔ´Ï´Ù. À̷νá Æ÷ÀÎÅÍ ¹è¿­ÀÇ ±¸Á¶¸¦ Çѹø ÈÈ¾î ºÃ½À´Ï´Ù. ´õÀÌ»ó º¹ÀâÇÏ°Ô ÇÒÇÊ¿ä ¾øÀÌ ¿©±â±îÁö¸¸ ¾Ë°í °è½Ã¸é ÃæºÐÇϸ®¶ó°í º¾½Ã´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸½Ã¸é ¾Ë°ÚÁö¸¸ ¹è¿­·Î ¼±¾ðÇßÀ» »ÓÀÌÁö °ÅÀÌ ¶È°°´Ù°í ´À²¸Áö½Ç °Ì´Ï´Ù.. char *p[3]; p[0]="1234"; p[1]="5678"; p[2]="abcd"; printf("%s %s %s\r\n",p[0], p[1], p[2]); printf("%c %c %c\r\n",*(p[0]),*(p[1]),*(p[2])); printf("%c %c %c\r\n",*(p[0]+1),*(p[0]+2),*(p[0]+3)); char *p1="1234"; char *p2="5678"; char *p3="abcd"; printf("%s %s %s\r\n",p1, p2, p3); printf("%c %c %c\r\n",*p1,*p2,*p3); printf("%c %c %c",*(p1+1),*(p1+2),*(p1+3)); <°á°ú> 1234 5678 abcd 1 5 a 2 3 4 1234 5678 abcd 1 5 a 2 3 4 ÀÚ ÀÌÇØÇϼ̰ÚÁÒ? ¿©±â¼­ ³¡ÀÌ ¾Æ´Õ´Ï´Ù. Ȥ½Ã ½Ç¼ö·Î »©¸ÔÀ» ¼öµµ ÀÖ°ÚÁÒ??? ¹«¾ùÀϱî¿ä. ¸Þ¸ð¸® ÇÒ´çÀÔ´Ï´Ù. Æ÷ÀÎÅÍ´Â °¡¸®Å°´Â °ÍÀ¸·Î ¾²ÀÌ°í ÀÖ½À´Ï´Ù. ±×·¯³ª, µ¥ÀÌŸ¸¦ ÀúÀå, º¹»ç µîµî ÀÛ¾÷À» ÇÏ·Á¸é ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© È®º¸ÇÑÈÄ ±×°÷À» °¡¸®Å°°Ô ÇÑÈÄ ÀúÀåÀ» ÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â °÷ ¾øÀÌ ¾û¶×ÇÑ °÷À» °¡¸®Å°°Ô µÇ¾î ¿À·ù°¡ ¹ß»ýÇÕ´Ï´Ù. ¸¶Áö¸· ¿¹Á¦¸¦ º¸°í ÀÌÇظ¦ ÇϽñ⠹ٶø´Ï´Ù. char *p[3]; p[0] = new char[10]; // ¹®ÀÚ 10°³¸¦ ³ÖÀ» ¼ö ÀÖ´Â ¸Þ¸ð¸®¸¦ È®º¸ p[1] = new char[10]; // ¹®ÀÚ 10°³¸¦ ³ÖÀ» ¼ö ÀÖ´Â ¸Þ¸ð¸®¸¦ È®º¸ p[2] = new char[10]; // ¹®ÀÚ 10°³¸¦ ³ÖÀ» ¼ö ÀÖ´Â ¸Þ¸ð¸®¸¦ È®º¸ //¸Þ¸ð¸®ÇÒ´çÀ» ÇÏÁö ¾Ê°í ¸¸¾à È®º¸µÈ ¿µ¿ªÀÌ ¾ø´Â »óÅ¿¡¼­ ÇÒ °æ¿ì ¿À·ù ¹ß»ý gets(p[0]); // ÇÑÁÙÀ» ÀÔ·Â ¹Þ¾Æ ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ÀúÀå gets(p[1]); // ÇÑÁÙÀ» ÀÔ·Â ¹Þ¾Æ ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ÀúÀå gets(p[2]); // ÇÑÁÙÀ» ÀÔ·Â ¹Þ¾Æ ÇÒ´çµÈ ¸Þ¸ð¸®¿¡ ÀúÀå printf("%s",p[0]); // p[0]ÀÌ °¡¸®Å°´Â ÁÖ¼ÒÀÇ µ¥ÀÌŸ¸¦ Ãâ·Â printf("%s",p[1]); // p[1]ÀÌ °¡¸®Å°´Â ÁÖ¼ÒÀÇ µ¥ÀÌŸ¸¦ Ãâ·Â printf("%s",p[2]); // p[2]ÀÌ °¡¸®Å°´Â ÁÖ¼ÒÀÇ µ¥ÀÌŸ¸¦ Ãâ·Â delete p[0]; // p[0]ÀÌ °¡¸®Å°´Â È®º¸µÈ ¿µ¿ªÀ» Èü¿¡¼­ Á¦°Å delete p[1]; // p[1]ÀÌ °¡¸®Å°´Â È®º¸µÈ ¿µ¿ªÀ» Èü¿¡¼­ Á¦°Å delete p[2]; // p[2]ÀÌ °¡¸®Å°´Â È®º¸µÈ ¿µ¿ªÀ» Èü¿¡¼­ Á¦°Å ÀÚ ÀÌÇØÇϼÌÁÒ? ÀÌÇظ¦ µ½±âÀ§ÇØ ÁÙÁÙÀÌ ¿¹Á¦¸¦ for¹® ¾øÀÌ »ç¿ëÇߴµ¥ ³ªÁß¿¡´Â for(int i = 0 ; i < 3 ; i++) { p[i] = new char[10]; } ÀÌ·±½ÄÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ°ÚÁÒ.. ¾Æ¹«Æ° Æ÷ÀÎÅÍ·Î ÀÛ¾÷ÇÒ°æ¿ì ´ëºÎºÐ ÁÖ¼Ò¸¦ ÀúÀåÇÏ¿© °¡¸®Å°°Å³ª ¸Þ¸ð¸® ÇÒ´çÀ» ÇÏ¿© »ç¿ë ÇÕ´Ï´Ù. Àß ÀÌÇØÇØ µÎ½Ã±â ¹Ù¶ø´Ï´Ù. Áö±Ý²¯ charÇü 1Â÷¿ø Æ÷ÀÎÅÍ¿Í Æ÷ÀÎÅÍ ¹è¿­¿¡ ´ëÇؼ­ ¹è¿ü½À´Ï´Ù. ÀÚ ±×·³ ¸¶Áö¸·À¸·Î ÇÑ°¡Áö°¡ ´õ ³²¾Æ ÀÖ½À´Ï´Ù. charÇü 2Â÷¿ø Æ÷ÀÎÅÍÀÔ´Ï´Ù. ÇÑ°¡Áö¸¦ ¾Ë¸é ³ª¸ÓÁö´Â ºñ½ÁÇÏ°Ô ±×´ë·Î ÀÀ¿ë¸¸ ÇÏ¸é µË´Ï´Ù. ÀÚ ¿¹Á¦¸¦ º¾½Ã´Ù. char **pp; charÇü 2Â÷¿ø Æ÷ÀÎÅ͸¦ ¼±¾ð Çß½À´Ï´Ù. Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ ÀúÀåÇÏ°í ±× ÁÖ¼ÒÀÇ µ¥ÀÌŸ¸¦ °¡¸®Å³¼ö ÀÖ½À´Ï´Ù pp = new char* [3]; 2Â÷¿ø Æ÷ÀÎÅÍ´Â 1Â÷¿ø Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°¹Ç·Î char¿¡ *°¡ ºÙ¾î char*ÀÇ 1Â÷¿ø Æ÷ÀÎÅÍ 3°³¸¦ ÇÒ´ç Çß½À´Ï´Ù. ¿©±â¼­ Æ÷ÀÎÅÍ 3°³´Ï±ñ ÃÑ 4 X 3 = 12Byte¸¦ ÇÒ´çÇÑ °ÍÀÌ´Ù. Æ÷ÀÎÅÍ´Â ¹«Á¶°Ç 4Byte¶ó°í ÇßÁÒ? pp 2Â÷¿ø Æ÷ÀÎÅÍ´Â 3°³ÀÇ Æ÷ÀÎÅÍ º¯¼ö¸¦ ÇÒ´çÇÑ ¸Þ¸ð¸®ÀÇ ¼±µÎ¹øÁö¸¦ °¡¸®Å°°í ÀÖ½À´Ï´Ù. ´ÜÁö 1Â÷¿ø Æ÷ÀÎÅÍ º¯¼ö¸¦ 3°³ ¸Þ¸ð¸®»ó¿¡ ¸¸µé±â¸¸ Çß½À´Ï´Ù. pp-> [ ][ ][ ] ¿ì¼±Àº ¸Þ¸ð¸® ÇÒ´çÀ» ÇÏÁö ¾Ê¾ÒÀ¸´Ï °¡¸®Å°´Â °÷ÀÌ ºó»óÅ°¡ µÇ°ÚÁÒ 1Â÷¿ø Æ÷ÀÎÅÍ¿¡ °¢°¢ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ¿© °¡¸®Å°µµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. pp[0] = new char [10]; or *(pp+0) = new char [10]; pp[1] = new char [10]; or *(pp+1) = new char [10]; pp[2] = new char [10]; or *(pp+2) = new char [10]; 2°¡Áö ¹æ½ÄÀ¸·Î ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. Æ÷ÀÎÅÍ´Â ¹è¿­·Î ¾µ¼ö ÀÖ´Ù°í ¸»ÇßÁÒ? ´ëºÎºÐ ¹è¿­ÀÌ º¸±â ½±±â ¶§¹®¿¡ ¹è¿­·Î ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù! ÀÚ! 3°³ÀÇ 1Â÷¿ø Æ÷ÀÎÅÍ¿¡ 10Byte¾¿ ÇÒ´çÇÑ ¸Þ¸ð¸®ÀÇ ¼±µÎ¹øÁö¸¦ °¢°¢ °¡¸®Å°µµ·Ï Çß½À´Ï´Ù. pp-> [10Byte][10Byte][10Byte] ÀÚ Èü¿¡¼­ ÃÑ 30Byte¸¦ ÇÒ´ç Çß±º¿ä ¸ù¶¥ ÇÕÃļ­ 12 + 30 = 42Byte¸¦ ÇÒ´çÇÑ °ÍÀÔ´Ï´Ù 4ByteÂ¥¸® Æ÷ÀÎÅÍ 3°³¿Í 10ByteÂ¥¸® ¸Þ¸ð¸® 3°³ÁÒ.. ÀÚ À̷μ­ 2Â÷¿ø Æ÷ÀÎÅÍ´Â 3°³ÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ ¼±µÎ¹øÁö¸¦ °¡¸®Å°°í ÀÖ½À´Ï´Ù. pp[0]À̳ª *pp´Â ÇÒ´çÇÑ °÷ÀÇ ¼±µÎ¹øÁöÀÇ °ªÀ» ¾òÀ» ¼ö ÀÖ°ÚÁÒ? pp[1]Àº *(pp+1)ÀÌ µÇ°Ú°í pp[2]Àº *(pp+2)°¡ µÇ°ÚÁÒ? ¾ÆÁÖ °£´ÜÇÏ°Ô »ý°¢ ÇÏ½Ã¸é µË´Ï´Ù. gets(*pp); or gets(pp[0]); 123À» ÀÔ·ÂÇÏ°í ¿£ÅÍ gets(*(pp+1)); or gets(pp[1]); 456À» ÀÔ·ÂÇÏ°í ¿£ÅÍ gets(*(pp+2)); or gets(pp[2]); 789¸¦ ÀÔ·ÂÇÏ°í ¿£ÅÍ ÀÚ gets·Î °¢°¢ ÇÒ´çÇÑ ¸Þ¸ð¸®¿¡ °ªÀ» ÀúÀå ½ÃÄ×½À´Ï´Ù. *pp´Â "123"ÀÇ 1ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ°í *(pp+1)´Â "456"ÀÇ 4ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ°í *(pp+2)´Â "789"ÀÇ 7ÀÇ ÁÖ¼Ò¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. 1¾¿ Áõ°¡½ÃÅ°¸é ´ÙÀ½ Æ÷ÀÎÅÍÀÇ ¼±µÎ¹øÁö¸¦ °¡¸®Å°°Ô µÇ´Â °Ì´Ï´Ù. ±×·¡¼­ ´ÙÀ½¹®ÀÚ¸¦ °¡¸®Å°°í ½Í´Ù¸é *( pp[0] + 1 ) or *( *(pp)+1 ) ÀÚ ÀÌ·±½ÄÀ¸·Î ´Ü¾îº°·Î Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. pp[0]À̳ª *(pp)À̳ª ¶È°°ÀÌ °¡¸®Å°´Â°ÍÀº ¹®ÀÚ 1À» °¡¸®Å°°í ÀÖ½À´Ï´Ù. pp[0]+1À» ÇØÁÖ¸é ´ÙÀ½ ´Ü¾îÀÇ ÁÖ¼Ò¸¦ ¾ò¾î¿À°Ô µÇ°í *()·Î ±× ÁּҾȿ¡ ÀÖ´Â °ªÀ» 2¸¦ ¾ò¾î¿À°Ô µË´Ï´Ù. *(pp)µµ ¸¶Âù°¡Áö·Î *pp°¡ °¡¸®Å°´Â°ÍÀº 1°ªÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°°í ÀÖ°ÚÁÒ. 1À» Áõ°¡½ÃÄÑ 2¸¦ °¡¸®Å°µµ·Ï Çß½À´Ï´Ù ´Ù½Ã *()·Î °¨½ÎÁÖ¾î 2¸¦ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀ» ¾ò¾î¿À°Ô µË´Ï´Ù. ¿©±â¼­ *(pp+1)°ú *(pp)+1Àº ¾öÇöÈ÷ ´Ù¸¨´Ï´Ù!! *(pp+1)Àº ÀڱⰡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀ» 1Áõ°¡½ÃÄÑ 4byte°¡ À̵¿ÀÌ µÇ¾î ´ÙÀ½ Æ÷ÀÎÅÍ·Î À̵¿ÇÏ°Ô µË´Ï´Ù. *(pp)+1ÇöÀç °¡¸®Å°´Â ´Ü¾î¿¡ 1À» Áõ°¡½ÃÄÑ 1Byte ¾ÕÀ¸·Î À̵¿ÇÏ°Ô µÇ¾î ´ÙÀ½ ´Ü¾îÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°°Ô µË´Ï´Ù. ¸ðµÎ *()·Î °¨½ÎÁ® ÀڱⰡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ µ¥ÀÌŸ¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°ÚÁÒ. ´Ù¸¥°Íµéµµ ÀÌ ¹æ½ÄÀ¸·Î Á¢±ÙÀ» ÇÏ¸é µË´Ï´Ù. Á» º¹ÀâÇÏ°Ô º¸ÀÏÁö´Â ¸ð¸£°ÚÁö¸¸ ¹æ¹ýÀº ´Ù ¶È°°½À´Ï´Ù. °è¼Ó À̺κÐÀ» Àо ÀÌÇظ¦ ½ÃÅ°¼¼¿ä.. ¸¶Áö¸·À¸·Î °ªÀ» »ç¿ëÇß´Ù¸é Èü¿¡¼­ Á¦°Å ÇØ¾ß ÇÕ´Ï´Ù. Áö±Ý ¸Þ¸ð¸® »óŸ¦ ¸ÕÁ® º¼±î¿ä? pp pp[0] == *(pp) [1] 1Byte [2] 1Byte [3] 1Byte pp[1] == *(pp+1) [4] 1Byte [5] 1Byte [6] 1Byte pp[2] == *(pp+2) [7] 1Byte [8] 1Byte [9] 1Byte ÀÚ ¿©±â¼­ delete¸¦ ÇØÁÖ¾î °¢°¢ 3°³ÀÇ Æ÷ÀÎÅÍ¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ Á¦°Å ½ÃÄÑÁÖ¸é µÇ°Ú½À´Ï´Ù. delete pp[0]; pp[0]ÀÌ °¡¸®Å°´Â°÷ 10ByteÇÒ´çµÈ ºÎºÐÀ» Èü¿¡¼­ Á¦°ÅÇÕ´Ï´Ù delete pp[1]; pp[1]ÀÌ °¡¸®Å°´Â°÷ 10ByteÇÒ´çµÈ ºÎºÐÀ» Èü¿¡¼­ Á¦°ÅÇÕ´Ï´Ù delete pp[2]; pp[2]ÀÌ °¡¸®Å°´Â°÷ 10ByteÇÒ´çµÈ ºÎºÐÀ» Èü¿¡¼­ Á¦°ÅÇÕ´Ï´Ù À̷μ­ 30Byte°¡ ¸Þ¸ð¸®¿¡¼­ Á¦°Å µÇ¾ú½À´Ï´Ù ³ª¸ÓÁö Æ÷ÀÎÅÍ 3°³°¡ ÇÒ´çµÈ 12Byte¸¦ Á¦°Å Çؾ߰ÚÁÒ 3°³ÀÇ Æ÷ÀÎÅÍÀÇ ¼±µÎ¹øÁö¸¦ °¡¸®Å°´Â pp¸¦ Á¦°Å ÇØÁÖ¸é À̷μ­ 12Byte°¡ Èü¿¡¼­ Á¦°Å µË´Ï´Ù. delete pp; ÀÚ ÀÌ·¸°Ô ÇÏ¸é ¸»²ûÇÏ°Ô ¸¶¹«¸®°¡ µÇ´Â °Ì´Ï´Ù. ±ò²ûÇÑ ¿¹Á¦¸¦ º¾½Ã´Ù ¾à°£ º¯Çü½ÃŲ °ÅÁö¸¸ ÀÌ°ÍÀ» Ç®¾îº¸¼¼¿ä. ÀÌÇØÇϼ̴ٸé Áö±Ý±îÁö Àßµû¶ó ¿À½Å°Ì´Ï´Ù. char **pp; // 2Â÷¿ø Æ÷ÀÎÅÍ ¹è¿­ ¼±¾ð pp = new char* [3]; // 1Â÷¿ø Æ÷ÀÎÅÍ 3°³¸¦ ¸Þ¸ð¸®¿¡¼­ ÇÒ´çÇÏ¿© ¼±µÎ¹øÁö¸¦ °¡¸®Å°µµ·Ï ÇÑ´Ù *(pp+0) = new char [100]; // ù¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ¿¡ 100Byte¸¦ ÇÒ´ç pp[1] = new char [100]; // µÎ¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ¿¡ 100Byte¸¦ ÇÒ´ç pp[2] = new char [100]; // ¼¼¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ¿¡ 100Byte¸¦ ÇÒ´ç gets(*pp); // ù¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¸Þ¸ð¸®¿¡ ÀÔ·ÂµÈ °ªÀ» ÀúÀå gets(pp[1]); // µÎ¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¸Þ¸ð¸®¿¡ ÀÔ·ÂµÈ °ªÀ» ÀúÀå gets(pp[2]); // ¼¼¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¸Þ¸ð¸®¿¡ ÀÔ·ÂµÈ °ªÀ» ÀúÀå printf("%s\r\n", *(pp+0)); //ù¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹®ÀÚ¸¦ ³ÎÀ» ¸¸³¯¶§±îÁö Ãâ·Â printf("%s\r\n", *(pp+1)); //µÎ¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹®ÀÚ¸¦ ³ÎÀ» ¸¸³¯¶§±îÁö Ãâ·Â printf("%s\r\n", *(pp+2)); //¼¼¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹®ÀÚ¸¦ ³ÎÀ» ¸¸³¯¶§±îÁö Ãâ·Â printf("%c\r\n", *(pp[1]+1)); //µÎ¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹®ÀÚÀÇ ´ÙÀ½ ¹®ÀÚ¸¦ Ãâ·Â printf("%c\r\n", *(*(pp+1)+1)); //µÎ¹ø° 1Â÷¿ø Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹®ÀÚÀÇ ´ÙÀ½ ¹®ÀÚ¸¦ Ãâ·Â delete *(pp); //ù¹ø° Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ Èü¿¡¼­ Á¦°Å delete pp[1]; //µÎ¹ø° Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ Èü¿¡¼­ Á¦°Å delete pp[2]; //¼¼¹ø° Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ Èü¿¡¼­ Á¦°Å delete pp; //ÇÒ´çÇÑ 3°³ÀÇ Æ÷ÀÎÅ͸¦ Èü¿¡¼­ Á¦°Å ÀÚ ¼ö°íÇϼ̽À´Ï´Ù. ´ÙÀ½ ½Ã°£¿¡ º¾½Ã´Ù. --------------------------------------------------- < C/C++ ±âÃÊ Tip & Trick > 1Àå Æ÷ÀÎÅÍ ¸Àº¸±â [6] À̹ø ½Ã°£¿¡´Â NULL Æ÷ÀÎÅÍ¿Í voidÇü Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ ¹è¿ö º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. NULL Æ÷ÀÎÅÍ´Â °¡¸®Å°´Â °÷ÀÌ 0x0000À» °¡¸®Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù. NULL Æ÷ÀÎÅÍ´Â °ªÀÌ 0À̶ó´Â ¶æÀÌÁÒ.. ½ÇÁ¦·Î NULLÀº #define NULL 0À¸·Î Á¤ÀÇ µÇ¾îÀÖ½À´Ï´Ù. ÇѸ¶µð·Î °¡¸®Å°´Â°ªÀÌ 0ÀÔ´Ï´Ù. °¡¸®Å°´Â °ªÀÌ ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. ´ëºÎºÐ ³Î·Î ÃʱâÈ­ ÇÑÈÄ ½ÇÁ¦ È®º¸µÈ ¸Þ¸ð¸® ¿µ¿ªÀ» Æ÷ÀÎÅÍ·Î °¡¸®Å°µµ·Ï ÇÕ´Ï´Ù. ±×¸®°í ´Ù½Ã ¸Þ¸ð¸®¸¦ ¹Ý³³ÇÑÈÄ NULL·Î ÃʱâÈ­ ½ÃÅ°°ï ÇÕ´Ï´Ù. ¸¸¾à Æ÷ÀÎÅÍÀÇ °ªÀÌ NULLÀ̶ó¸é ¿¹¿Ü󸮸¦ ÇØÁà¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸¸é Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò°ª°ú Æ÷ÀÎÅÍ¿¡ ÀúÀåµÈ °ªÀ» Ãâ·ÂÇØÁÝ´Ï´Ù. int *p = NULL; printf("%d %d", &p, p); °á°ú 1245052 0 ÀÌ·±½ÄÀ¸·Î ³ª¿À°Ô µË´Ï´Ù. Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò´Â ÀÖÁö¸¸ Æ÷ÀÎÅÍ°¡ °¡Áö°í ÀÖ´Â ÁÖ¼Ò´Â NULLÀÌ µÇ°ÚÁÒ ±×·¯¹Ç·Î °¡¸®Å°´Â °÷ÀÌ NULLÀÌ µË´Ï´Ù. ¸¸¾à printf("%d", *p);¸¦ ÇØÁÖ¸é ½ÇÇà½Ã ¿À·ù°¡ ¹ß»ýÇÏ°Ô µË´Ï´Ù. NULLÆ÷ÀÎÅÍ´Â °¡¸®Å°´Â °÷ÀÌ ¾ø´Âµ¥ °¡¸®Å°´Â °ªÀ» Ãâ·ÂÇ϶ó°í Ç߱⠶§¹®¿¡ Access Violation ¿¡·¯°¡ ³ª°Ô µË´Ï´Ù. Æ÷ÀÎÅ͸¦ ¿¹¿Ü󸮸¦ ÇÒ °æ¿ì¿¡´Â ´ëºÎºÐ NULL·Î üũ¸¦ ÇÕ´Ï´Ù. if(p == NULL) { return FALSE; } ÀÌ·±½ÄÀ¸·Î ÄÚµùÀ» Çϸé NULLÀÏ°æ¿ì FALSE¸¦ ¸®ÅÏ Çϵµ·Ï Çϸé Access ViolationÀ» ¸·À» ¼ö ÀÖ°ÚÁÒ? ´ÙÀ½ ¿¹Á¦¸¦ º¾½Ã´Ù. ÇÁ·Î±×·¥ Á¾·á½Ã¿¡ ¸¸¾à NULLÀ̸é ÀÌ¹Ì ¹Ý³³ÀÌ µÈ°ÍÀ¸·Î ó¸®ÇÏ¿© ±×³É Á¾·á¸¦ ½ÃÄÑÁÖ°í NULLÀÌ ¾Æ´Ï¸é °¡¸®Å°´Â ¿µ¿ªÀÌ Àֱ⠶§¹®¿¡ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÈüÀÇ ¿µ¿ªÀ» Á¦°Å ½ÃÅ°°í Á¾·áÇÏ°Ô µË´Ï´Ù. if(p == NULL) { return; } else { delete p; } ÃʱâÈ­ ÇÒ°æ¿ìµµ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. ¸¸¾à¿¡ Æ÷ÀÎÅÍ°¡ ÀÌ¹Ì Èü¿¡¼­ ÇÒ´çÇÑ ºÎºÐÀ» °¡¸®Å°°í Àִµ¥ ¶Ç ¸Þ¸ð¸® ÇÒ´çÀ» ÇÒ°æ¿ì ¸Þ¸ð¸® LeakÀÌ ¹ß»ýÇÒ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î ´ÙÀ½°ú °°Àº 󸮸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. NULLÀÏ °æ¿ì¿¡¸¸ ÇÒ´çÇÏ°ÚÁÒ? if(p == NULL) { p = new char[100]; } ÀÌ¿Í °°Àº ¹æ¹ýÀº Ŭ·¡½º ¸â¹öÀÇ Æ÷ÀÎÅͳª Àü¿ªÀ¸·Î ¼±¾ðÇÑ Æ÷ÀÎÅÍ º¯¼ö¿¡¼­ »ç¿ë ÇÕ´Ï´Ù. ÀÚ NULLÆ÷ÀÎÅÍ¿¡ ´ëÇؼ­ °£´ÜÇÏ°Ô ÀÌÇظ¸ ÇÏ½Ã¸é µË´Ï´Ù. ´ÙÀ½Àº voidÇü Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ ¹è¿ö º¾½Ã´Ù. voidÇüÀº ÇÔ¼ö¿¡¼­µµ ¸¹ÀÌ ¾²À̴µ¥ ¸®ÅÏ ÇÔ¼ö¿¡ void°¡ µé¾î°¡¸é ¾Æ¹«°ªµµ ¸®ÅÏÇÒ ¼ö ¾ø´Ù´Â ¶æÀÌ µË´Ï´Ù. ¶Ç´Â ÆĶó¹ÌÅÍ¿¡ void°¡ µé¾î°¡¸é °ªÀ» Àü´Þ ÇÒ¼ö°¡ ¾ø´Ù´Â ¶æÀÔ´Ï´Ù. ½ÇÁ¦ ¶æÀ» º¸¸é '¾Æ¹«°Íµµ ¾ø´Â' '(ÅÖ)ºó'À̶õ ¶æÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ±×·³ voidÇü Æ÷ÀÎÅÍ´Â ¹«¾ùÀ̶ó°í »ý°¢ÇϽʴϱî? voidÇü Æ÷ÀÎÅÍ´Â °¡¸®Å°´Â °ÍÀ» ¾î¶² ÇüÀ̵çÁö °¡¸®Å³ ¼ö ÀÖ½À´Ï´Ù. °á·Ð ÀûÀ¸·Î °¡¸®Å°´Â °ÍÀ» ¾Ë¼ö°¡ ¾øÀ¸´Ï ¾Æ¹«°Å³ª °¡¸®Å³¼ö ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¾½Ã´Ù. int a = 10; // a¿¡ 10À» ÀúÀå ÇÑ´Ù. void *p = (int*) &a; // aÀÇ ÁÖ¼Ò¸¦ voidÇü Æ÷ÀÎÅÍ p¿¡ ÀúÀåÇÑ´Ù. printf("%d",*(int*)p); // voidÇü Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÁÖ¼Ò aÀÇ °ª 10À» Ãâ·Â ÇÑ´Ù. ÀÚ a´Â intÇüÀÔ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é intÇü Æ÷ÀÎÅÍ·Î ¼±¾ðÇÑ °ª¿¡ ÁÖ¼Ò°¡ ÀúÀåÀÌ µÇ¾î¾ß Çϴµ¥ voidÇü Æ÷ÀÎÅÍ¿¡ ÁÖ¼Ò¸¦ ÀúÀåÇß½À´Ï´Ù. voidÇü Æ÷ÀÎÅÍ¿¡ ÁÖ¼Ò¸¦ ÀúÀåÇÏ´Â ´ë½Å¿¡ cast¿¬»êÀÚ¸¦ »ç¿ëÇؼ­ voidÇü Æ÷ÀÎÅÍ°¡ intÇüÀ» Çؼ® ÇÒ¼ö ÀÖµµ·Ï (int*) Çüº¯È¯À» ÇØÁà¾ß ÇÕ´Ï´Ù. °í·Î &aÀÇ ÁÖ¼Ò°ªÀº intÇü Æ÷ÀÎÅÍ·Î ¹Þ¾Æ¾ß ÇÑ´Ù. ¶ó°í ¾Ë·ÁÁÖ´Â °Ì´Ï´Ù. ¾Ë·ÁÁÖ´Â ¹æ¹ýÀº (int*) ÀÌ°ÍÀ» Ãß°¡½ÃÅ°¸é µÇ°ÚÁÒ. ¶æÀ» Çؼ®Çϸé intÇü Æ÷ÀÎÅÍ·Î aÀÇ ÁÖ¼Ò°ªÀ» ÀúÀå ½ÃŲ´Ù. ()´Â ¿ì¼±¼øÀ§¸¦ ÁÖ±â À§Çؼ­ ºÙ¿© ÁØ°ÍÀ̱¸¿ä. ÀÚ °ªÀ» Ãâ·Â ÇÒ¶§µµ voidÇüÀÌ °¡¸®Å°´Â °ªÀÌ ¾î¶²ÇüÀÎÁö ¶Ç ¸î¹ÙÀÌÆ®ÀÎÁö ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. ±×·¡¾ß Á¤È®ÇÏ°Ô ÄÄÆÄÀÏ·¯°¡ Çؼ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×°Ô ¹ýÄ¢À̱¸¿ä. printf("%d",p); ÀÌ·¸°Ô Çϸé aÀÇ ÁÖ¼Ò°ªÀÌ Ãâ·ÂÀÌ µÇ°ÚÁÒ? ±×·¯³ª Çüº¯È¯À» ÇØÁÖÁö ¾ÊÀ¸¸é ¹ýÄ¢¿¡ ¾î±ß³ª´Â ÇൿÀÔ´Ï´Ù. ÄÄÆÄÀÏÀÌ µÉ¼ö´Â ÀÖÀ¸³ª ³ªÁß¿¡ Ä¡¸íÀûÀÎ ¿À·ù°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ°ÚÁö¿ä.. ±×·¯¹Ç·Î printf("%d",(int*) p); ¾Õ¿¡ (int*)À» ºÙ¿©ÁÖ¸é intÇüÀ» °¡¸®Å°´Â Æ÷ÀÎÅÍÇüÀ¸·Î º¯È¯ÇÏ¿© p¿¡ ÀúÀåµÈ °ªÀ» Ãâ·Â ÇÕ´Ï´Ù. voidÇü Æ÷ÀÎÅÍ´Â int¸¦ ¹ÞÀ¸¸é intÇü Æ÷ÀÎÅÍ·Î Çüº¯È¯À» ÇØÁà¾ß ÇÕ´Ï´Ù. ¶Ç charÇüÀ̸é charÇü Æ÷ÀÎÅÍ·Î Çüº¯È¯ÀÌ µÇ¾î¾ß Çϱ¸¿ä. ¹Ýµå½Ã Çü¿¡ ¸Â°Ô Çüº¯È¯À» ÇØÁà¾ß ÇÕ´Ï´Ù. ÁÖ¼Ò°¡ °¡¸®Å°´Â ½ÇÁ¦ °ªÀ» Ãâ·ÂÇغ¾½Ã´Ù. printf("%d", (int*) p); ´Â ÁÖ¼Ò°ªÀ» Ãâ·ÂÇÏ´Â °ÍÀÌ°í ¾Õ¿¡ *¸¦ ºÙÀÌ°Ô µÇ¸é ±× ÁÖ¼Ò°¡ °¡¸®Å°´Â °ªÀ» Ãâ·Â ÇÑ´Ù°í ÇßÁö¿ä? (int*)p <-- ÀÌ°Í ÀÚü°¡ p¸¦ (int*)ÇüÀ¸·Î º¯È¯ÇÑ ÁÖ¼Ò ÀÔ´Ï´Ù. ±× ¾Õ¿¡ *¸¦ ºÙÀÌ°Ô µÇ¸é *(int*)p <-- ÀÌ°ÍÀº p¸¦ (int*)ÇüÀ¸·Î º¯È¯ÇÑ ÁÖ¼Ò °ªÀÇ µ¥ÀÌÅ͸¦ °¡¸®Å°°Ô µÇ´Â °Ì´Ï´Ù. ½ÇÁ¦·Î Áß°£¿¡ (int*)¸¸ Ãß°¡µÈ°Í »ÓÀÌÁö ´Ù¸¥°Ç ¾ø½À´Ï´Ù. ¿ø·¡ ¿¹Á¦¸¦ º¾½Ã´Ù. int a = 10; int *p = &a; printf("%d",*p); int a = 10; void *p = (int*)&a; //void°¡ aÀÇ ÁÖ¼Ò°ªÀ» ¹ÞÀ»¶§ intÇü Æ÷ÀÎÅÍ·Î ¹Þ´Â´Ù. printf("%d",*(int*)p); //pÁÖ¼Ò¸¦ °¡¸®Å°´Â voidÇüÀº intÇüÀ¸·Î º¯È¯µÇ¾î °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀ» Ãâ·ÂÇÑ´Ù. ¹Ýµå½Ã voidÇü¿¡ ÀúÀåµÇ´Â ÇüÀÇ °ªÀº ¹Ýµå½Ã ij½ºÆ® ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. Æ÷ÀÎÅÍ ³¢¸®µµ ¸¶Âù°¡Áö ÀÔ´Ï´Ù. int a = 10; int *pp = &a; void *p = (int*)pp; // ppÇü °¡¸®Å°´Â µ¥ÀÌÅÍ°ªÀÌ intÇüÀ̹ǷΠintÇü Æ÷ÀÎÅÍ·Î º¯È¯ÇÏ¿© ÁÖ¼Ò°ªÀ» ÀúÀåÇÑ´Ù. printf("%d",*(int*)p); ÀÚ (int*)ÇüÀ¸·Î º¯È¯ÇÏ¿© ppÀÇ ÁÖ¼Ò°ªÀ» ÀúÀåÇßÁö¿ä. ¸¸¾à p°¡ intÇü Æ÷ÀÎÅÍ¿´´Ù¸é (int*)°¡ ÇÊ¿ä ¾øÀÌ int *p = pp;¸¦ »ç¿ëÇß°ÚÁö¸¸ ÇöÀç p´Â voidÇü Æ÷ÀÎÅͱ⠶§¹®¿¡ (int*)ÇüÀ¸·Î Çüº¯È¯ÇÏ¿© »ç¿ëÇÑ °ÍÀº ´ç¿¬ÇÑ °ÍÀÔ´Ï´Ù. ÀÌ»óÀ¸·Î °£´ÜÇÑ NULLÆ÷ÀÎÅÍ¿Í voidÇü Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ ¾Ë¾ÆºÃ½À´Ï´Ù. -------------------------------------------------- < C/C++ ±âÃÊ Tip & Trick > 1Àå Æ÷ÀÎÅÍ ¸Àº¸±â [7] ¿À´ÃÀº ÇÔ¼ö Æ÷ÀÎÅÍ¿¡ ´ëÇؼ­ ¹è¿ö º¸°Ú½À´Ï´Ù. ÇÔ¼ö Æ÷ÀÎÅÍ´Â ¸» ±×´ë·Î ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼öÀÔ´Ï´Ù. ¿©Å²¯ ¹è¿ö¿Ô´ø Æ÷ÀÎÅÍ¿Í ¶È°°½À´Ï´Ù. ¿©Å²¯ º¯¼ö¸¸À» °¡¸®Å°´Â ¹æ¹ýÀ» ¹è¿ö¿Ô½À´Ï´Ù. ÇÏÁö¸¸ Æ÷ÀÎÅÍ º¯¼ö´Â ÇÔ¼öµµ °¡¸®Å³¼ö ÀÖ´Â °­·ÂÇÑ ±ÇÇÑÀÌ ÀÖ½À´Ï´Ù. Àú¹ø¿¡µµ ¾ê±âÇßµíÀÌ Æ÷ÀÎÅÍ º¯¼ö´Â ¸ðµÎ 4ByteÀÔ´Ï´Ù. ¿©Áö²¯ ¹è¿ö¿Â Æ÷ÀÎÅÍÀÇ ¶Ç´Ù¸¥ ±â¹ýÀ» ¹è¿ö¾ß ÇÒ°ÍÀÔ´Ï´Ù. Æ÷ÀÎÅÍ º¯¼ö¿¡ ÇÔ¼öÀÇ ½ÃÀÛ¹øÁö¸¦ ÀúÀå½ÃÅ°°í ÀúÀåµÈ ½ÃÀÛ¹øÁöÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°°Ô ÇÑÈÄ ½ÇÁ¦ ÇÔ¼ö¸¦ È£Ãâ ÇÏ°Ô ÇÏ¸é ³¡ÀÔ´Ï´Ù.. ¼±¾ð ÇÏ´Â ¹æ¹ýµµ ÇÔ¼ö¿Í ºñ½ÁÇÏ°Ô ¼±¾ðÇØÁà¾ß ÇÕ´Ï´Ù. ±×·¡¾ß ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅͶó°í ÀνÄÀ» Çϴ°ÅÁÒ.. ¿¹¸¦µé¾î ´ÙÀ½°ú °°ÀÌ Start¶ó´Â ÇÔ¼ö°¡ ÀÖ´Ù°í º¾½Ã´Ù. ÀÌ°ÍÀ» Æ÷ÀÎÅÍ º¯¼ö°¡ °¡¸®Å°µµ·Ï Çغ¼±î¿ä? void Start() { printf("¾È³çÇϼ¼¿ä"); } void (*p)(); //ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö 4ByteÂ¥¸®¸¦ ¼±¾ðÇÑ´Ù. p = Start; // StartÇÔ¼öÀÇ ¼±µÎ¹øÁöÀÇ ÁÖ¼Ò¸¦ pÆ÷ÀÎÅÍ º¯¼ö°¡ °¡¸®Å³¼ö ÀÖµµ·Ï p¿¡ ÀúÀåÇÑ´Ù. (*p)(); // p¿¡ *¸¦ ºÙÀÌ°í µÚ¿¡ ();¸¦ ºÙ¿©¼­ p°¡ °¡¸®Å°´Â ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. ÀÚ ¿©±â¼­ (*p)»©°í´Â Start¿Í ¸®ÅÏÇü°ú ÆĶó¹ÌÅÍ°¡ ¾ø´Â°ÍÀÌ ºñ½ÁÇÕ´Ï´Ù. StartÇÔ¼ö¸¦ °¡¸®Å°±â À§Çؼ­´Â °¡¸®Å°´Â ÇÔ¼ö¿Í ¶È°°ÀÌ ÆĶó¹ÌÅÍ¿Í ¸®ÅÏ°ªÀ» ¸ÂÃçÁà¾ß ÇÕ´Ï´Ù. void Start() void (*p)() ÀÚ (*p)¿Í À̸§¸¸ Ʋ¸±»Ó ºñ½ÁÇÏÁÒ? ÀÚ ¿©±â¼­ *p°¡ ºÙ¾î ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö°¡ ¼±¾ðÀÌ µÈ°ÍÀÔ´Ï´Ù. ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö¸¸ ¼±¾ðÀÌ µÈ°ÍÀÌÁö¿ä. Æ÷ÀÎÅÍ º¯¼ö¿¡ StartÇÔ¼öÀÇ ½ÃÀÛÁÖ¼Ò¸¦ ÀúÀå½ÃÄÑ º¼±î¿ä? p = Start; Start À̸§ ÀÚü´Â ÇÔ¼öÀÇ ½ÃÀÛ¹øÁö¸¦ °¡Áö°í ÀÖ´Â »ó¼öÀÔ´Ï´Ù!!!!! ±×·¯¹Ç·Î StartÀÇ ½ÃÀÛ¹øÁö¸¦ p¿¡ ÀúÀåÇÏ´Â °ÍÀÔ´Ï´Ù. p°¡ °¡¸®Å°´Â ÇÔ¼ö¸¦ È£Ãâ Çغ¼±î¿ä? ¾Õ¿¡ *¸¦ ºÙ¿©ÁÖ¸é ÀÚ½ÅÀÌ °¡¸®Å°´Â ÁÖ¼Ò¸¦ ã¾Æ°¡ÁÒ. ±×¸®°í µÚ¿¡ ();¸¦ ºÙ¿© ÇÔ¼ö¸¦ ã¾Æ°¡¶ó°í ÀνÄÀ» ½ÃÄÑÁà¾ß ÇÕ´Ï´Ù. (*p)();¸¦ È£ÃâÇÏ¸é °á±¹ Start();·Î È£ÃâÇÏ´Â°Å¿Í ¶È°°Àº °á°ú°¡ ³ªÅ¸³³´Ï´Ù. °á±¹ p°¡ °¡¸®Å°´Â ÇÔ¼öÀÇ ½ÃÀÛ¹øÁö¸¦ ã¾Æ°¡ Start()¸¦ È£ÃâÇϴ°ÅÁÒ. ÀÚ ´Ù¸¥ ¿¹Á¦¸¦ º¾½Ã´Ù. ¸®ÅÏ°ª°ú ÆĶó¹ÌÅÍ¿¡ °ªÀ» Àü´ÞÇÏ´Â °ÍÀÔ´Ï´Ù. int Sum(int a, int b) { printf("ÇÕÀº [%d] ÀÔ´Ï´Ù",a+b); return a+b; } void main() { int (*p)(int a, int b); //ÇÔ¼ö¸¦ °¡¸®Å³ ¼ö ÀÖµµ·Ï Æ÷ÀÎÅÍ º¯¼ö ¼±¾ð( ÇÔ¼ö¿Í ºñ½ÁÇÏ°Ô ) p = Sum; //SumÇÔ¼öÀÇ ¼±µÎ¹øÁö¸¦ pÆ÷ÀÎÅÍ¿¡ ÀúÀå int Value = (*p)(10,10); // pÆ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÇÔ¼ö¸¦ È£Ãâ ¸®ÅÏ°ªÀ» Value¿¡ ÀúÀå printf("\r\n¸®ÅÏ°ª:%d", Value); } <°á°ú> ÇÕÀº [20] ÀÔ´Ï´Ù ¸®ÅÏ°ª:20 ´Ù¶È°°ÁÒ ´ÜÁö (*p)À̰͸¸ ÇØÁáÀ» »ÓÀÌÁÒ. int Sum(int a, int b)¸¦ °¡¸®Å°·Á¸é ¹Ýµå½Ã int (*p)(int a, int b); <-- ÀÌ·¸°Ô ¶È°°Àº ÇüÅ·Πº¯¼ö¸¦ ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù. (*p)À̸§À» º¯¼öó·³ ÀÚÀ¯·Ó°Ô »ç¿ëÇÒ¼ö ÀÖÁÒ.. Æ÷ÀÎÅÍ º¯¼ö¶ó°í ¿ì¼±¼øÀ§¸¦ ÁÖ±â À§Çؼ­ °ýÈ£¸¦ ³Ö¾î ÁØ°ÍÀ̱¸¿ä. ¾Æ¹«Æ° ¾à°£ ÀÌ»óÇØ º¸ÀÏÁöµµ ¸ð¸£°ÚÁö¸¸ ÀÌ·¸°Ô »ç¿ëÇÑ´Ù°í ÀÌÇظ¦ ÇØµÎ¼Å¾ß ÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î ¾Ë¾Æ¾ß ÇÒ°ÍÀº ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ º¯¼ö´Â ÆĶó¹ÌÅÍ·Î ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. ´ç¿¬È÷ º¯¼ö´Ï±ñ ÆĶó¹ÌÅÍ·Î ¹Þ°ÚÁÒ. ´ÙÀ½ ¿¹Á¦¸¦ º¾½Ã´Ù. void Hello() { printf("Hello"); } void Okay(void (*p)()) //ÆĶó¹ÌÅ͸¦ ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ·Î ÆĶó¹ÌÅ͸¦ ¹Þ¾Ò½À´Ï´Ù. { (*p)(); //ÆĶó¹ÌÅÍ·Î ³Ñ°Ü¹ÞÀº ¼±µÎ¹øÁö¸¦ ã¾Æ°¡ HelloÇÔ¼ö¸¦ ½ÇÇàÇÕ´Ï´Ù. } void main() { Okay(Hello); // HelloÇÔ¼öÀÇ ¼±µÎ¹øÁö¸¦ ÆĶó¹ÌÅÍ·Î ³Ñ°ÜÁØ´Ù. } ÀÌ·±½ÄÀ¸·Î ¾ÆÁÖ °£´ÜÇÏ°Ô ³Ñ±æ ¼ö°¡ ÀÖ½À´Ï´Ù. OkayÆĶó¹ÌÅÍ¿¡ void (*p)()¸¦ ±×´ë·Î ³Ö¾î Áá½À´Ï´Ù. ¿Ö³Ä ÇÔ¼ö¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ´Â º¯¼öÀÌ°í ÇÔ¼ö¸¦ °¡¸®Å°±â À§Çؼ­´Â Æ÷ÀÎÅÍ º¯¼ö¸¦ ÇÔ¼öó·³ (*p)¸¸ »©°í ¶È°°ÀÌ ¼±¾ðÇØÁà¾ß ÇÑ´Ù°í ¹è¿ü½À´Ï´Ù. ¾Æ¹«Æ° ¸®ÅÏ°ª°ú ÆĶó¹ÌÅÍ´Â Ç×»ó ¶È°°ÀÌ ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù °áÄÚ ÀØÁö ¸¶¼¼¿ä! ÀÌ»ó ÇÔ¼ö Æ÷ÀÎÅ͸¦ ¸¶Ä¡°Ú½À´Ï´Ù.