| |
¢¹ A6.1 Á¤¼öÁø±Þ (Integral Promotion)
ºÎÈ£¿¡ °ü°è¾øÀÌ ¹®ÀÚÇü, short int Çü, Á¤¼ö ºñÆ®Çʵå (integer bit-field) ¿Í
¿°ÅÇü ´ë»óü´Â Á¤¼öÇü (integer) ÀÌ »ç¿ëµÉ ¼ö ÀÖ´Â ¼ö½ÄÀ̶ó¸é »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. int ÇüÀÌ
¿ø·¡ µ¥ÀÌÅÍÇüÀÇ ¸ðµç °ªÀ» Ç¥ÇöÇÒ ¼ö ÀÖ´Ù¸é ±× °ªÀÌ intÇüÀ¸·Î º¯È¯µË´Ï´Ù. ¸¸¾à
±×·¸Áö ¾Ê´Ù¸é unsigned int ÇüÀ¸·Î º¯È¯µË´Ï´Ù. ÀÌ °úÁ¤À» Á¤¼öÁø±Þ À̶ó°í
ÇÕ´Ï´Ù.
¢¹ A6.2 Á¤¼öº¯È¯ (Integral Conversion)
¾î¶°ÇÑ Á¤¼öÇü (integer) ÀÌ¶óµµ ±× Á¤¼ö¿Í ÀÏÄ¡ÇÏ´Â °¡Àå ÀÛÀº ¾ç¼ö°ªÀ» ãÀ½À¸·Î½á
(ºÎÈ£¾ø´Â µ¥ÀÌÅÍÇü¿¡¼ Ç¥ÇöÇÒ ¼ö ÀÖ´Â ÃÖ´ë°ªº¸´Ù Çϳª Å« ¼ö¿Í ³ª¸ÓÁö ¿¬»ê (modulo)), ÁÖ¾îÁø
ºÎÈ£¾ø´Â ÇüÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. 2ÀÇ º¸¼ö Ç¥Çö¿¡¼ ÀÌ´Â ºÎÈ£¾ø´Â ÇüÀÇ
ºñÆ®±¸Á¶°¡ ´õ ÀÛÀº °æ¿ì¿¡´Â ¿ÞÂÊ Àý´Ü (left-truncation) ÀÌ, ´õ ³ÐÀº °æ¿ì¿¡´Â
0À» ä¿î ºÎÈ£¾ø´Â °ª, ºÎȣȮÀåµÈ (sign-extending) ºÎÈ£ÀÖ´Â °ª°ú µ¿ÀÏÇÕ´Ï´Ù.
 |
 |
¢º ¿ªÀÚ ÁÖ
À§ÀÇ ³ª¸ÓÁö ¿¬»ê ¿î¿îÇÏ´Â ºÎºÐÀ» ¼ö½ÄÀ¸·Î ¼³¸íÇϸé (unsigned ÀÇ
ÃÖ´ë°ª + 1 + º¯È¯ÇÒ °ª) % (unsigned ÀÇ ÃÖ´ë°ª + 1) ÀÔ´Ï´Ù. |
|
 |
 |
