| |
¢¹ 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 ¼±¾ðÀº Åë»óÀûÀÎ ¹æ¹ý (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) °¡ ÇüÁöÁ¤ÀÚ±îÁö µ¿ÀÏÇÏ´Ù¸é,
µÎ µ¥ÀÌÅÍÇüÀº µ¿ÀÏÇÑ °ÍÀÔ´Ï´Ù. ¹è¿ Å©±â¿Í ÇÔ¼ö ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀº
µ¥ÀÌÅÍÇü ºñ±³¿¡¼ À¯È¿ÇÕ´Ï´Ù.
|