` ¥¸. ±¸Á¶ µ¥ÀÌÅÍ À¯Çü < ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀÇ ¼±¾ð°ú »ç¿ë > C¿¡¼­ÀÇ ±¸Á¶ µ¥ÀÌÅͶõ ¿©·¯ °³ÀÇ ¼­·Î ´Ù¸¥ µ¥ÀÌÅ͸¦ ¸ð¾Æ Çϳª·Î ¹­¾î ³õÀº °ÍÀ» ÀǹÌÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº ¼ºÀûó¸® ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í °¡Á¤Çϸé. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ char name[30]; /* »ç¶÷À̸§ */ ¦¢ ¦¢ int kor; /* ±¹¾î ¼ºÀû */ ¦¢ ¦¢ int eng; /* ¿µ¾î ¼ºÀû */ ¦¢ ¦¢ int math; /* ¼öÇÐ ¼ºÀû */ ¦¢ ¦¢ int total; /* ÃÑÁ¡ */ ¦¢ ¦¢ float ave; /* Æò±Õ */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿Í °°ÀÌ ÇÑ »ç¶÷¿¡ ÇÊ¿äÇÑ º¯¼öµéÀ» Á¤ÇÏ°í, À̹ø¿¡´Â ÀÌ º¯¼öµéÀ» ÇϳªÀÇ ±¸Á¶Ã¼·Î ¹­À¸¸é ´ÙÀ½°ú °°´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +---------------------- ±¸Á¶Ã¼ Åà (structure tag) ¦¢ ¦¢ struct man { (±¸Á¶Ã¼ ÅÃÀº ´Ù¸¥ º¯¼öµéÀÇ À̸§°ú °°¾Æ¼­´Â ¾ÈµÈ´Ù) ¦¢ ¦¢ char name[30]; --+ ¦¢ ¦¢ int kor; | ¦¢ ¦¢ int eng; +-- ±¸¼º¿ä¼Ò ¦¢ ¦¢ int math; | (±¸¼º ¿ä¼ÒµéÀÇ Á¤ÀÇ´Â ÀÏ¹Ý º¯¼ö¿Í °°À¸³ª ¦¢ ¦¢ int total; | ÃʱⰪÀº ÁÙ ¼ö ¾ø´Ù) ¦¢ ¦¢ float ave; --+ ¦¢ ¦¢ } person; ------------- ÇÁ·Î±×·¥»ó¿¡¼­ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§ ¾²´Â º¯¼ö À̸§ ¦¢ ¦¢ personÀ̶ó´Â ±¸Á¶Ã¼¸¦ Á¤ÀÇ ÇÏ¿´´Ù. ¦¢ ¦¢ (±¸Á¶Ã¼ Åðú º¯¼ö À̸§ÀÌ °°¾Æ¼­´Â ¾ÈµÈ´Ù) ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¸ðµç ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀº ¹Ýµå½Ã struct·Î ½ÃÀÛÇÏ°Ô µÈ´Ù. ±× ´ÙÀ½¿¡ ÀÌ ±¸Á¶ÀÇ ½ÇÁ¦ À̸§(À§ ¿¹ ¿¡¼­´Â man)ÀÌ ¿À°Ô µÇ´Âµ¥, ÀÌ´Â ÁöÁ¤ÇÒ ¼öµµ ÀÖ°í ÁöÁ¤ÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù(ÀϹÝÀûÀ¸·Î ÁöÁ¤ÇÑ ´Ù). ±× ´ÙÀ½ÀÇ Áß°ýÈ£´Â ½ÇÁ¦ ±¸Á¶ÀÇ ³»¿ëÀ» ´ã°í ÀÖÀ¸¸ç ±× ¾È¿¡ ±× ±¸Á¶¿¡ ¼ÓÇÏ´Â µ¥ÀÌÅ͵éÀ» Â÷·Ê´ë·Î Á¤ÀÇÇØÁÖ¸é µÈ´Ù. ±×¸®°í ±× µÚÀÇ º¯¼ö(À§ ¿¹¿¡¼­´Â person)´Â ÀÌ¿Í °°Àº ±¸Á¶¸¦ °ªÀ¸·Î °®´Â, Áï struct À¯ÇüÀÇ º¯¼ö¸¦ Á¤ÀÇÇÑ °ÍÀÌ´Ù. ´ÙÀ½ÀÇ ¿¹´Â ±¸Á¶Ã¼ ÅÃÀ» »ý·«ÇÑ °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +------------------------ ±¸Á¶Ã¼ Åà (structure tag)À» »ý·« ¦¢ ¦¢ struct { ¦¢ ¦¢ char name[30]; --+ ¦¢ ¦¢ int kor; +-- ±¸¼º¿ä¼Ò ¦¢ ¦¢ int eng; | (±¸¼º¿ä¼Ò´Â ±× ±¸Á¶ ³»¿¡¼­¸¸ ±¸º°ÇÒ ¼ö ÀÖ´Â À̸§ÀÌ¸é ¦¢ ¦¢ int math; | µÇ±â ¶§¹®¿¡, ±¸¼º ¿ä¼ÒÀÇ À̸§ÀÌ °°Àº ´Ù¸¥ ±¸Á¶µµ ¼± ¦¢ ¦¢ int total; | ¾ðÇÒ ¼ö ÀÖ´Ù) ¦¢ ¦¢ float ave; --+ ¦¢ ¦¢ } person; ------------- ÇÁ·Î±×·¥»ó¿¡¼­ º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§ ¾²´Â º¯¼ö À̸§ ¦¢ ¦¢ personÀ̶ó´Â ±¸Á¶Ã¼¸¦ Á¤ÀÇ ÇÏ¿´´Ù. ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§ ¿¹¿¡¼­´Â ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀ» ¼±¾ðÇØ ³õ°í ÀÌÀÇ À̸§(±¸Á¶Ã¼ ÅÃ)À» ÁÖÁö ¾Ê¾Ò´Ù. ´ÜÁö ÀÌ·± ±¸Á¶¸¦ °¡Áø º¯¼ö·Î person¸¸ Á¤ÀÇÇßÀ» »ÓÀÌ´Ù. ÀÌ·¸°Ô Çصµ »ó°üÀº ¾øÀ¸³ª Â÷ÈÄ¿¡ person°ú °° Àº ±¸Á¶¸¦ °®´Â º¯¼ö¸¦ ¶Ç Á¤ÀÇÇÏ·Á¸é À§¿Í °°ÀÌ ±¸Á¶ Àüü¸¦ ´Ù½Ã ¼±¾ðÇؾ߸¸ ÇÑ´Ù. À̹ø¿¡´Â ±¸Á¶Ã¼ ÅÃÀÌ ²À ÇÊ¿äÇÑ °æ¿ìÀÇ ¿¹¸¦ µç °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +---------------------- ±¸Á¶Ã¼ Åà (structure tag) ¦¢ ¦¢ struct man { ¦¢ ¦¢ char name[30]; --+ ¦¢ ¦¢ int kor; | ¦¢ ¦¢ int eng; +-- ±¸¼º¿ä¼Ò ¦¢ ¦¢ int math; | ¦¢ ¦¢ int total; | ¦¢ ¦¢ float ave; --+ ¦¢ ¦¢ }; /* ; À» »ý·«Çؼ­´Â ¾ÈµÈ´Ù */ ¦¢ ¦¢ ¦¢ ¦¢ struct man person; ¦¢ ¦¢ | +---------------- º¯¼ö À̸§ ¦¢ ¦¢ +---------------------- ±¸Á¶Ã¼ Åà ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ÀÌ ¹æ¹ýÀº ¸ÕÀú ±¸Á¶Ã¼ÀÇ ÇüÀ» ¼±¾ðÇØ ³õ°í ¾Æ·¡¿¡¼­ ÁøÂ¥ ¸Þ¸ð¸®¿¡ ¸¸µé¾îÁö´Â º¯¼ö¸¦ Á¤ÀÇÇÏ °í ÀÖ´Ù. À̶§ ±¸Á¶Ã¼ ÅÃÀ» »ç¿ëÇÏ°í Àִµ¥, ÀÌó·³ ±¸Á¶Ã¼ ÅÃÀº ±¸Á¶Ã¼¸¦ ¼±¾ðÇÏ´Â ¹æ¹ý¿¡ µû¶ó »ý·«ÇÒ ¼öµµ ÀÖ°í »ý·«ÇÒ ¼ö ¾øÀ» ¼öµµ ÀÖ´Ù. ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀ» Á¤ÀÇÇØ ³õÀº ÈÄ¿¡ À̸¦ °ªÀ¸·Î °®´Â º¯¼ö¸¦ º°µµ·Î Á¤ÀÇÇÒ ¼ö Àִµ¥, ÀÌ °æ¿ì ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct student s[100], *ps; /* ¹è¿­À̳ª Æ÷ÀÎÅ͵µ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù */ ¦¢ ¦¢ struct complex v1, v2; ¦¢ ¦¢ struct booktype book[30]; ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±×·¯³ª ±¸Á¶Ã¼ ÅÃÀÌ »ý·«µÇ¾î ÀÖÀ¸¸é À§¿Í °°ÀÌ º¯¼ö¸¦ Á¤ÀÇÇÒ ¼ö ¾ø´Ù. ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀ» Á¤ÀÇÇÑ °æ¿ì ±× Á¤ÀÇ°¡ ÇÔ¼ö³ª ºí·° ¾È¿¡ ÀÖ´Â °æ¿ì¿¡´Â ÀÚ½ÅÀÌ Á¤ÀÇµÈ ÇÔ ¼ö³ª ºí·° ³»¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÇÔ¼ö ¹Ù±ùÂÊ¿¡ Á¤ÀÇµÈ °æ¿ì¿¡´Â Á¤ÀÇµÈ À§Ä¡ºÎÅÍ ±× È­ÀÏ ÀÇ ³¡±îÁö ±× À̸§À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î °¢ ±¸Á¶µéÀº ´ÙÀ½°ú °°Àº ¹üÀ§ ³»¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct s1 { ---------------------------------------+ ¦¢ ¦¢ int i, j; | ¦¢ ¦¢ }; | ¦¢ ¦¢ main() { | ¦¢ ¦¢ struct s2 { --------+ | ¦¢ ¦¢ int k, l; | | ¦¢ ¦¢ }; | s2¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹üÀ§ | ¦¢ ¦¢ : | | s1À» »ç¿ëÇÒ ¼ö ÀÖ´Â ¹üÀ§ ¦¢ ¦¢ } ------------------+ | ¦¢ ¦¢ struct s3 { ----------+ | ¦¢ ¦¢ int m, n; | | ¦¢ ¦¢ }; | s3À» »ç¿ëÇÒ ¼ö ÀÖ´Â ¹üÀ§ | ¦¢ ¦¢ f1() { | | ¦¢ ¦¢ : | | ¦¢ ¦¢ } ------------------+----------------------------+ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ main¿¡¼­ s3Àº »ç¿ëÇÒ ¼ö ¾øÀ¸¸ç ¸¶Âù°¡Áö·Î f1¿¡¼­´Â s2¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù. ÀÌ°ÍÀº º¯¼ö°¡ ¾Æ ´Ï±â ¶§¹®¿¡ º¯¼ö¿Í °°ÀÌ extern Çؼ­ »ç¿ëÇÒ ¼öµµ ¾ø´Ù. ÀϹÝÀûÀ¸·Î ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀº ¸ðµç ÇÁ ·Î±×·¥¿¡¼­ °øÅëÀûÀ¸·Î »ç¿ëÇϱ⠶§¹®¿¡ s1°ú °°ÀÌ È­ÀÏÀÇ ¸Ç óÀ½¿¡ ¼±¾ðÇØ µÎ´Â °ÍÀÌ ÁÁ´Ù. ±¸Á¶¸¦ Á¤ÀÇÇÏ¿´À¸¸é À̸¦ ÀÌ¿ëÇØ¾ß Çϴµ¥, ¿©±â¿¡´Â µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. Áï, ±¸Á¶ Àüü¸¦ »ç ¿ëÇÏ´Â ¹æ¹ý°ú ±¸Á¶ ³»ÀÇ °¢ ±¸¼º¿ä¼Ò¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. ¿ì¼± °¢ ±¸Á¶ÀÇ ±¸¼º¿ä¼Ò¸¦ »ç¿ë ÇÏ°íÀÚ ÇÒ ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ±¸Á¶ º¯¼ö À̸§.±¸¼º ¿ä¼Ò À̸§ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Áï º¯¼ö À̸§ ´ÙÀ½¿¡ '.'À» ºÙÀÌ°í ±× ´ÙÀ½ ¿øÇÏ´Â ±¸¼º¿ä¼ÒÀÇ À̸§À» »ç¿ëÇÏ¸é µÇ´Âµ¥, ±¸¼º¿ä ¼ÒÀÇ À̸§Àº ±¸Á¶ ³»¿¡ Á¤ÀǵǾî ÀÖ´Â À̸§À̾î¾ß ÇÑ´Ù. ±×·¯¸é ÀÌ°ÍÀ» ´Ù¸¥ º¯¼ö¿Í °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, ÀÌÀÇ µ¥ÀÌÅÍ À¯ÇüÀº ¹Ù·Î ±¸¼º¿ä¼ÒÀÇ µ¥ÀÌÅÍ À¯ÇüÀÌ µÈ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ »ç ¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct multi { ¦¢ ¦¢ int idata; ¦¢ ¦¢ float fdata; ¦¢ ¦¢ char *cp; ¦¢ ¦¢ }; ¦¢ ¦¢ struct multi m; /* mÀº idata¿Í fdata, cp¸¦ ±¸¼º¿ä¼Ò·Î °®°Ô µÈ´Ù */ ¦¢ ¦¢ float f = 1.2f; ¦¢ ¦¢ m.idata = 10; ¦¢ ¦¢ m.fdata = f * 12.5f; ¦¢ ¦¢ m.cp = "string"; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿¡¼­ '.'Àº ÀÏÁ¾ÀÇ ¿¬»êÀÚ·Î °£ÁֵǸç, °è»ê °á°ú´Â ÇØ´ç ±¸¼º¿ä¼Ò°¡ µÈ´Ù. ÀÌÀÇ ¿ì¼± ¼øÀ§´Â °¡Àå ³ô±â ¶§¹®¿¡ ++m.idataÀÇ °æ¿ì¿¡ ++(m.idata)·Î 󸮵ȴÙ. ¶Ç ´ÙÀ½°ú °°ÀÌ ¿©·¯ °³¸¦ °°ÀÌ »ç¿ëÇÒ ¼öµµ Àִµ¥. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ s1.s2.s3.data ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À̶§ °áÇÕ ¹æÇâÀÌ ¿ÞÂÊ¿¡¼­ ¿À¸¥ÂÊÀ̹ǷΠ((s1.s2).s3).data·Î 󸮵ȴÙ. ÀÌ¿Í °°ÀÌ ¿©·¯ °³¸¦ »ç ¿ëÇÏ·Á¸é ±¸Á¶ ¾È¿¡ ¶Ç ±¸Á¶°¡ ÀÖ´Â ÇüÅ·ΠÁ¤ÀǵǾî¾ß Çϴµ¥, ÀÌ·¯ÇÑ ±¸Á¶¸¦ ÁßøµÈ ±¸Á¶¶ó°í ÇÑ´Ù. ¹Ý¸é¿¡ ±¸Á¶ Àüü¸¦ »ç¿ëÇÒ ¼öµµ Àִµ¥, ÀÌ °æ¿ì¿¡´Â ±× ±¸Á¶¸¦ °ªÀ¸·Î °®´Â º¯¼öÀÇ À̸§ ¸¸ »ç¿ëÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î ¾ÕÀÇ ÇÁ·Î±×·¥¾È¿¡ ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct multi m2; ¦¢ ¦¢ m2 = m; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿¡¼­´Â multi À¯ÇüÀÇ ±¸Á¶ º¯¼ö m2¿¡ ¹Ù·Î °°Àº µ¥ÀÌÅÍ À¯ÇüÀÇ º¯¼ö mÀÇ °ªÀ» ÇÒ´çÇÏ¿´´Ù. ÀÌ¿Í °°ÀÌ ÇÏ¸é °¢ ±¸¼º¿ä¼ÒÀÇ °ªµéÀÌ ´ÙÀ½°ú °°ÀÌ Â÷·Ê´ë·Î ÇÒ´çµÇ´Â °Í°ú °°´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct multi m2; ¦¢ ¦¢ m2.idata = m.idata; ¦¢ ¦¢ m2.fdata = m.fdata; ¦¢ ¦¢ m2.cp = m.cp; ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±¸Á¶ ³»¿¡ ±¸¼º¿ä¼Ò°¡ ¸¹À» °æ¿ì¿¡´Â °¢ ±¸¼º¿ä¼Ò¸¦ Çϳª¾¿ ÇÒ´çÇÏ´Â °Í º¸´Ù´Â ¾ÕÀÇ ¹æ¹ý°ú °° ÀÌ º¯¼ö À̸§À» »ç¿ëÇÏ¿© ÇÒ´çÇÏ´Â °ÍÀÌ ÈξÀ ´õ È¿À²ÀûÀÌ´Ù. ¡Ø ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀÇ ¸Þ¸ð¸® ÇÒ´ç struct À¯Çüµµ º¯¼öÀ̹ǷΠ¸Þ¸ð¸®¸¦ Â÷ÁöÇÏ°Ô µÈ´Ù. À̶§ ½ÇÁ¦·Î ¸Þ¸ð¸®¸¦ Â÷ÁöÇÏ´Â °ÍÀº °¢ ±¸ ¼º¿ä¼ÒµéÀ̸ç, ÀÌ´Â ´ÙÀ½°ú °°´Ù. struct man { char c; int k; float e; double m; }; void main(void) { struct man a; printf(" Address of a = %u, Sizeof(a) = %d\n",&a,sizeof(a)); printf("Address of a.c = %u, Sizeof(a.c) = %d\n",&a.c,sizeof(a.c)); printf("Address of a.k = %u, Sizeof(a.k) = %d\n",&a.k,sizeof(a.k)); printf("Address of a.e = %u, Sizeof(a.e) = %d\n",&a.e,sizeof(a.e)); printf("Address of a.m = %u, Sizeof(a.m) = %d\n",&a.m,sizeof(a.m)); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- (TC) Address of a = 65476, Sizeof(a) = 15 Address of a.c = 65476, Sizeof(a.c) = 1 Address of a.k = 65477, Sizeof(a.k) = 2 Address of a.e = 65479, Sizeof(a.e) = 4 Address of a.m = 65483, Sizeof(a.m) = 8 (MSC) Address of a = 3562, Sizeof(a) = 16 Address of a.c = 3562, Sizeof(a.c) = 1 Address of a.k = 3564, Sizeof(a.k) = 2 Address of a.e = 3566, Sizeof(a.e) = 4 Address of a.m = 3570, Sizeof(a.m) = 8 À§ÀÇ °á°ú¸¦ º¸¸é MSCÀÇ °æ¿ì a.c´ÙÀ½ÀÇ 1¹ÙÀÌÆ®°¡ »ç¿ëµÇÁö ¾Ê°í ºñ¾îÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. ÀÌ°Í Àº Çϵå¿þ¾î ±¸Á¶»ó º¯¼ö°¡ ƯÁ¤ ¸Þ¸ð¸® À§Ä¡¿¡ ¿À´Â °ÍÀÌ ´õ È¿À²ÀûÀ̱⠶§¹®ÀÌ´Ù. ¶Ç ÇÑ°¡Áö ¾Ë ¼ö ÀÖ´Â °ÍÀº ±¸¼º¿ä¼ÒÀÇ ³»¿ëÀÌ °°´ÙÇÏ´õ¶óµµ ±× ¼ø¼­°¡ ´Ù¸£¸é ¿ÏÀüÈ÷ ´Ù¸¥ ±¸Á¶°¡ µÈ´Ù´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½(MSC)ÀÇ °æ¿ì. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct { /* s1Àº 8¹ÙÀÌÆ® */ struct { /* s2´Â 6¹ÙÀÌÆ® */ ¦¢ ¦¢ char c; int i; ¦¢ ¦¢ int i; char c; ¦¢ ¦¢ char c2; char c2; ¦¢ ¦¢ int i2; int i2; ¦¢ ¦¢ } s1; } s2; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ s1°ú s2´Â int À¯Çü°ú char À¯ÇüÀÇ ±¸¼º¿ä¼Ò¸¦ µÎ°³¾¿ °®°í ÀÖÁö¸¸ À̵éÀÇ ¼ø¼­°¡ ´Ù¸£±â ¶§¹® ¿¡ ¼­·Î ´Ù¸¥ ±¸Á¶°¡ µÈ´Ù. µû¶ó¼­ ±¸¼º¿ä¼ÒÀÇ ¼ø¼­°¡ ¸Å¿ì Áß¿äÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀÇ º¯¼ö¿¡µµ ÃʱⰪÀ» ÁÙ ¼ö ÀÖ´Ù. À̶§ ¹è¿­ÀÇ °æ¿ì¿Í °°ÀÌ ±× º¯¼öÀÇ ¸Þ¸ð¸® À¯ÇüÀÌ auto¿©¼­´Â ¾ÈµÈ´Ù(MSC¿Í TC´Â autoÀÇ °æ¿ìµµ ÃʱⰪÀ» ÁÙ ¼ö ÀÖµµ·Ï Çã¿ëÇÏ°í ÀÖ´Ù). ´ÙÀ½Àº ÀÌÀÇ ÇÑ ¿¹ÀÌ´Ù. struct info { char name[20]; /* ±¸¼º¿ä¼ÒÁß¿¡ ¹è¿­ÀÌ ÀÖ´Â °æ¿ì ¹è¿­ÀÇ Å©±â´Â */ char addr[40]; /* »ý·«ÇÒ ¼ö ¾ø´Ù */ char tel[10]; }; struct p { int x, y; } point = {320, 240}; void main(void) { struct info data = { "Lee S.W", "Seoul Korea", "900-2525" }; printf(" x : %d y : %d\n",point.x,point.y); printf("Name : %s\n",data.name); printf("Address: %s\n",data.addr); printf("Tel. : %s\n",data.tel); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- x : 320 y : 240 Name : Lee S.W Address: Seoul Korea Tel. : 900-2525 ÃʱⰪÀÇ ¼ø¼­¿Í ±¸¼º ¿ä¼ÒÀÇ ¼ø¼­, ±×¸®°í ÃʱⰪÀÇ µ¥ÀÌÅÍ À¯Çü°ú ±¸¼º¿ä¼ÒÀÇ µ¥ÀÌÅÍ À¯ÇüÀº ÀÏÄ¡ÇÏ¿©¾ß ÇÑ´Ù. ¹è¿­ÀÇ °æ¿ì¿Í °°ÀÌ ÃʱⰪÀÌ ¸ðÀÚ¶ö ¼öµµ Àִµ¥ ÀÌ °æ¿ì ÃʱⰪÀÌ ¾ø´Â °Íµé Àº 0À¸·Î ÃʱâÈ­ µÈ´Ù. ¹Ý¸é¿¡ ³ÑÄ¡°Ô µÇ¸é ÄÄÆÄÀÏ·¯¿¡ µû¶ó ¿¡·¯·Î ó¸®ÇÒ ¼öµµ ÀÖ°í °æ°í ¸Þ½Ã Áö¸¸ ³»º¸³»°í ³²´Â °ÍÀº ¹«½ÃÇÒ ¼öµµ ÀÖ´Ù. ¶Ç ±¸Á¶ÀÇ ¹è¿­µµ Á¤ÀÇÇÒ ¼ö Àִµ¥, ÀÌ°æ¿ì °¢ ±¸¼º ¿ä¼Ò¿¡ ´ëÇÑ ÃʱⰪÀ» ±¸Á¶¿¡ ´ëÇÑ ÃʱⰪÀ¸·Î ÁÖ¸é µÈ´Ù. ´ÙÀ½Àº ÀÌÀÇ ÇÑ ¿¹ÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct mon { ¦¢ ¦¢ char *name; ¦¢ ¦¢ char days; ¦¢ ¦¢ }; ¦¢ ¦¢ struct mon m[] = { {"Jan",31},{"Feb",28},{"Mar",31},{"Apr",30},{"May",31},{"Jun",30}, ¦¢ ¦¢ {"Jul",31},{"Aug",31},{"Sep",30},{"Oct",31},{"Nov",30},{"Dec",31} }; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¸¦ º¸¸é 2Â÷¿ø ¹è¿­¿¡ ÃʱⰪÀ» ÁÙ ¶§¿Í ºñ½ÁÇÏ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ±×·¡¼­ 2Â÷¿ø ¹è¿­ÀÇ °æ¿ì¿Í °°ÀÌ ¾Æ¿¹ Çϳª·Î Á־ µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct mon m[] = { "Jan",31,"Feb",28,"Mar",31,"Apr",30,"May",31,"Jun",30, ¦¢ ¦¢ "Jul",31,"Aug",31,"Sep",30,"Oct",31,"Nov",30,"Dec",31 }; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±¸Á¶ µ¥ÀÌÅÍ À¯Çüµµ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÎÀÚ·Î Àü´ÞÇÒ ¼ö ÀÖ´Ù. À̶§ °¢ ±¸¼º¿ä¼ÒÀÇ °ªÀ» µû·Î Àü´ÞÇÒ ¼öµµ ÀÖÁö¸¸ ±¸Á¶ Àüü¸¦ Åëä·Î Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. struct da { int x; int y; }; void main(void) { struct da val = { 10, 30 }; int sum = 0; sum = total(val); printf(" Sum = %d\n",sum); } int total(struct da tot) { /* ÇÔ¼ö°¡ ½ÇÇàµÉ ¶§ ÇÔ¼ö¾È¿¡ ÀÖ´Â º¯¼öµé°ú ¸Å°³º¯¼ö */ return (tot.x + tot.y); /* µéÀº ÇÔ¼ö°¡ ½ÇÇàµÉ ¶§ ¸¶´Ù ¸Þ¸ð¸®¿¡ ¸¸µé¾îÁø´Ù */ } À§ ÇÁ·Î±×·¥À» º¸¸é da¶õ ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀÇ º¯¼ö·Î ¼±¾ðµÈ val ÀÚü¸¦ ÀÎÀÚ·Î total¿¡ ³Ñ°ÜÁÖ °í ÀÖ´Ù. ¹Ý¸é¿¡ À̸¦ ´ÙÀ½°ú °°ÀÌ ±¸¼º¿ä¼Ò·Î ³ª´©¾î ±¸¼º¿ä¼Òº°·Î Àü´ÞÇÒ ¼öµµ ÀÖ´Ù. struct da { int x; int y; }; void main(void) { struct da val = { 10, 30 }; int sum = 0; sum = total(val.x,val.y); printf(" Sum = %d\n",sum); } int total(int i, int j) { struct da tot; tot.x = i; tot.y = j; return (tot.x + tot.y); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- Sum = 40 À§ ÇÁ·Î±×·¥ÀÇ °æ¿ì ¾ÕÀÇ ÇÁ·Î±×·¥°ú °á±¹ °°Àº °á°ú¸¦ ³ºÁö¸¸ ´õ ºñÈ¿À²ÀûÀÎ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. ¶Ç ¹è¿­ÀÇ °æ¿ì ¹è¿­ ÀÚü¸¦ °è»ê °á°ú·Î »êÃâÇÏ´Â ÇÔ¼ö´Â ÀÖÀ» ¼ö ¾øÁö¸¸, ±¸Á¶ÀÇ °æ¿ì¿¡´Â ÀÌ ¸¦ Åëä·Î °è»ê °á°ú·Î »êÃâÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. À̶§ ±× ÇÔ¼öÀÇ µ¥ÀÌÅÍ À¯ÇüÀ» ±¸Á¶ µ¥ ÀÌÅÍ À¯ÇüÀ¸·Î ¼±¾ðÇØ ÁÖ¸é µÇ´Âµ¥, ´ÙÀ½Àº ÀÌÀÇ ÇÑ ¿¹ÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct all { ¦¢ ¦¢ int i; ¦¢ ¦¢ float f; ¦¢ ¦¢ float res; ¦¢ ¦¢ }; ¦¢ ¦¢ : ¦¢ ¦¢ struct all a; ¦¢ ¦¢ : ¦¢ ¦¢ a = sfunc(); ¦¢ ¦¢ ¦¢ ¦¢ struct all sfunc() { ¦¢ ¦¢ static struct all b = {10, 1.3f}; ¦¢ ¦¢ b.res = b.i * b.f - 12.5; ¦¢ ¦¢ return (b); ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿¡¼­ sfunc´Â allÀ̶õ ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀÇ °ªÀ» °è»ê °á°ú·Î »êÃâÇÏ´Â ÇÔ¼ö·Î Á¤ÀǵǾúÀ¸¸ç ½Ç Á¦·Î ÀÌ ÇÔ¼ö°¡ »êÃâÇÏ´Â °ªÀº °°Àº ±¸Á¶ À¯ÇüÀÇ º¯¼öÀÎ a¿¡ ÇÒ´çÇÏ°í ÀÖ´Ù. µû¶ó¼­ À§ÀÇ ÇÁ·Î±× ·¥À» ¼öÇàÇÏ°Ô µÇ¸é a.i´Â 10À», a.f´Â 1.3À», ±×¸®°í a.res´Â 0.5¸¦ °ªÀ¸·Î °®°Ô µÈ´Ù. ´ÙÀ½Àº ¾Æ·¡¿Í °°Àº µ¥ÀÌ°¡ ÀÖ´Ù°í ÇÒ ¶§, N¸íÀÇ Çлý¿¡ °üÇØ Àо °¢ ÇлýÀÇ Æò±Õ ¼ºÀûÀ» ±¸ ÇÑ ÈÄ Æò±Õ ¼ºÀûÀÌ ³ôÀº Çлý¿¡¼­ ³·Àº ÇлýÀÇ ¼øÀ¸·Î À̸§°ú ¹øÈ£, Æò±Õ Á¡¼ö¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î ±×·¥ÀÌ´Ù. ´Ü, NÀº ¸Ç óÀ½ ÀоîµéÀ̵µ·Ï Çϸç ÇлýÀÇ ¼ö´Â 100¸íÀ» ³ÑÁö ¾Ê´Â´Ù°í °¡Á¤ÇÏ°í ÇÐ »ýÀÇ ¹øÈ£´Â 92XXXXÀÌ¸ç ½ÃÇè Á¡¼ö´Â 0¿¡¼­ 100Á¡ »çÀÌÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ (data) ¦¢ ¦¢ 4 ¦¢ ¦¢ Lee Seung Wook ¦¢ ¦¢ 923682 85 78 92 90 77 ¦¢ ¦¢ Kwon Oh Jin ¦¢ ¦¢ 923326 95 67 82 50 100 ¦¢ ¦¢ Kwon Oh Chang ¦¢ ¦¢ 922525 88 85 30 65 50 ¦¢ ¦¢ Oh Jung Pyo ¦¢ ¦¢ 925252 80 70 60 50 100 ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ #include struct student { /* Çлý¿¡ °üÇÑ ±¸Á¶ */ char name[30]; /* À̸§ */ long int no; /* Çйø */ float avg; /* Æò±Õ°ª */ } s[100]; main() { int n; /* ÇлýÀÇ ¼ö */ int i, j; struct student t; void read_name(char *); scanf("%d",&n); if (n > 100) { /* ÇлýÀÌ 100¸í ÀÌ»óÀ̸é */ printf("Error: too many records(exceeding 100).\n"); return (1); } for (i = 0; i < n; i++) { int sum = 0; int grade; read_name(s[i].name); /* À̸§À» ÀÐÀ½ */ scanf("%ld",&s[i].no); if (s[i].no < 920000 || s[i].no > 929999) { /* ¹øÈ£°¡ À߸øµÇ¾úÀ¸¸é */ printf("Error: invalid student number in the %dth record.\n",i+1); return (2); } for (j = 0; j < 5; j++) { /* °¢ ¼ºÀûÀ» Àоî */ scanf("%d",&grade); if (grade < 0 || grade > 100) { /* ¼ºÀûÀÌ À߸øµÇ¾úÀ¸¸é */ printf("Error: invalid grade in the %dth record.\n",i+1); return (3); } sum += grade; /* ¼ºÀûÀÇ ÇÕÀ» ±¸ÇÔ */ } s[i].avg = sum / 5.0f; /* Æò±ÕÀ» °è»ê */ } for (i = 0; i < n - 1; i++) /* Æò±Õ º°·Î Á¤·Ä */ for (j = i + 1; j < n; j++) if (s[i].avg < s[j].avg) { t = s[i]; s[i] = s[j]; s[j] = t; } printf("%5s%28s%17s%10s\n","Rank","Name","ID Number","Average"); for (i = 0; i < n; i++) printf("%5d%30s%15ld%10.1f\n",i+1,s[i].name,s[i].no,s[i].avg); } void read_name(char *c) { do *c = getchar(); /* óÀ½ ¿©¹é ¹®ÀÚµéÀº ¹«½Ã */ while (*c == '\n' || *c == ' ' || *c == '\t'); do *++c = getchar(); while (*c != '\n'); /* ±× ÁÙ ³¡±îÁö ÀÐÀ½ */ *c = '\0'; } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>test < data ³ú Rank Name ID Number Average 1 Lee Seung Wook 923682 84.4 2 Kwon Oh Jin 923326 78.8 3 Oh Jung Pyo 925252 72.0 4 Kwon Oh Chang 922525 63.6 < ±¸Á¶¿Í Æ÷ÀÎÅÍ > ±¸Á¶µµ ÇϳªÀÇ µ¥ÀÌÅÍ À¯ÇüÀ̹ǷΠÀÌÀÇ ÁÖ¼Ò¸¦ °ªÀ¸·Î °®´Â Æ÷ÀÎÅ͵µ Á¤ÀÇÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº ÀÌÀÇ ÇÑ ¿¹ÀÌ´Ù. #include struct man { char name[30]; int kor; int eng; int math; int total; float ave; }; void main(void) { struct man a, *pa; /* * ´Â µÚÀÇ º¯¼ö°¡ Æ÷ÀÎÅÍ º¯¼öÀÓÀ» ÀǹÌÇÑ´Ù */ pa = &a; /* aÀÇ ¹øÁö¸¦ pa¿¡ ´ëÀÔ */ strcpy(a.name,"GunMan"); a.kor = 87; a.eng = 90; a.math = 75; a.total = a.kor + a.eng + a.math; a.ave = a.total / 3.0f; printf(" Name : %s\n",(*pa).name); /* pa°¡ ±¸Á¶Ã¼ aÀÇ ¸Þ¸ð¸®¸¦ °¡¸®Å°°í ÀÖ±â */ printf(" Korean = %d\n",(*pa).kor); /* ¶§¹®¿¡ pa¸¦ Ãâ·ÂÇصµ °°Àº °á°ú°¡ ³ª¿È */ printf("English = %d\n",(*pa).eng); printf(" Math = %d\n",(*pa).math); printf(" Total = %d\n",(*pa).total); printf("Average = %.2f\n",(*pa).ave); } À§¿¡¼­´Â manÀ̶õ À̸§ÀÇ ±¸Á¶¸¦ Á¤ÀÇÇÏ°í ÀÖ°í ÀÌÀÇ º¯¼ö·Î a¸¦, ±×¸®°í ÀÌÀÇ ÁÖ¼Ò¸¦ °®´Â Æ÷ ÀÎÅÍ·Î pa¸¦ ¼±¾ðÇÏ°í ÀÖ´Ù. ¶Ç paÀÇ ÃʱⰪÀ¸·Î aÀÇ ÁÖ¼Ò¸¦ ÇÒ´çÇÏ°í ÀÖ´Ù. ±×¸®°í ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© ±¸Á¶ÀÇ °¢ ±¸¼º¿ä¼ÒÀÇ °ªÀ» Ãâ·ÂÇÏ°í Àִµ¥ *pa°¡ aÀ̹ǷΠ(*pa).nameÀº a.nameÀÌ µÈ ´Ù. ¿©±â¼­ *pa¸¦ °ýÈ£·Î ½Ñ °ÍÀº ¿ì¼± ¼øÀ§ ¶§¹®Àε¥ '.'°ú '*'ÀÇ °æ¿ì '.'ÀÌ ¿ì¼± ¼øÀ§°¡ ³ô±â ¶§¹®¿¡ *pa.nameÀ¸·Î »ç¿ëÇϸé *(pa.name)ÀÌ µÇ¾î ¹ö¸®±â ¶§¹®ÀÌ´Ù. ¹Ý¸é¿¡ ±¸Á¶¿¡ ´ëÇÑ Æ÷ÀÎÅÍ ¸¦ »ç¿ëÇÒ °æ¿ì À§¿Í °°ÀÌ (*pa).nameÀ¸·Î »ç¿ëÇÏ´Â °Í ¿Ü¿¡ ´Ù¸¥ ¹æ¹ýÀ¸·Îµµ ±¸¼º¿ä¼Ò¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÏ°í Àִµ¥, ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ¢Ñ pa : ±¸Á¶Ã¼ Æ÷ÀÎÅÍÀÏ °æ¿ì ¦¢ ¦¢ pa->name == (*pa).name /* µÎ ½ÄÀº ¿ÏÀüÈ÷ µ¿ÀÏÇÑ ¼ö½ÄÀÌ´Ù */ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº À§ ÇÁ·Î±×·¥À» ±¸Á¶Ã¼ Æ÷ÀÎÅÍ ¿¬»êÀÚ·Î ¹Ù²Ù¾î¼­ ³ªÅ¸³½ °ÍÀÌ´Ù. #include struct man { char name[30]; int kor; int eng; int math; int total; float ave; }; void main(void) { struct man a, *pa; pa = &a; strcpy(pa->name,"Gunman"); pa->kor = 87; pa->eng = 90; pa->math = 75; pa->total = pa->kor + pa->eng + pa->math; pa->ave = pa->total / 3.0f; printf(" Name : %s\n",pa->name); printf(" Korean = %d\n",pa->kor); printf("English = %d\n",pa->eng); printf(" Math = %d\n",pa->math); printf(" Total = %d\n",pa->total); printf("Average = %.2f\n",pa->ave); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- Name : Gunman Korean = 87 English = 90 Math = 75 Total = 252 Average = 84.00 < ÁßøµÈ ±¸Á¶ > ±¸Á¶ÀÇ ±¸¼º¿ä¼Ò·Î ¶Ç ´Ù¸¥ ±¸Á¶¸¦ »ç¿ëÇÒ ¼ö Àִµ¥, ÀÌ °æ¿ì ±¸Á¶ ¾È¿¡ ±¸Á¶°¡ ÀÖ´Â ÇüŸ¦ ÃëÇÏ°Ô µÈ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct time { ¦¢ ¦¢ int year; ¦¢ ¦¢ int month; ¦¢ ¦¢ int day; ¦¢ ¦¢ int hour; ¦¢ ¦¢ int min; ¦¢ ¦¢ int sec; ¦¢ ¦¢ }; ¦¢ ¦¢ ¦¢ ¦¢ struct plan { ¦¢ ¦¢ struct time start; ¦¢ ¦¢ struct time end; ¦¢ ¦¢ int cost; ¦¢ ¦¢ int number; ¦¢ ¦¢ } p; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ plan ±¸Á¶¸¦ º¸¸é timeÀ̶õ ±¸Á¶¸¦ °ªÀ¸·Î °®´Â ±¸¼º¿ä¼Ò¸¦ 2°³ °¡Áö°í ÀÖ´Ù. ÀÌ¿Í °°ÀÌ ±¸Á¶ ¾È ÀÇ ±¸¼º¿ä¼Ò°¡ ¶Ç ±¸Á¶¸¦ °®°í ÀÖ´Â °æ¿ì À̸¦ ÁßøµÈ ±¸Á¶(nested structure)¶ó°í ÇÑ´Ù. ±¸Á¶°¡ ÁßøµÈ °æ¿ì ½ÇÁ¦ °ªÀ» ÇÒ´çÇϱâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ '.'À» ¿©·¯ °³ »ç¿ëÇÏ°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ p.start.year = 1992; ¦¢ ¦¢ p.end.year = 1995; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¶Ç ÃʱⰪµµ ´ÙÀ½°ú °°ÀÌ °¢ ±¸Á¶¸¶´Ù ÇϳªÀÇ Áß°ýÈ£¸¦ ½Î¼­ ÁöÁ¤ÇÏ°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct plan p2 = {{1992,10,10,10,30,0},{1996,10,9,10,29,59},10000,100}; ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿¡¼­ {1992, 10, 10, 10, 30, 0}Àº p2.start¸¦ À§ÇÑ ÃʱⰪÀ̸ç {1996, 10, 9, 10, 29, 59}´Â p2.end ¸¦ À§ÇÑ ÃʱⰪÀÌ´Ù. ÁßøµÈ ±¸Á¶´Â º¹ÀâÇÑ ÀÚ·á ±¸Á¶¸¦ ³ªÅ¸³¾ ¶§ ÈçÈ÷ »ç¿ëÇÑ´Ù. ´ÙÀ½Àº 2Â÷¿ø ¹è¿­ÀÇ ÃʱâÈ­¿Í ÁßøµÈ ±¸Á¶Ã¼ÀÇ ÃʱâÈ­¸¦ ºñ±³ÇÑ °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ int a[2][3] = { ¦¢ ¦¢ {3, 4, 5}, ¦¢ ¦¢ {6, 7, 8} ¦¢ ¦¢ }; /* 2Â÷¿ø ¹è¿­ */ ¦¢ ¦¢ struct { ¦¢ ¦¢ struct a { int x, y, z; }; ¦¢ ¦¢ struct b { int w, x, y; }; ¦¢ ¦¢ } test = { ¦¢ ¦¢ {3, 4, 5}, ¦¢ ¦¢ {6, 7, 8} ¦¢ ¦¢ }; /* ÁßøµÈ ±¸Á¶Ã¼ */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ < °ø¿ë µ¥ÀÌÅÍ À¯Çü > °ø¿ë µ¥ÀÌÅÍ À¯ÇüÀÇ Àǹ̴ °°Àº ¸Þ¸ð¸®¸¦ ¼­·Î´Ù¸¥ µ¥ÀÌÅÍÇüÀ¸·Î »ç¿ëÇÑ´Ù´Â ÀǹÌÀÌ´Ù. ´ÙÀ½ ±×¸²Àº ÀÌ°ÍÀ» ³ªÅ¸³»°í ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +-------+ intÇüÀÏ °æ¿ì¿¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¦¢ ¦¢ charÇüÀÏ °æ¿ì +---+ | ¦¢ ¦¢ --+---+---+---+---+---+---+---+---+---+---+-- ¦¢ ¦¢ ¸Þ¸ð¸® | | | | | | | | | | | ¦¢ ¦¢ --+---+---+---+---+---+---+---+---+---+---+-- ¦¢ ¦¢ +---- ¿©±â¼­ºÎÅÍ ½ÃÀÛÇÏ´Â ¸Þ¸ð¸®¸¦ charÇü À¸·Îµµ intÇü À¸·Îµµ »ç¿ë ÇÑ´Ù. ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº °ø¿ë µ¥ÀÌÅÍ À¯ÇüÀÇ ¸î °¡Áö ¼±¾ð¿¹ÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ union u_type { ¦¢ ¦¢ int i; ¦¢ ¦¢ float f; ¦¢ ¦¢ char c; ¦¢ ¦¢ } u; ¦¢ ¦¢ union all { ¦¢ ¦¢ char name[80]; ¦¢ ¦¢ double d[10]; ¦¢ ¦¢ long int l; ¦¢ ¦¢ }; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ °ø¿ëüÀÇ ¼±¾ð ÇüÅ´ ±¸Á¶ µ¥ÀÌÅÍ À¯Çü°ú ¿ÏÀüÈ÷ µ¿ÀÏÇϸç, °¢ ±¸¼º¿ä¼Ò´Â ¹Ù·Î µ¶¸³ÀûÀÎ º¯¼ö °¡ µÈ´Ù. ±×¸®°í '.'³ª '->'¶ÇÇÑ µ¿ÀÏÇÏ°Ô »ç¿ëµÈ´Ù. ±×·¯³ª ±¸Á¶Ã¼¿Í´Â ´Ù¸¥ Â÷ÀÌ°¡ Àִµ¥, ¹Ù·Î °¢ ±¸¼º¿ä¼ÒµéÀÌ ±â¾ï Àå¼Ò¸¦ Â÷ÁöÇÏ´Â ¹æ¹ý¿¡ Â÷ÀÌ°¡ ÀÖ´Ù. ±¸Á¶ µ¥ÀÌÅÍ À¯ÇüÀÇ °æ¿ì¿¡´Â °¢ ±¸ ¼º¿ä¼ÒµéÀÌ µû·Îµû·Î ¸Þ¸ð¸®¸¦ Â÷ÁöÇÏ°í ÀÖÀ¸¸ç ±× ±¸Á¶ÀÇ Å©±â´Â ÀÌµé ±¸¼º¿ä¼ÒÀÇ Å©±â¸¦ ¸ðµÎ ÇÕÇÑ °ÍÀÌ µÈ´Ù. ±×·¸Áö¸¸ °ø¿ë µ¥ÀÌÅÍ À¯Çü¿¡¼­´Â °¢ ±¸¼º¿ä¼ÒµéÀÌ ¸Þ¸ð¸®¸¦ ¸ðµÎ °øÀ¯ÇÏ°Ô µÈ ´Ù. Áï °°Àº ¸Þ¸ð¸®¸¦ °°ÀÌ »ç¿ëÇϱ⠶§¹®¿¡ °ø¿ë µ¥ÀÌÅÍ À¯ÇüÀÇ Å©±â´Â °¢ ±¸¼º¿ä¼Ò Áß °¡Àå Å© ±â°¡ Å« ±¸¼º¿ä¼ÒÀÇ Å©±â°¡ µÈ´Ù. ´ÙÀ½Àº À̸¦ ³ªÅ¸³½ ÇÁ·Î±×·¥ÀÌ´Ù. main() { struct s_type { char c; int i; float f; } s; union u_type { char c; int i; float f; } u; printf("Address of s = %u, size of s = %d\n",&s,sizeof(s)); printf("\tAddress of s.c = %u\n",&s.c); printf("\tAddress of s.i = %u\n",&s.i); printf("\tAddress of s.f = %u\n",&s.f); printf("Address of u = %u, size of u = %d\n",&u,sizeof(u)); printf("\tAddress of u.c = %u\n",&u.c); printf("\tAddress of u.i = %u\n",&u.i); printf("\tAddress of u.f = %u\n",&u.f); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- Address of s = 65480, Size of s = 7 Address of s.c = 65480 Address of s.i = 65481 Address of s.f = 65483 Address of u = 65488, Size of u = 4 Address of u.c = 65488 Address of u.i = 65488 Address of u.f = 65488 µû¶ó¼­ °ø¿ë µ¥ÀÌÅÍ À¯ÇüÀº °¢ ±¸¼º¿ä¼Òµé Áß ¾î´À Çϳª¸¸ »ç¿ëÇϰųª À̵éÀÌ ¼­·Î ¹èŸÀûÀ¸·Î »ç¿ëµÉ ¶§¿¡¸¸ »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ÇÁ·Î±×·¥ÀÇ ¾î´À ÇÑ ºÎºÐ¿¡¼­´Â Á¤¼ö À¯ÇüÀÇ º¯¼ö i¸¸ »ç¿ëÇÏ°í ´Ù¸¥ ÇÑ ºÎºÐ¿¡¼­´Â ½Ç¼ö À¯ÇüÀÇ º¯¼ö f¸¸ »ç¿ëÇÑ´Ù°í ÇÒ ¶§ ÀÌ µÑÀ» °ø¿ë µ¥ÀÌÅÍ À¯Çü À¸·Î ¹­¾î »ç¿ëÇϸé ÀüüÀûÀ¸·Î ¸Þ¸ð¸®´Â ½Ç¼ö À¯ÇüÀÇ º¯¼ö f¸¸ »ç¿ëÇÒ ¶§¿Í °°À¸¸é¼­ µÎ°³ÀÇ º¯ ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î °æÁ¦ÀûÀÌ µÈ´Ù. ¶ÇÇÑ °¢ ±¸¼º¿ä¼Ò°¡ °°Àº Àå¼Ò¸¦ ¼­·Î °°ÀÌ »ç¿ëÇϱ⠶§¹®¿¡ °ø¿ë µ¥ÀÌÅÍ À¯ÇüÀÇ ÇÑ ±¸¼º¿ä¼ÒÀÇ °ªÀ» º¯°æÇÏ°Ô µÇ¸é ´ç¿¬È÷ ´Ù¸¥ ±¸¼º¿ä¼ÒÀÇ °ªµµ ¹Ù²î°Ô µÈ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½ ÇÁ·Î±×·¥ÀÇ °æ¿ì union ch_int { char ch; int in; } a; void main(void) { a.in = 0xBC37; printf(" ch = %X in = %X\n",a.ch,a.in); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- ch = 37 in = BC37 ´ÙÀ½ ±×¸²Àº À§¿¡¼­ ÀÔ·ÂÇÑ µ¥ÀÌÅÍ°¡ ¸Þ¸ð¸®»ó¿¡ ¾î¶°ÇÑ ÇüÅ·ΠÁ¸ÀçÇϴ°¡¸¦ ³ªÅ¸³½ °ÍÀÌ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ +---------+ intÇüÀÏ °æ¿ì¿¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¦¢ ¦¢ charÇüÀÏ °æ¿ì +----+ | ¦¢ ¦¢ --+----+----+----+----+----+----+----+----+----+----+-- ¦¢ ¦¢ ¸Þ¸ð¸® | 37 | BC | | | | | | | | | ¦¢ ¦¢ --+----+----+----+----+----+----+----+----+----+----+-- ¦¢ ¦¢ +------- °ø¿ëü a´Â ¿©±â¼­ ºÎÅÍ Á¸ÀçÇÑ´Ù. ¦¢ ¦¢ ¢Ñ 'a.ch'·Î °ø¿ëü¸¦ ÂüÁ¶ÇÒ °æ¿ì´Â charºÎºÐ¸¸À» ÂüÁ¶ÇϹǷΠ°á°ú´Â 37ÀÌ µÈ´Ù. ¦¢ ¦¢ ¢Ñ 'a.in'À¸·Î °ø¿ëü¸¦ ÂüÁ¶ÇÒ °æ¿ì´Â intºÎºÐÀ» ÂüÁ¶ÇϹǷΠ°á°ú´Â BC37ÀÌ µÈ´Ù. ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ main() { union u_type { char c; int i; float f; } u; u.c = 'A'; printf("u.c = %c\n",u.c); printf("u.i = %d\n",u.i); printf("u.f = %f\n",u.f); u.i = 100; printf("u.c = %c\n",u.c); printf("u.i = %d\n",u.i); printf("u.f = %f\n",u.f); u.f = 2.2f; printf("u.c = %c\n",u.c); printf("u.i = %d\n",u.i); printf("u.f = %f\n",u.f); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- u.c = A u.i = 1601 u.f = 0.000000 u.c = d u.i = 100 u.f = 0.000000 u.c = £½ u.i = -13107 u.f = 2.200000 °ø¿ë µ¥ÀÌÅÍ À¯ÇüÀº °¢ ±¸¼º¿ä¼Ò 1°³¸¸ Àǹ̰¡ Àֱ⠶§¹®¿¡ ±¸Á¶ µ¥ÀÌÅÍ À¯Çü°ú´Â ´Þ¸® °ø¿ëü Àüü¸¦ ÇÔ¼öÀÇ ÀÎÀÚ·Î Àü´ÞÇÒ ¼ö ¾øÀ¸¸ç, ÀÌ Àüü¸¦ °è»ê °á°ú·Î »êÃâÇÏ´Â ÇÔ¼öµµ ¸¸µé ¼ö ¾ø´Ù. < ºñÆ®Çʵå (Bit-field) > ºñÆ®Çʵå´Â °¢ ±¸Á¶Ã¼ ±¸¼º¿ä¼Ò¸¦ ºñÆ® ´ÜÀ§·Î ³ª´­ ¼ö ÀÖ´Ù. ÀϹÝÀûÀÎ ±¸Á¶Ã¼¿¡¼­ ±¸Á¶Ã¼ ±¸¼º ¿ä¼Ò´Â C°¡ Áö¿øÇÏ´Â µ¥ÀÌÅÍ ÇüÅ·θ¸ ³ª´©¾îÁö´Âµ¥ ºñÇØ ºñÆ®Çʵå´Â ºñÆ® ´ÜÀ§·Î ±¸¼º¿ä¼Ò¸¦ ³ª´­ ¼ö Àֱ⠶§¹®¿¡ ´õ¿í´õ ¼¼¹ÐÇÑ µ¥ÀÌÅÍ Á¶Á¤ÀÌ °¡´ÉÇÏ´Ù. ºñÆ®Çʵå´Â ±¸Á¶ ³»¿¡¼­ »ç¿ëµÇ±â ¶§¹®¿¡ ¸ÕÀú ±¸Á¶ À¯ÇüÀ» ¼±¾ðÇÏ¿©¾ß Çϴµ¥, ´ÙÀ½°ú °°Àº Çü Å·Π¼±¾ðÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct bit_field { ¦¢ ¦¢ unsigned b1: 1; ¦¢ ¦¢ unsigned b2: 2; ¦¢ ¦¢ unsigned b3: 4; ¦¢ ¦¢ } x; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¸¦ º¸¸é ´Ù¸¥ ±¸Á¶ÀÇ Á¤ÀÇ¿Í °°Àºµ¥ ±¸¼º¿ä¼ÒÀÇ À̸§ ´ÙÀ½¿¡ ':'¸¦ ºÙÀÌ°í ±× µÚ¿¡ ºñÆ®ÀÇ Å© ±â¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ ´Ù¸£´Ù. À̶§ ÀÌ ±¸¼º¿ä¼Ò´Â À§ÀÇ ±¸Á¶ ³»¿¡¼­ µü ºñÆ® Å©±â ¸¸Å­ÀÇ ºñÆ® ¼ö ¸¸ Â÷ÁöÇÏ°Ô µÈ´Ù. ±×¸®°í ºñÆ® Çʵ带 »ç¿ëÇÏ´Â °æ¿ì¿¡ ±¸¼º¿ä¼ÒÀÇ À̸§À» »ý·«ÇÒ ¼ö Àִµ¥, ÀÌ °æ¿ì ±× ±¸¼º¿ä¼Ò¿¡ ÇØ´çÇÏ´Â ºñÆ®µéÀº »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù(½ÇÁ¦·Î »ç¿ëÇÏÁö ¾Ê°Ú´Ù´Â Àǹ̰¡ µÈ´Ù). ¿¹¸¦ µé¾î ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÑ °æ¿ì ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct nobits { /* --+---+---+---+---+---+---+---+---+-- */ ¦¢ ¦¢ unsigned rec: 3; /* n = | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | */ ¦¢ ¦¢ unsigned : 2; /* --+---+---+---+---+---+---+---+---+-- */ ¦¢ ¦¢ unsigned sen: 2; /* +-------+ +---+ +---+ | */ ¦¢ ¦¢ unsigned con: 1; /* rec »ç¿ë¾ÈÇÔ sen con */ ¦¢ ¦¢ } n; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¶Ç ºñÆ® Å©±â¸¦ 0À¸·Î ¼±¾ðÇÒ ¼öµµ ÀÖ´Ù. ÀÌ´Â ´Ü¾îÀÇ °æ°è¸éÀ¸·Î À̵¿ÇÏ¿© ±× ´ÙÀ½ ºñÆ®ºÎÅÍ´Â ´Ù¸¥ ¹ÙÀÌÆ®³ª ´Ü¾î¿¡ ÇÒ´çÇ϶ó´Â Àǹ̰¡ µÈ´Ù. ¿¹¸¦ µé¸é ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ struct move { ¦¢ ¦¢ unsigned x: 3; ¦¢ ¦¢ unsigned y: 3; ¦¢ ¦¢ unsigned z: 0; ¦¢ ¦¢ unsigned w: 5; ¦¢ ¦¢ } m; ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ x´Â óÀ½ 3ºñÆ®¸¦, y´Â ±× ´ÙÀ½ 3ºñÆ®¸¦ Â÷ÁöÇÏ°Ô µÇÁö¸¸ z´Â Å©±â°¡ 0ÀÌ´Ù. µû¶ó¼­ z´Â ¸Þ¸ð¸® ¸¦ Â÷ÁöÇÏÁö ¾ÊÀ¸¸ç ±× ´ÙÀ½ÀÇ w¸¦ y´ÙÀ½ÀÌ ¾Æ´Ñ ´ÙÀ½ ¿öµå(PCÀÇ °æ¿ì ¦¼ö ¹ÙÀÌÆ®)¿¡ ÇÒ´çÇ϶ó ´Â Àǹ̰¡ µÈ´Ù. µû¶ó¼­ mÀº ´ÙÀ½°ú °°Àº ±¸Á¶¸¦ °®°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ -+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- ¦¢ ¦¢ m = |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10|11|12|13|14|15|0 |1 |2 |3 |4 | ¦¢ ¦¢ -+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- ¦¢ ¦¢ +-----+ +------+ +---------------------------+ +-----------+ ¦¢ ¦¢ x y »ç¿ë ¾ÈÇÔ w ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ÀϹÝÀûÀ¸·Î ÇϳªÀÇ ºñÆ®ÇʵåÀÇ Å©±â´Â ´Ü¾îÀÇ Å©±â¸¦ ÃÊ°úÇÒ ¼ö ¾øµµ·Ï µÇ¾î ÀÖÀ¸¸ç, ´Ü¾î °æ°è ¸é¿¡ °ÉÃÄ Á¸ÀçÇÒ ¼öµµ ¾ø°Ô µÇ¾î ÀÖ´Ù. µû¶ó¼­ ƯÁ¤ ºñÆ®Çʵ尡 ´Ü¾î °æ°è¸é¿¡ Á¸ÀçÇÏ°Ô µÉ °æ ¿ì¿¡´Â À§¿Í °°ÀÌ ´ÙÀ½ ´Ü¾î·Î À̵¿ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ±×¸®°í ºñÆ® Çʵå·Î ÁöÁ¤µÈ ±¸¼º¿ä ¼ÒÀÇ µ¥ÀÌÅÍ À¯Çüµµ signed´Â Àǹ̰¡ ¾ø±â ¶§¹®¿¡ unsigned int°¡ »ç¿ëµÇ¸ç ºñÆ® Çʵå ÇüÅÂÀÇ ¹è ¿­Àº »ç¿ëÇÒ ¼ö ¾ø°í ´ç¿¬È÷ ¿©±â¿¡ '&'¿¬»êÀÚµµ Àû¿ëÇÒ ¼ö ¾ø´Ù. ´ÙÀ½Àº Á¶ÇÕÇü ÄÚµå·Î µÈ Çѱ۰ú ¿µ¹®ÀÌ ÀԷµǾúÀ» ¶§ ¿µ¹®ÀÇ °æ¿ì¿¡´Â ±× Äڵ尪À», ÇѱÛÀÇ °æ¿ì¿¡´Â Ãʼº, Áß¼º, Á¾¼ºÀÇ Äڵ带 ºÐ¸®ÇÏ¿© Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. Á¶ÇÕÇü ÇѱÛÄÚµåÀÇ Ã¼°è¸¦ ±×¸²À¸·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ --+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- ¦¢ ¦¢ ¸Þ¸ð¸® = |0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10|11|12|13|14|15| ¦¢ ¦¢ --+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- ¦¢ ¦¢ | +-----------+ +-----------+ +-----------+ ¦¢ ¦¢ flag Ãʼº(5ºñÆ®) Áß¼º(5ºñÆ®) Á¾¼º(5ºñÆ®) ¦¢ ¦¢ ¢Ñ flagÀÌ 1 = ÇѱÛ, 0 = ¿µ¾î·Î ÆÇ´ÜÇÒ ¶§ »ç¿ëÇÑ´Ù. ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ #include struct hangeul { unsigned int s: 1; /* ºÎÈ£ */ unsigned int f: 5; /* Ãʼº */ unsigned int m: 5; /* Áß¼º */ unsigned int l: 5; /* Á¾¼º */ }; main() { unsigned char c; unsigned char c2; struct hangeul h; while ((c = getchar()) != 255) { /* unsigned char¶ó¼­ -1ÀÌ ¾Æ´Ñ 255 */ h.s = ((c & 0x80) >> 7); if (h.s == 0) { printf("%c -> %d\n",c,c); continue; } h.f = ((c & 0x7c) >> 2); h.m = ((c & 0x3) << 3); c2 = getchar(); h.m |= ((c2 & 0xe0) >> 5); h.l = c2 & 0x1f; printf("%c%c -> %u, %u, %u\n",c,c2,h.f,h.m,h.l); } } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- ÄÄÇ»ÅÍ^Z ³ú ÄÄ -> 17, 7, 17 Ç» -> 19, 26, 1 ÅÍ -> 18, 7, 1 À§ÀÇ Ãâ·ÂÀ» º¸¸é ¹ÞħÀÌ ¾ø´Â °æ¿ìµµ Á¾¼ºÀÇ °ªÀÌ 1·Î µÇ¾î Àִµ¥ À̸¦ filler¶ó°í ÇÑ´Ù. ÀÌ fillerÀÇ °ªÀÌ ´Þ¶ó¼­ ÀÌ»óÇÑ ¹ÞħÀÌ µé¾î°¡ ³ªÅ¸³ª´Â °æ¿ì°¡ Àִµ¥, ÀÌ ¶§¿¡´Â À̸¦ Á¶Á¤ÇØ ÁÖ¸é µÈ´Ù.