Á¤¼öÇü (integer) ÀÌ ºÎÈ£ÀÖ´Â µ¥ÀÌÅÍÇüÀ¸·Î º¯È¯µÇ´Â °æ¿ì, »õ·Î¿î µ¥ÀÌÅÍÇüÀÌ
±× °ªÀ» Ç¥ÇöÇÒ ¼ö ÀÖ´Ù¸é ±× °ªÀº º¯ÇÏÁö ¾Ê½À´Ï´Ù. Ç¥ÇöÀÌ ºÒ°¡´ÉÇÑ °æ¿ì¿¡´Â
°á°ú°¡ ÄÄÆÄÀÏ·¯¸¶´Ù ´Ù¸¨´Ï´Ù (implementation-defined).
¢¹ A6.3 Á¤¼ö¿Í ºÎµ¿¼Ò¼ö (Integer and Floating)
ºÎµ¿ÇüÀÇ °ªÀÌ Á¤¼ö°ª (integral) À¸·Î º¯È¯µÉ ¶§, ¼Ò¼öºÎºÐÀº Àß·Á ³ª°©´Ï´Ù. ¸¸¾à º¯È¯µÈ
°ªÀ» Á¤¼ö°ª (integral) À¸·Î ³ªÅ¸³¾ ¼ö ¾ø´Ù¸é ±×¶§ÀÇ ÇൿÀº ¾Ë ¼ö ¾ø½À´Ï´Ù (undefined). ƯÈ÷ À½¼ö ºÎµ¿¼Ò¼ö°¡
ºÎÈ£¾ø´Â Á¤¼ö°ª (integral) À¸·Î º¯È¯µÉ °æ¿ì¿¡ ´ëÇØ¼´Â ¸í½ÃµÈ ¹Ù°¡ ¾ø½À´Ï´Ù (unspecified).
Á¤¼ö°ª (integral) ÀÌ ºÎµ¿ÇüÀ¸·Î º¯È¯µÉ ¶§, ±× °ªÀÌ ºÎµ¿ÇüÀ¸·Î Ç¥Çö °¡´ÉÇÏÁö¸¸,
Á¤È®È÷ Ç¥ÇöÇÒ ¼ö ¾øÀ» °æ¿ì¿¡´Â Çϳª Å©°Å³ª ÀÛÀº °ªÀÌ °á°ú°¡ µË´Ï´Ù. ¸¸¾à
°á°ú°¡ Ç¥Çö¹üÀ§ ¹ÛÀ¸·Î ¹þ¾î³´Ù¸é °á°ú¸¦ ¾Ë ¼ö ¾ø½À´Ï´Ù (undefined).
¢¹ A6.4 ºÎµ¿Çü (Floating Type)
ÀÛÀº Á¤¹ÐµµÀÇ ºÎµ¿ÇüÀÌ °°°Å³ª ´õ Å« Á¤¹Ðµµ¸¦ °®´Â ºÎµ¿ÇüÀ¸·Î º¯È¯µÈ´Ù¸é °ªÀº
º¯ÇÏÁö ¾Ê½À´Ï´Ù. ¹Ý´ë·Î Å« Á¤¹ÐµµÀÇ ºÎµ¿ÇüÀÌ ÀÛÀº Á¤¹ÐµµÀÇ ºÎµ¿ÇüÀ¸·Î º¯È¯µÉ
¶§´Â, °á°ú°¡ Ç¥Çö°¡´ÉÇÑ ¹üÀ§³»¿¡ ÀÖ´Ù¸é °á°ú°ªÀº (Á¤¹Ðµµ°¡ ´õ ÀÛÀ¸¹Ç·Î) ´õ Å©°Å³ª
ÀÛÀº °ªÀÌ µË´Ï´Ù. ¸¸¾à Ç¥Çö°¡´ÉÇÑ ¹üÀ§¸¦ ¹þ¾î³ª ¹ö¸®¸é, ±×¶§ÀÇ ÇൿÀº Á¤ÀǵǾî ÀÖÁö
¾Ê½À´Ï´Ù (undefined).
¢¹ A6.5 »ê¼úº¯È¯ (Arithmetic Conversion)
¸¹Àº ¿¬»êÀÚµéÀÌ º¯È¯À» ÇàÇÏ°í ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ¿¬»ê °á°ú¸¦ »ý¼ºÇÕ´Ï´Ù. ±×
È¿°ú´Â ÇÇ¿¬»êÀÚ¸¦ °øÅëµÈ µ¥ÀÌÅÍÇüÀ¸·Î ¸¸µé¾î ÁÖ´Â °ÍÀ̸ç, °á°ú ¶ÇÇÑ °°Àº µ¥ÀÌÅÍÇüÀÌ
µË´Ï´Ù. ÀÌ·¯ÇÑ °ÍÀ» ÀϹÝÀû »ê¼úº¯È¯ (usual arithmetic conversion) À̶ó°í ÇÕ´Ï´Ù.
¿ì¼±, ÇÇ¿¬»êÀÚ¿¡ long double ÇüÀÌ ÀÖÀ¸¸é ³ª¸ÓÁöµµ long double ·Î ¹Ù²ß´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, ÇÇ¿¬»êÀÚ¿¡ double ÇüÀÌ ÀÖÀ¸¸é ³ª¸ÓÁöµµ double ·Î ¹Ù²ß´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, ÇÇ¿¬»êÀÚ¿¡ float ÇüÀÌ ÀÖÀ¸¸é ³ª¸ÓÁöµµ float ·Î ¹Ù²ß´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, Á¤¼öÁø±ÞÀÌ °¢ ÇÇ¿¬»êÀÚ¿¡ ¼öÇàµÈ ÈÄ¿¡, ÇÇ¿¬»êÀÚ¿¡ unsigned
long int °¡ ÀÖÀ¸¸é ³ª¸ÓÁöµµ unsigned long int ·Î ¹Ù²ß´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, ÇÑ ÇÇ¿¬»êÀÚ°¡ long int ÀÌ°í ´Ù¸¥ ÇÇ¿¬»êÀÚ´Â unsigned int ¶ó¸é,
long int °¡ unsigned int ¸¦ ¸ðµÎ Ç¥ÇöÇÒ ¼ö ÀÖ´ÂÁö°¡ Áß¿äÇÕ´Ï´Ù. °¡´ÉÇÏ´Ù¸é unsigned
int °¡ long int ·Î º¯È¯µÇ°í, ºÒ°¡´ÉÇÏ´Ù¸é ¸ðµÎ unsigned long int ·Î º¯È¯µË´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, ÇÇ¿¬»êÀÚ¿¡ long int °¡ ÀÖÀ¸¸é ³ª¸ÓÁöµµ long int ·Î ¹Ù²ß´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, ÇÇ¿¬»êÀÚ¿¡ unsigned int °¡ ÀÖÀ¸¸é ³ª¸ÓÁöµµ unsigned int ·Î ¹Ù²ß´Ï´Ù.
±×·¸Áö ¾ÊÀ¸¸é, µÎ ÇÇ¿¬»êÀÚ ¸ðµÎ int ÇüÀÔ´Ï´Ù. |
| |
À̰÷¿¡´Â µÎ°¡Áö º¯È°¡ »ý°å½À´Ï´Ù. ¿ì¼± float ÇüÀÇ
¿¬»êÀÌ double ÇüÀ¸·Î º¯È¯µÇÁö ¾Ê°í ´ÜÁ¤µµ³»¿¡¼ ÇØ°áµÈ´Ù´Â Á¡ÀÔ´Ï´Ù. µÑ°´Â
ÀÛÀº Å©±âÀÇ ºÎÈ£¾ø´Â Çü°ú Å« Å©±âÀÇ ºÎÈ£ÀÖ´Â ÇüÀÌ ¸¸³µÀ» ¶§, ºÎÈ£¾ø´Â ÇüÀÇ Æ¯¼ºÀÌ
°á°úÀÇ Å×ÀÌÅÍÇüÀ¸·Î ÀüÆÄµÇÁö ¾Ê´Â´Ù´Â Á¡ÀÔ´Ï´Ù. ÃÊÆÇ¿¡¼´Â ºÎÈ£¾ø´Â ÇüÀÌ
Ç×»ó °á°ú¸¦ Áö¹èÇß¾ú½À´Ï´Ù. »õ·Î¿î ±ÔÄ¢Àº ´Ù¼Ò º¹ÀâÇϱâ´Â ÇÏÁö¸¸, ºÎÈ£¾ø´Â
ÇüÀÌ ºÎÈ£ÀÖ´Â Çü°ú ¸¸³µÀ» ¶§ ¹ß»ýÇÏ´Â ¿¹»ó ¹ÛÀÇ °á°ú¸¦ ÁÙ¿´½À´Ï´Ù. ÇÏÁö¸¸
°°Àº Å©±âÀÇ ºÎÈ£¾ø´Â Çü°ú ºÎÈ£ÀÖ´Â ÇüÀÌ ¸¸³´Ù¸é °á°ú´Â ¿©ÀüÈ÷ ¿¹»ó ºÒ°¡´É
ÇÕ´Ï´Ù. |
¢¹ A6.6 Æ÷ÀÎÅÍ¿Í Á¤¼ö (Pointer and Integer)
Á¤¼ö¼ö½Ä (integral) Àº Æ÷ÀÎÅÍ¿¡ ´õÇϰųª »¬ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì Á¤¼ö¼ö½Ä (integral) Àº µ¡¼À
¿¬»êÀÚ¿¡¼ À̾߱âÇÒ °Íó·³ (A7.7) º¯È¯µË´Ï´Ù.
°°Àº ¹è¿³»¿¡¼, °°Àº µ¥ÀÌÅÍÇüÀ» °¡¸£Å°´Â µÎ Æ÷ÀÎÅÍ´Â ¼·Î »¬ ¼ö ÀÖ½À´Ï´Ù. °á°ú´Â
»¬¼À ¿¬»êÀÚ¿¡¼ ¼³¸íÇÒ °Íó·³ (A7.7) Á¤¼öÇü (integer) À¸·Î º¯È¯µË´Ï´Ù.
0 °ªÀ» °°´Â Á¤¼ö »ó¼ö¼ö½Ä (integral) À̳ª void * ·Î º¯È¯µÈ ±×·¯ÇÑ ¼ö½ÄÀº ij½ºÆ®,
´ëÀÔ, ºñ±³¿¡ ÀÇÇØ ¾î¶² ÇüÀÇ Æ÷ÀÎÅͷεµ º¯È¯µÉ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº °°Àº
µ¥ÀÌÅÍÇüÀÇ Null Æ÷ÀÎÅ͸¦ »ý¼ºÇÕ´Ï´Ù. ÇÏÁö¸¸ ÇÔ¼ö³ª ´ë»óü¸¦ °¡¸£Å°´Â
Æ÷ÀÎÅͿʹ °°À» ¼ö ¾ø½À´Ï´Ù.
±×¿ÜÀÇ ¸íÈ®ÇÑ Æ÷ÀÎÅÍ º¯È¯Àº Çã°¡´Â µÇ¾î ÀÖÁö¸¸ ÄÄÆÄÀÏ·¯¿¡ µû¶ó ¾à°£¾¿
´Ù¸¥ ¸é¸ð¸¦ º¸ÀÔ´Ï´Ù. Æ÷ÀÎÅÍÀÇ º¯È¯Àº ij½ºÆ® ¿¬»êÀÚ³ª È®½ÇÇÑ Çüº¯È¯
¿¬»êÀÚ (type-conversion operator) ¿¡ ÀÇÇØ ¼¼úµÇ¾î¾ß ÇÕ´Ï´Ù. (A7.5 ¿Í
A8.8 Âü°í)
Æ÷ÀÎÅÍ´Â ±×°ÍÀ» ´ãÀ» ¼ö ÀÖ´Â ÃæºÐÇÑ Å©±âÀÇ Á¤¼öÇü (integral) À¸·Î º¯È¯µÉ ¼ö ÀÖ½À´Ï´Ù.
ÀÌ ¶§ ¿ä±¸µÇ´Â Á¤¼öÇü (integral) ÀÇ Å©±â´Â °¢°¢ ´Ù¸¨´Ï´Ù (implementation-dependent). ¸ÅÇÎÇÔ¼ö (mapping
function) ¿¡ ´ëÇÑ »çÇ×Àº ÄÄÆÄÀÏ·¯¿¡ µû¶ó ´Ù¸¨´Ï´Ù (implementation-dependent).
 |
 |
