¢Ê 8ÀÏ: ÃʱâÈ­ - µ¥ÀÌÅÍÇü ÀÏÄ¡


  ¢¹ A8.7 ÃʱâÈ­ (Initialization)
  ´ë»óü°¡ ¼±¾ðµÉ ¶§, ´ë»óüÀÇ Ãʱâ-¼±¾ðÀÚ (init-declarator) ´Â ¼±¾ðµÇ´Â ¸íĪÀÇ ÃʱⰪÀ» ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù. = µÚ¿¡ ¿À´Â ÃʱâÄ¡ (initializer) ´Â ÇϳªÀÇ ¼ö½ÄÀ̳ª, Áß°ýÈ£¿¡ ½×ÀÎ ÃʱⰪÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. ÃʱⰪÀÇ ¸®½ºÆ®´Â ¹Ì°ü»óÀÇ ¸ñÀûÀ¸·Î ½°Ç¥·Î ³¡³¯ ¼ö ÀÖ½À´Ï´Ù.

initializer:
        assignment-expression
        { initializer-list }
        { initializer-list , }

initializer-list:
        initializer
        initializer-list , initializer

¢º ¿ªÀÚ ÁÖ
  ½°Ç¥·Î ³¡³ª´Â ÃʱⰪ ¸®½ºÆ®¿¡¼­ ½°Ç¥ÀÇ ¿ªÇÒÀº ¾îµð±îÁö³ª ¿Ü°ü»óÀÇ Ç¥ÇöÀÏ »ÓÀÔ´Ï´Ù. Áï ¸¶Áö¸· ½°Ç¥´Â ÃʱⰪÀÇ ¸®½ºÆ®¿¡ ¾î¶°ÇÑ ¿µÇâµµ ÁÖÁö ¸øÇÕ´Ï´Ù.

  Á¤Àû ´ë»óü³ª ¹è¿­ÀÇ ÃʱâÄ¡·Î ÁÖ¾îÁö´Â ¸ðµç ¼ö½ÄÀº 7.19 Àý¿¡¼­ ¾Ë¾Æº» »ó¼ö¼ö½Ä (constant expression) À̾î¾ß ÇÕ´Ï´Ù. ÃʱâÄ¡°¡ Áß°ýÈ£¿¡ ½×ÀÎ ÇüŶó¸é, auto ³ª register ´ë»óü³ª ¹è¿­ÀÇ ÃʱâÄ¡µµ »ó¼ö¿©¾ß ÇÕ´Ï´Ù. ÇÏÁö¸¸ ÀÚµ¿ ±â¾ïºÎ·ù ´ë»óüÀÇ ÃʱâÄ¡°¡ ÇϳªÀÇ ¼ö½ÄÀ̶ó¸é, ÃʱâÄ¡´Â »ó¼ö¼ö½ÄÀÏ Çʿ䰡 ¾øÀ¸¸ç, ´Ù¸¸ ±× ´ë»óü¿¡ ´ëÀԵDZâ À§ÇÑ Àû´çÇÑ µ¥ÀÌÅÍÇüÀÌ¸é µË´Ï´Ù.

  ÃÊÆÇ¿¡¼­´Â ÀÚµ¿ ±â¾ïºÎ·ùÀÇ ±¸Á¶Ã¼, °ø¿ëü, ¹è¿­ÀÇ ÃʱâÈ­¸¦ Áö¿øÇÏÁö ¾Ê¾Ò½À´Ï´Ù. ANSI ´Â À̸¦ Çã¶ôÇÏ¿´Áö¸¸, ÃʱâÄ¡°¡ Áß°ýÈ£¿¡ ½×ÀÎ ÇüŶó¸é »ó¼ö¼ö½ÄÀ̾î¾ß ÇÑ´Ù°í Á¦ÇÑÇϰí ÀÖ½À´Ï´Ù.

  ÃʱâÄ¡°¡ ÁÖ¾îÁöÁö ¾ÊÀº Á¤Àû ´ë»óü´Â »ó¼ö 0 ÀÌ ´ëÀÔµÈ °Íó·³ ÃʱâÈ­µË´Ï´Ù. ÀÚµ¿ ´ë»óü¿¡ ÃʱâÄ¡°¡ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é, ¾î¶² °ªÀ¸·Î ÃʱâÈ­µÇ´ÂÁö ¾Ë ¼ö ¾ø½À´Ï´Ù (undefined).
  Æ÷ÀÎÅͳª »ê¼úÇü ´ë»óüÀÇ ÃʱâÄ¡´Â (Áß°ýÈ£°¡ ÀÖÀ» ¼ö ÀÖ´Â) ´ÜÀÏ ¼ö½ÄÀÔ´Ï´Ù. ÁÖ¾îÁø ¼ö½ÄÀº ´ë»óü¿¡ ´ëÀԵ˴ϴÙ.
  ±¸Á¶Ã¼ÀÇ ÃʱâÄ¡´Â µ¿ÀÏÇÑ µ¥ÀÌÅÍÇüÀÇ ¼ö½ÄÀ̰ųª, Áß°ýÈ£ ¾È¿¡ ¸â¹ö ¼ø¼­´ë·Î ³ª¿­µÈ ÃʱâÄ¡ÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù. À̸§ÀÌ ºÙÁö¾ÊÀº ºñÆ®Çʵå´Â ¹«½ÃµÇ¸ç, ÃʱâÈ­ µÇÁö ¾Ê½À´Ï´Ù. ¸¸¾à ±¸Á¶Ã¼ÀÇ ¸â¹öº¸´Ù ÀûÀº ÃʱâÄ¡°¡ ÁÖ¾îÁö¸é, ³ª¸ÓÁö ºÎºÐÀº 0 À¸·Î ÃʱâÈ­µË´Ï´Ù. ±¸Á¶Ã¼ ¸â¹öº¸´Ù ¸¹Àº ÃʱâÄ¡°¡ ÁÖ¾îÁú ¼ö´Â ¾ø½À´Ï´Ù.
  ¹è¿­ÀÇ ÃʱâÄ¡´Â °¢ ¿ä¼Ò¿¡ ÇØ´çÇÏ´Â Áß°ýÈ£¾ÈÀÇ ÃʱâÄ¡ ¸®½ºÆ®ÀÔ´Ï´Ù. ¸¸¾à ¹è¿­ÀÇ Å©±â°¡ ÁÖ¾îÁöÁö ¾Ê¾Ò´Ù¸é, ÃʱâÄ¡ÀÇ °³¼ö°¡ ¹è¿­ÀÇ Å©±â¸¦ °áÁ¤ÇØ ÁÖ¸ç, ¹è¿­Àº ¿ÏÀüÇÑ Çü (complete type) ÀÌ µË´Ï´Ù. ¸¸¾à ¹è¿­ÀÇ Å©±â°¡ ¸í½ÃµÇ¾î °íÁ¤µÇ¾ú´Ù¸é, ÃʱâÄ¡ÀÇ °³¼ö´Â ¹è¿­ ¿ä¼ÒÀÇ °³¼ö¸¦ ³Ñ¾î¼­´Â ¾ÈµË´Ï´Ù; ¸¸¾à ÃʱâÄ¡°¡ ´õ ÀûÀº °æ¿ì¿¡´Â, ³ª¸ÓÁö ºÎºÐÀº 0 À¸·Î ÃʱâÈ­µË´Ï´Ù.
  Ưº°ÇÑ °æ¿ì, ¹®Àڹ迭Àº ¹®ÀÚ¿­·Î ÃʱâÈ­µÉ ¼ö ÀÖ½À´Ï´Ù; ¹®ÀÚ¿­ÀÇ ¿¬¼ÓµÈ °¢ ¹®ÀÚ´Â °¢°¢ÀÇ ¹è¿­ ¿ä¼Ò¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. À¯»çÇÏ°Ô wide character string (È®Àå ¹®ÀÚ¿­, A2.6) Àº wchar_t ÇüÀÇ ¹è¿­À» ÃʱâÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ¹è¿­ÀÇ Å©±â°¡ ÁÖ¾îÁöÁö ¾ÊÀº °æ¿ì¿¡´Â, ¹®ÀÚ¿­ÀÇ ³¡À» ¾Ë·ÁÁÖ´Â ³Î¹®ÀÚ¸¦ Æ÷ÇÔÇÑ ¹®ÀÚ¿­ÀÇ ¹®ÀÚ°³¼ö°¡ ¹è¿­ÀÇ Å©±â¸¦ °áÁ¤ÇÕ´Ï´Ù; ¸¸¾à ¹è¿­ÀÇ Å©±â°¡ °íÁ¤µÇ¾î ÀÖ´Ù¸é, ³Î¹®ÀÚ¸¦ Á¦¿ÜÇÑ ¹®ÀÚ¿­ÀÇ ¹®ÀÚ°³¼ö°¡ ¹è¿­ÀÇ Å©±âº¸´Ù Ä¿¼­´Â ¾ÈµË´Ï´Ù.
  °ø¿ëüÀÇ ÃʱâÄ¡´Â °ø¿ëüÀÇ Ã¹¹øÂ° ¸â¹ö¸¦ ÃʱâÈ­ÇØÁÖ´Â, µ¿ÀÏÇÑ µ¥ÀÌÅÍÇüÀÇ ´ÜÀÏ ¼ö½ÄÀ̳ª Áß°ýÈ£¿¡ ½×ÀÎ ÃʱⰪÀÔ´Ï´Ù.

  ÃÊÆÇ¿¡¼­´Â °ø¿ëüÀÇ ÃʱâÈ­¸¦ Çã¶ôÇÏÁö ¾Ê¾Ò½À´Ï´Ù. "ù¹øÂ° ¸â¹ö (¸¸ ÃʱâÈ­ ÇÒ ¼ö ÀÖ´Ù´Â)" ±ÔÄ¢ÀÌ º°·Î ¼¼·ÃµÈ ±ÔÄ¢Àº ¾Æ´ÏÁö¸¸, »õ·Î¿î ¹®¹ýÀ» ¸¸µéÁö ¾Ê°í´Â ÀÌ ±ÔÄ¢À» ÀϹÝÈ­ÇÏ±â ¾î·Æ½À´Ï´Ù. ´ú ¶³¾îÁø(^^) ¹æ¹ýÀ¸·Î¶óµµ °ø¿ëü¸¦ ¸í¹éÈ÷ ÃʱâÈ­ÇÒ ¼ö ÀÖµµ·Ï Çã¶ôÇÏ´Â °Í¿Ü¿¡µµ, ANSI ´Â ¸í¹éÈ÷ ÃʱâÈ­µÇÁö ¾ÊÀº Á¤Àû (static) °ø¿ëüÀÇ Àǹ̸¦ È®½ÇÈ÷ ÇØÁÖ°í ÀÖ½À´Ï´Ù.