¢º ¿ªÀÚ ÁÖ
¸ÅÇÎÇÔ¼ö (mapping function) ¶õ, Æ÷ÀÎÅͰ¡ °¡¸£Å°´Â ¸Þ¸ð¸®»óÀÇ ÁÖ¼Ò¸¦
Á¤¼ö¼öÄ¡ (integral) ·Î ¹Ù²Ù´Â ¹æ¹ýÀ» ÀǹÌÇÕ´Ï´Ù. °°Àº ÁÖ¼Ò¶ó°í ÇØµµ ÄÄÆÄÀÏ·¯¸¶´Ù
±× Ç¥Çö¹æ¹ýÀÌ ´Ù¸¨´Ï´Ù. |
|
 |
 |
Á¤¼öÇü ´ë»óü (integral) ´Â ¸í¹éÈ÷ Æ÷ÀÎÅÍ·Î º¯È¯µÉ ¼ö ÀÖ½À´Ï´Ù. Á¤¼öÇü (integral) ÀÇ Å©±â°¡
Æ÷ÀÎÅ͸¦ ÃæºÐÈ÷ ´ãÀ» ¼ö ÀÖ´Ù¸é, Æ÷ÀÎÅͷκÎÅÍ º¯È¯µÈ Á¤¼ö°ª (integral) ÀÌ ´Ù½Ã °°Àº Æ÷ÀÎÅÍ·Î
º¯È¯µÇÁö¸¸, ±×·¸Áö ¾Ê´Ù¸é °á°ú´Â ÄÄÆÄÀÏ·¯¸¶´Ù ´Ù¸¨´Ï´Ù (implementation-dependent).
 |
 |
¢º ¿ªÀÚ ÁÖ
C90 Ç¥Áؾȿ¡¼´Â, ¾î¶°ÇÑ °æ¿ì¶óµµ Á¤¼ö¿Í Æ÷ÀÎÅͰ£ÀÇ º¯È¯Àº
ÄÄÆÄÀÏ·¯°¡ Á¤ÀÇÇÑ´Ù°í (implementation-defined) ¸í½ÃÇϰí ÀÖ½À´Ï´Ù.
|
|
 |
 |
¾î¶°ÇÑ µ¥ÀÌÅÍÇüÀÇ Æ÷ÀÎÅÍ´Â ´Ù¸¥ ÇüÀÇ Æ÷ÀÎÅÍ·Î º¯È¯µÉ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à
º»·¡ÀÇ Æ÷ÀÎÅͰ¡ Àû´çÈ÷ Á¤·ÄµÇÁö ¾ÊÀº ±â¾ïÀå¼ÒÀÇ ´ë»óü¸¦ ÂüÁ¶Çϰí ÀÖ¾ú´Ù¸é,
º¯È¯µÈ °á°ú·Î ³ª¿À´Â Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¿¡ ¿¹¿ÜÀû »óȲ (addressing exception) ÀÌ
¹ß»ýÇÒ ¼öµµ
ÀÖ½À´Ï´Ù. Æ÷ÀÎÅÍ´Â º¯È¾øÀÌ ±â¾ïÀå¼ÒÀÇ Á¤·ÄÀ» ´ú ¿ä±¸ÇÏ´Â µ¥ÀÌÅÍÇüÀÇ
Æ÷ÀÎÅÍ·Î º¯È¯µÉ ¼ö ÀÖ´Ù´Â °ÍÀÌ º¸ÀåµË´Ï´Ù. 'Á¤·Ä (alignment)' À̶ó´Â
¿ë¾î ÀÚü°¡ ¸íÈ®È÷ ±ÔÁ¤µÉ ¼ö´Â ¾øÁö¸¸ (implementation-dependent), char ÇüÀÇ ´ë»óü´Â ±â¾ïÀå¼Ò Á¤·Ä¿¡
´ëÇØ °¡Àå ¾ö°ÝÇÏÁö ¾Ê½À´Ï´Ù. A6.8 Àý¿¡¼ ¼³¸íÇϰÚÁö¸¸, º¯È¾øÀÌ ¾î¶²
Æ÷ÀÎÅÍÀ̵ç void * ·Î º¯È¯µÇ¾ú´Ù°¡ µÇµ¹·ÁÁú ¼ö ÀÖ½À´Ï´Ù.
 |
 |