¢º ¿ªÀÚ ÁÖ
  ANSI-C ¿¡¼­´Â ÃʱâÄ¡°¡ ¾ø´Â Á¤Àû ±â¾ïºÎ·ùÀÇ ´ë»óü´Â 0 À¸·Î ÃʱâÈ­µÈ´Ù°í ¸í½ÃÇϰí ÀÖÀ¸¹Ç·Î, ÃʱâÄ¡¸¦ ÁÖÁö ¾ÊÀº Á¤Àû °ø¿ëüÀÇ Ã¹¹øÂ° ¸â¹ö´Â È®½ÇÈ÷ »ó¼ö 0 ÀÌ ´ëÀÔµÈ °Íó·³ ÃʱâÈ­µË´Ï´Ù.

  'ÁýÇÕü (aggregate)' ´Â ±¸Á¶Ã¼³ª ¹è¿­À» ÀǹÌÇÏ´Â °ÍÀÔ´Ï´Ù. ¸¸¾à ÁýÇÕü°¡ ´Ù¸¥ ÁýÇÕü¸¦ ¸â¹ö·Î Æ÷ÇÔÇÑ´Ù¸é, ÃʱâÈ­ ±ÔÄ¢Àº Àç±ÍÀûÀ¸·Î Àû¿ëµË´Ï´Ù. ÃʱâÈ­¿¡¼­ÀÇ °ýÈ£´Â ´ÙÀ½°ú °°ÀÌ »ý·«µÉ ¼ö ÀÖ½À´Ï´Ù: ¸¸¾à ¾î¶°ÇÑ ÁýÇÕüÀÇ ¸â¹ö·Î°Å ÁßøµÈ, ºÎºÐÁýÇÕü (subaggregate) ÀÇ ÃʱâÄ¡°¡ ¿ÞÂÊ Áß°ýÈ£ { ·Î ½ÃÀÛÇÑ´Ù¸é, °ýÈ£ µÚ¿¡ µû¶ó¿À´Â ÃʱâÄ¡µéÀº ±× ºÎºÐÁýÇÕüÀÇ ¸â¹ö¸¦ ÃʱâÈ­ÇÕ´Ï´Ù; ÀÌ °æ¿ì¿¡´Â, ¸â¹öº¸´Ù ¸¹Àº ÃʱâÄ¡°¡ ÁÖ¾îÁö´Â °ÍÀº À߸øµÈ °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ ¸¸¾à ºÎºÐÁýÇÕüÀÇ ÃʱâÄ¡¿¡ Áß°ýÈ£°¡ ¾ø´Ù¸é, ÃʱâÄ¡ ¸®½ºÆ®¿¡¼­ ÇÊ¿äÇÑ ¸¸Å­À» ºÎºÐÁýÇÕüÀÇ ¸â¹ö·Î ÃëÇÕ´Ï´Ù; ÃʱâÄ¡·Î Á¤ÇØÁö°í ³²¾ÆÀÖ´Â ÃʱâÄ¡µéÀº ´ÙÀ½¹ø ºÎºÐÁýÇÕü¸¦ ÃʱâÈ­Çϴµ¥ »ç¿ëµË´Ï´Ù.
  ¿¹¸¦ µé¸é,

                int x[] = { 1, 3, 5 };

À§¿Í °°Àº ¼±¾ðÀº, ¹è¿­ÀÇ Å©±â°¡ ÁöÁ¤µÇÁö ¾Ê°í 3°³ÀÇ ÃʱâÄ¡°¡ ÁÖ¾îÁ® ÀÖÀ¸¹Ç·Î, x ¸¦ 3°³ÀÇ ¿ä¼Ò¸¦ °®´Â 1Â÷¿ø ¹è¿­·Î ¸¸µé¾î ÁÝ´Ï´Ù.

                float y[4][3] = {
                        { 1, 3, 5 },
                        { 2, 4, 6 },
                        { 3, 5, 7 },
                };

À§ÀÇ ¿¹´Â ¿Ïº®ÇÏ°Ô °ýÈ£°¡ ¾²ÀÎ ÃʱâÈ­ ÀÔ´Ï´Ù: 1, 3, 5 ´Â ¹è¿­ y[0] ÀÇ Ã¹¹øÂ° ÁÙÀ» ÃʱâÈ­ÇÕ´Ï´Ù. Áï, y[0][0], y[0][1], y[0][2] °¡ °¢°¢ 1, 3, 5 ·Î ÃʱâÈ­µË´Ï´Ù. ºñ½ÁÇÏ°Ô ³ª¸ÓÁö µÎ ÁÙ (2, 4, 6 °ú 3, 5, 7) Àº y[1] °ú y[2] ¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. ÃʱâÄ¡ ¸®½ºÆ®°¡ ¸ÕÀú ³¡³µÀ¸¹Ç·Î y[3] ÀÇ ¿ä¼ÒµéÀº 0 À¸·Î ÃʱâÈ­µË´Ï´Ù. À§ ¿¹´Â ¾Æ·¡ÀÇ ÃʱâÈ­¿Í Á¤È®ÇÏ°Ô µ¿ÀÏÇÑ È¿°ú¸¦ °¡Á®¿É´Ï´Ù.

                float y[4][3] = {
                        1, 3, 5, 2, 4, 6, 3, 5, 7
                };

Àüü ¹è¿­ y ÀÇ ÃʱâÄ¡´Â Áß°ýÈ£·Î ½ÃÀÛÇÏÁö¸¸, y[0] ÀÇ ÃʱâÄ¡´Â ±×·¸Áö ¾Ê½À´Ï´Ù (¸ÕÀú ¿¹¿¡¼­´Â y[0], y[1], y[2] ÀÇ ÃʱâÄ¡µéÀÌ Áß°ýÈ£·Î °¢°¢ ±¸ºÐµÇ¾î ÀÖ¾úÀ½); µû¶ó¼­ y[0] À» ÃʱâÈ­Çϴµ¥ 3°³ÀÇ ÃʱâÄ¡°¡ »ç¿ëµË´Ï´Ù. À¯»çÇÏ°Ô ´ÙÀ½ 3°³°¡ y[1] ¸¦ À§ÇØ, ¶Ç ´ÙÀ½ 3°³°¡ y[2] ¸¦ À§ÇØ ÃëÇØÁý´Ï´Ù. ¶Ç ´Ù¸¥ ¿¹¸¦ º¸¸é,

                float y[4][3] = {
                        { 1 }, { 2 }, { 3 }, { 4 }
                };

À§¿Í °°Àº °æ¿ì¿¡´Â (2Â÷¿ø ¹è¿­ÀÓÀ» »ý°¢Çؼ­) y ÀÇ Ã¹¹øÂ° Ä­ (column) ÀÌ (Áï, y[0][0], y[1][0], y[2][0], y[3][0]) °¢°¢ 1, 2, 3, 4 ·Î ÃʱâÈ­µÇ¸ç, ³ª¸ÓÁö´Â 0 À¸·Î ³²½À´Ï´Ù.
  ¸¶Áö¸·À¸·Î,

                char msg[] = "Syntax error in line %s\n";

´Â ¹®ÀÚ¿­·Î ÃʱâÈ­µÇ´Â ¹®Àڹ迭À» º¸¿©ÁÝ´Ï´Ù; ¹è¿­ÀÇ Å©±â´Â ³Î¹®ÀÚ±îÁö Æ÷ÇÔÇÑ Å©±â°¡ µË´Ï´Ù.

¢¹ A8.8 µ¥ÀÌÅÍÇü¸í (Type Name)
  (ij½ºÆ®·Î ¸í¹éÇÑ Çüº¯È¯À» ÁöÁ¤Çϰųª, ÇÔ¼ö ¼±¾ðÀÚ¿¡¼­ ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀ» ¼±¾ðÇϰųª, sizeof ¿¬»êÀÚÀÇ ÀÎÀÚ¸¦ ÁöÁ¤ÇÏ´Â °Í°°Àº) ¿©·¯ ¹®¸Æ¿¡¼­ µ¥ÀÌÅÍÇüÀÇ À̸§ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ ¶§´Â ´ë»óüÀÇ ¼±¾ð¿¡¼­ ±× ´ë»óüÀÇ ¸íΏ¸À» Á¦¿ÜÇÑ, µ¥ÀÌÅÍÇü¸í (type name) À» »ç¿ëÇØ ÁÖ¸éµË´Ï´Ù.

type-name:
        specifier-qualifier-list   abstract-declarator opt

abstract-declarator:
        pointer
        pointer opt   direct-abstract-declarator

direct-abstract-declarator:
        ( abstract-declarator )
        direct-abstract-declarator opt [ constant-expression opt ]
        direct-abstract-declarator opt ( parameter-type-list opt )

Ãß»óÀû-¼±¾ðÀÚ (abstract-declarator) ¿¡¼­, ±× ¼±¾ðÀÚ°¡ ½ÇÁ¦ ¼±¾ð¿¡¼­ »ç¿ëµÈ´Ù¸é ÀÖ¾î¾ß¸¸ ÇÏ´Â ¸íĪÀÇ À§Ä¡¸¦, ÇÑ °÷À¸·Î °áÁ¤ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. Ãß»óÀû ¼±¾ðÀÚ¿¡ ÀÇÇÑ µ¥ÀÌÅÍÇüÀº ¼±¾ðÀÚ¿¡ °¡»óÀÇ ¸íĪÀÌ ÀÖÀ» ¶§ÀÇ µ¥ÀÌÅÍÇü°ú µ¿ÀÏÇÕ´Ï´Ù. ¿¹¸¦ µé¸é,

                int
                int *
                int *[3]
                int (*)[]
                int *()
                int (*[])(void)

À§ÀÇ ¿¹´Â °¢°¢, "Á¤¼ö (integer)", "Á¤¼öÇü Æ÷ÀÎÅÍ (pointer to integer)", "3°³ÀÇ Á¤¼öÇü Æ÷ÀÎÅ͸¦ ¿ä¼Ò·Î °®´Â ¹è¿­ (array of 3 pointers to integers)", "Å©±â¸¦ ¸ð¸£´Â Á¤¼ö¹è¿­À» °¡¸£Å°´Â Æ÷ÀÎÅÍ (pointer to an array of an unspecified number of integers)", "¾Ë¼ö¾ø´Â ¸Å°³º¯¼ö¸¦ °®°í, Á¤¼öÇü Æ÷ÀÎÅ͸¦ ¹ÝȯÇÏ´Â ÇÔ¼ö (function of unspecified parameters returning pointer to integer)", "¸Å°³º¯¼ö°¡ ¾ø°í Á¤¼öÇüÀ» ¹ÝȯÇÏ´Â ÇÔ¼öÀÇ Æ÷ÀÎÅ͸¦ ¿ä¼Ò·Î ÇÏ´Â Å©±â¸¦ ¸ð¸£´Â ¹è¿­ (array of, unspecified size, of pointer to functions with no parameter returning integer)" À» ³ªÅ¸³À´Ï´Ù.

¢¹ A8.9 Typedef
  ±â¾ïºÎ·ù ÁöÁ¤ÀÚ typedef ¸¦ Æ÷ÇÔÇÏ´Â ¼±¾ðÀº ´ë»óü¸¦ ¼±¾ðÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ÁÖ¾îÁø ¸íĪÀ» µ¥ÀÌÅÍÇü¸íÀ¸·Î Á¤ÀÇÇØ ÁÝ´Ï´Ù. ÀÌ ¸íĪÀ» typedef ¸íÀ̶ó°í ºÎ¸¨´Ï´Ù.

typedef-name:
        identifier

typedef ¼±¾ðÀº Åë»óÀûÀÎ ¹æ¹ý (A8.6 Âü°í) À¸·Î ¼±¾ðÀÚ¿¡ ÁÖ¾îÁø ¸íĪÀ», ÁÖ¾îÁø µ¥ÀÌÅÍÇüÀ¸·Î ¸¸µé¾î ÁÝ´Ï´Ù. µû¶ó¼­ °¢°¢ÀÇ typedef ¸íÀº ±× µ¥ÀÌÅÍÇüÀ» ³ªÅ¸³»´Â º»·¡ÀÇ ÇüÁöÁ¤ÀÚ¿Í ¹®¹ýÀûÀ¸·Î µ¿ÀÏÇÕ´Ï´Ù.
  ¿¹¸¦ µé¸é,

                typedef long Blockno, *Blockptr;
                typedef struct { double r, theta; } Complex;

¿Í °°Àº ¼±¾ðÀÌ ÀÖÀº ÈÄ¿¡,

                Blockno b;
                extern Blockptr bp;
                Complex z, *zp;

À§¿Í °°Àº ¼±¾ðÀº Àû¹ýÇÑ °ÍÀÔ´Ï´Ù. Áï, b ÀÇ µ¥ÀÌÅÍÇüÀº long, bp ÀÇ µ¥ÀÌÅÍÇüÀº "long Çü Æ÷ÀÎÅÍ" À̸ç, z Àº ±¸Á¶Ã¼·Î, zp ´Â ±× ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ·Î ¼±¾ðµË´Ï´Ù.
  typedef ´Â ±âÁ¸¿¡ ¾ø´Â »õ·Î¿î µ¥ÀÌÅÍÇüÀ» ¸¸µå´Â °ÍÀÌ ¾Æ´Ï¶ó, ÁöÁ¤µÈ µ¥ÀÌÅÍÇüÀÇ ´Ù¸¥ µ¿ÀǾ ¸¸µé¾î ÁÖ´Â °Í»ÓÀÔ´Ï´Ù. À§ÀÇ ¿¹¿¡¼­, b ´Â ´Ù¸¥ long Çü ´ë»óü¿Í µ¿ÀÏÇÑ µ¥ÀÌÅÍÇüÀ» °®½À´Ï´Ù.
  typedef ¸íÀº ¾ÈÂÊ Åë¿ë¹üÀ§ (inner scope) ¿¡¼­ Àç¼±¾ðµÉ ¼ö ÀÖÁö¸¸, »ý·«µÇÁö ¾ÊÀº ÇüÁöÁ¤ÀÚ¸¦ ÁÖ¾î¾ß¸¸ ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î,

                extern Blockno;

´Â Blockno ¸¦ Àç¼±¾ðÇØÁÖÁö ¾ÊÁö¸¸,

                extern int Blockno;

´Â Àç¼±¾ðÇØÁÝ´Ï´Ù.

¢¹ A8.10 µ¥ÀÌÅÍÇü ÀÏÄ¡ (Type Equivalence)
  µÎ ÇüÁöÁ¤ÀÚ ¸®½ºÆ®´Â »ý·«µÈ ÀϺΠÁöÁ¤ÀÚ±îÁö °í·ÁÇØ¼­ (¿¹¸¦ µé¾î, long Àº long int ¸¦ ÀǹÌÇÔ), µ¿ÀÏÇÑ ÇüÁöÁ¤ÀÚ¸¦ °¡Áö°í ÀÖ´Ù¸é µ¿ÀÏÇÏ´Ù°í ¸»ÇÕ´Ï´Ù. ´Ù¸¥ ÅÃÀ» °®°í ÀÖ´Â ±¸Á¶Ã¼, °ø¿ëü, ¿­°Å´Â ±¸º°µÇ¸ç, ÅÃÀÌ ¾ø´Â ±¸Á¶Ã¼, °ø¿ëü, ¿­°Åµµ °¢°¢ÀÇ µ¶¸³ÀûÀÎ µ¥ÀÌÅÍÇüÀ» ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù.
  ÇÔ¼ö ¸Å°³º¯¼öÀÇ ¸íĪÀ» ¸ðµÎ ¹«½ÃÇϰí, typedef ¸íÀ» È®Àå½ÃŲ ÈÄ¿¡, Ãß»óÀû ¼±¾ðÀÚ (abstract declarator, A8.8) °¡ ÇüÁöÁ¤ÀÚ±îÁö µ¿ÀÏÇÏ´Ù¸é, µÎ µ¥ÀÌÅÍÇüÀº µ¿ÀÏÇÑ °ÍÀÔ´Ï´Ù. ¹è¿­ Å©±â¿Í ÇÔ¼ö ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀº µ¥ÀÌÅÍÇü ºñ±³¿¡¼­ À¯È¿ÇÕ´Ï´Ù.



[¡ã ¸ÇÀ§·Î]
[¢Ê ¸ñÂ÷·Î]