¢º ¿ªÀÚ ÁÖ
±â¾ïÀå¼Ò Á¤·ÄÀÇ ÇѰ¡Áö ¿¹¸¦ µé¾î º¸°Ú½À´Ï´Ù. ¹ÙÀÌÆ® ±â¹Ý (byte-based) ÀÇ
¸Þ¸ð¸®¸¦ °®°í ÀÖ´Â ¾î¶² ±âÁ¾¿¡¼´Â, 2 ¹ÙÀÌÆ® Å©±âÀÇ short int ÇüÀº ¦¼ö
¹øÁö¿¡, 4 ¹ÙÀÌÆ® Å©±âÀÇ long int ÇüÀº 4ÀÇ ¹è¼ö ¹øÁö¿¡ ÀúÀåÇßÀ» ¶§
°¡Àå È¿°úÀûÀ¸·Î ´Ù·ç¾îÁý´Ï´Ù. °æ¿ì¿¡ µû¶ó¼´Â Á¤·ÄÀÌ µÇÁö ¾ÊÀº
°ªÀº ¾Æ¿¹ ´Ù·ê ¼ö ¾ø´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. |
|
 |
 |
Æ÷ÀÎÅÍ´Â, °¡¸£Å°´Â ´ë»óü¿¡ Àû¿ëµÇ´Â ÇÑÁ¤¾îÀÇ Ã·°¡³ª Á¦°Å (addition or removal) ¸¦ Á¦¿ÜÇÏ¸é °°Àº
µ¥ÀÌÅÍÇüÀÇ Æ÷ÀÎÅÍ·Î º¯È¯µÉ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ÇÑÁ¤¾î°¡ ÷°¡µÇ¸é, »õ ÇÑÁ¤¾î¿¡
ÀÇÇØ Àû¿ëµÇ´Â Á¦ÇÑÀ» Á¦¿ÜÇÏ¸é ¿¹ÀüÀÇ Æ÷ÀÎÅÍ¿Í µ¿ÀÏÇÕ´Ï´Ù. ¸¸¾à ÇÑÁ¤¾î°¡
Á¦°ÅµÇ¸é, ±âÃʰ¡ µÇ´Â ´ë»óü¿¡¼ÀÇ ÀÛ¾÷Àº ±×°ÍÀÇ ½ÇÁ¦ ¼±¾ð¿¡ ÀÖ´Â ÇÑÁ¤¾î¿¡
±Í¼ÓµË´Ï´Ù.
 |
 |
¢º ¿ªÀÚ ÁÖ
¿ì¼±, ÇÑÁ¤¾î°¡ ÷°¡µÇ´Â °æ¿ìÀÇ ¿¹¸¦ µé¾îº¸°Ú½À´Ï´Ù.
char char_var;
char *pointer_to_char;
const char *pointer_to_const;
pointer_to_char = &char_var;
*pointer_to_char = 'a'; /* °¡´É */
pointer_to_const = pointer_to_char;
*pointer_to_const = 'a'; /* ÄÄÆÄÀϽà ¿¡·¯ */ |
À§ÀÇ ¿¹¿¡¼, pointer_to_char °¡ pointer_to_const ·Î ´ëÀԵǸé¼,
Çüº¯È¯¿¡ ÀÇÇØ ÇÑÁ¤¾î°¡ ÷°¡µË´Ï´Ù. ºÐ¸í pointer_to_char ¿Í pointer_to_const ´Â
const °¡ ºÙÁö ¾ÊÀº ÀÏ¹Ý char Çü º¯¼ö¸¦ °¡¸£Å°°í ÀÖÁö¸¸, ÇÑÁ¤¾îÀÇ ¿µÇâÀ» ¹Þ¾Æ
pointer_to_const ¿¡´Â °ªÀ» ´ëÀÔÇÒ ¼ö ¾ø½À´Ï´Ù.
´ÙÀ½Àº, ÇÑÁ¤¾î°¡ Á¦°ÅµÇ´Â °æ¿ìÀÇ ¿¹ÀÔ´Ï´Ù.
const char const_char;
char *pointer_to_char;
const char *pointer_to_const;
pointer_to_const = &const_char;
pointer_to_char = (char *) pointer_to_const;
*pointer_to_char = 'a'; /* ½ÇÇà½Ã ¿¡·¯ */ |
pointer_to_const ¸¦ ij½ºÆ®¾øÀÌ pointer_to_char ·Î º¯È¯ÇÒ ¼ö´Â ¾ø½À´Ï´Ù.
ij½ºÆ®¸¦ »ç¿ëÇϸé pointer_to_const ÀÇ ÇüÇÑÁ¤¾î°¡ Á¦°ÅµÇ¾î pointer_to_char ·Î
º¯È¯Àº µÇÁö¸¸, ±×·¸´Ù°í const_char ÀÇ const Ư¼ºÀÌ ¾ø¾îÁö´Â °ÍÀº
¾Æ´Õ´Ï´Ù. µû¶ó¼ ÀϹÝÀûÀÎ °æ¿ì¶ó¸é pointer_to_char ÀÇ °ªÀ» º¯°æÇÏ´Â °ÍÀÌ
°¡´ÉÇϰÚÁö¸¸, ¿©±â¼´Â ºÒ°¡´ÉÇÕ´Ï´Ù. ƯÈ÷ ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº, ´ëºÎºÐÀÇ ÄÄÆÄÀÏ·¯°¡
À§Ã³·³ ÇüÇÑÁ¤¾î°¡ ¾ø´Â pointer_to_char ¿¡ ´ëÀÔÀÌ ÀÌ·ç¾îÁö´Â °ÍÀ» Àû¹ýÇÑ °ÍÀ¸·Î
ÆÇ´ÜÇÑ´Ù´Â Á¡ÀÔ´Ï´Ù. ÇÏÁö¸¸, ´ëºÎºÐ const ·Î ÇÑÁ¤ÀÌ µÇ´Â ´ë»óü´Â ·Ò (ROM) ¿¡ Á¸ÀçÇÒ °¡´É¼ºÀÌ
Å©±â ¶§¹®¿¡, ½ÇÇà½Ã ¿¡·¯ (run-time error) °¡ ¹ß»ýÇÏ°Ô µË´Ï´Ù. |
|
 |
 |
¸¶Áö¸·À¸·Î ÇÔ¼ö¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍ´Â ´Ù¸¥ ÇüÀÇ ÇÔ¼ö Æ÷ÀÎÅÍ·Î º¯È¯µÉ
¼ö ÀÖ½À´Ï´Ù. º¯È¯µÈ ÇÔ¼ö Æ÷ÀÎÅÍ¿¡ ÀÇÇÑ ÇÔ¼ö È£Ãâ¿¡ ´ëÇØ¼´Â ÄÄÆÄÀÏ·¯¸¶´Ù
´Ù¸£Áö¸¸ (implementation-dependent), º¯È¯µÇ¾ú´ø Æ÷ÀÎÅͰ¡ ±×°ÍÀÇ ¿ø·¡ µ¥ÀÌÅÍÇüÀ¸·Î µ¹¾Æ°£´Ù¸é
°á°ú´Â º¯È¯ÀüÀÇ Æ÷ÀÎÅÍ¿Í ¶È°°½À´Ï´Ù.
 |
 |
¢º ¿ªÀÚ ÁÖ
C90 Ç¥Áؾȿ¡ µû¸£¸é, º¯È¯µÈ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÅëÇØ ÇÔ¼ö°¡ È£ÃâµÉ ¶§,
±× ÇÔ¼öÀÇ µ¥ÀÌÅÍÇüÀÌ ½ÇÁ¦·Î È£ÃâµÇ´Â ÇÔ¼öÀÇ µ¥ÀÌÅÍÇü°ú ȣȯµÇÁö ¾Ê´Â
°æ¿ì, ±× ÇൿÀº Á¤ÀǵǾî ÀÖÁö ¾Ê½À´Ï´Ù (undefined).
|
|
 |
 |
¢¹ A6.7 Void
void ´ë»óüÀÇ (Á¸ÀçÇÏÁö ¾Ê´Â) °ªÀº ¾î¶°ÇÑ ¹æ¹ýÀ¸·Îµµ »ç¿ëµÉ ¼ö
¾øÀ¸¸ç, Àº¿¬ÁßÀÌµç ¾Æ´Ïµç void ÇüÀÌ ¾Æ´Ñ ´Ù¸¥ °ªÀ¸·Î º¯È¯µÉ ¼ö ¾ø½À´Ï´Ù.
void ¼ö½ÄÀº °ªÀÌ ¾ø´Ù´Â °ÍÀ» ³ªÅ¸³»±â ¶§¹®¿¡ ¿ÀÁ÷ °ªÀÌ ÇÊ¿ä¾ø´Â °÷¿¡¸¸
»ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, ¼ö½Ä¹® (expression statement) À̳ª ½°Ç¥¿¬»êÀÚÀÇ
ÁÂÃø ÇÇ¿¬»êÀÚ°¡ ÀÖ½À´Ï´Ù.
¼ö½ÄÀº cast ¿¡ ÀÇÇØ void ÇüÀ¸·Î º¯È¯µÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é,
¼ö½Ä¹®À¸·Î »ç¿ëµÇ´Â ÇÔ¼ö È£ÃâÀÇ °á°ú°ªÀ» ¹«½ÃÇØ ¹ö¸®´Â °æ¿ìÀÔ´Ï´Ù.
| |
'void' ´Â ÀÌ Ã¥ÀÇ ÃÊÆÇ¿¡¼´Â ³ª¿ÀÁö ¾Ê¾ÒÁö¸¸, ±× ÀÌÈÄ
ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â °ÍÀÔ´Ï´Ù. |
¢¹ A6.8 void Çü Æ÷ÀÎÅÍ (Pointer to Void)
¾î¶°ÇÑ ´ë»óü¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍÀÌµç °¡Áö°í ÀÖ´Â Á¤º¸ÀÇ ¼Õ½Ç¾øÀÌ void *
ÇüÀ¸·Î º¯È¯µÉ ¼ö ÀÖ½À´Ï´Ù. void Çü Æ÷ÀÎÅÍ·Î º¯È¯µÇ¾ú´Ù°¡ ´Ù½Ã ¿ø·¡
Æ÷ÀÎÅÍ·Î µ¹¾Æ¿Â´Ù¸é º»·¡ÀÇ Æ÷ÀÎÅÍ¿Í ¾Æ¹«·± Â÷À̰¡ ¾ø½À´Ï´Ù. A6.6 Àý¿¡¼
¼³¸íÇÑ, È®½ÇÇÑ cast ¸¦ ÇÊ¿ä·Î ÇÏ´Â Æ÷ÀÎÅÍ¿Í Æ÷ÀÎÅͰ£ÀÇ º¯È¯°ú´Â ´Þ¸®, void Çü
Æ÷ÀÎÅÍ´Â ´Ù¸¥ Æ÷ÀÎÅÍ¿¡ ´ëÀԵǴ °Í°ú ºñ±³ÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù.
| |
void Çü Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ÀÌ·¯ÇÑ ¼³¸íÀº »õ·Î¿î °ÍÀÔ´Ï´Ù;
Àü¿¡´Â char Çü Æ÷ÀÎÅͰ¡ ÀϹÝÀûÀÎ Æ÷ÀÎÅÍ ¿ªÇÒÀ» ¼öÇàÇß½À´Ï´Ù. ANSI Ç¥ÁؾÈÀº,
´Ù¸¥ Æ÷ÀÎÅÍÀÇ È¥¿ë¿¡´Â ¸í¹éÇÑ Ä³½ºÆ®¸¦ ¿ä±¸ÇÏ´Â °Í°ú´Â ´Þ¸®, ´Ù¸¥ ´ë»óü Æ÷ÀÎÅÍ¿Í
void Çü Æ÷ÀÎÅÍ¿ÍÀÇ ´ëÀÔ, ºñ±³ (relational) ¿¡´Â ¸¹Àº ¾Æ·®À» º£Ç®¾ú½À´Ï´Ù. |
|