ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : article>pointer2



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 Æ÷ÀÎÅÍ À̾߱â
1.1 for¹® ¿¹Á¦
1.2 while¹® ¿¹Á¦
1.3 Æ÷ÀÎÅÍ ¿¬»ê
1.4 Âü °í


1 Æ÷ÀÎÅÍ À̾߱â


ÀÛ¼ºÀÚ: mwyun(¸Û)

1.1 for¹® ¿¹Á¦


char *str; 
str = "hello"; 
 
for(; *str; str++) 
     printf("%sn", str); 
} 
 

1.2 while¹® ¿¹Á¦


/* *s´Â char Çü Æ÷ÀÎÅÍ, ¹®ÀÚ¿­ÀÌ µé¾îÀÖÀ½ */ 
while (*s) 
{ 
   /* »ý·« */ 
   ++s; 
} 
 

1.3 Æ÷ÀÎÅÍ ¿¬»ê


null('\0')Àº ¹®ÀÚ¿­À» ³¡À» ÀǹÌÇÕ´Ï´Ù.

°á±¹for¹® ¿¹Á¦¿¡¼­ Á¶°Ç½Ä¿¡ ÇØ´çÇÏ´Â ÄÚµå *strÀº °ð str¿¡ ÀÖ´Â µé¾îÀÖ´Â °ª(¹®ÀÚ)ÀÌ nullÀÌ ¾Æ´Ñ °æ¿ì °è¼Ó for¹®ÀÇ ½ºÅÜÀ» ÁøÇàÇÕ´Ï´Ù.

while¹® ¿¹Á¦µµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù.

strÀº ÁÖ¼Ò¸¦ °¡Áö°í ÀÖÀ¸¸é *strÀº ±× ÁÖ¼Ò°¡ °¡¸®Å°´Â ¸Þ¸ð¸®¿¡ ÀúÀåµÈ °ªÀÌ µË´Ï´Ù.

¶ÇÇÑ index(÷ÀÚ)¸¦ »ç¿ëÇÏ¿© str[i] <- ÀÌ·¸°Ô ¹è¿­ÀÇ ¿ø¼Ò¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.

i°¡ 3ÀÏ ¶§ &str[3]À̳ª (str+i)Àº °°Àº ÁÖ¼Ò¸¦ °¡¸®Å°¸ç, str[3]¿Í *(str+3)Àº ¸Þ¸ð¸®ÀÇ ³»¿ë(°ª)À» ÀǹÌÇÕ´Ï´Ù.

Áï Æ÷ÀÎÅÍ Áõ°¨Àº À妽º Áõ°¨ÇÏ°íµµ °°½À´Ï´Ù.

¶ÇÇÑ charÇü ¹è¿­À̹ǷΠstr++À̸é strÁÖ¼Ò+1¹ÙÀÌÆ® ÁÖ¼Ò¸¦ ³ªÅ¸³»´Â °Í(¸Þ¸ð¸® ¹øÁöÀÇ Áõ°¡)À̰í,
str--À̸é strÁÖ¼Ò-1¹ÙÀÌÆ® ÁÖ¼Ò¸¦ ³ªÅ¸³»´Â °Í(¸Þ¸ð¸® ¹øÁöÀÇ °¨¼Ò)ÀÔ´Ï´Ù.

char ÇüÀº ÀúÀå°ø°£ÀÌ 1¹ÙÀÌÆ®¸¦ Â÷ÁöÇϱ⠶§¹®¿¡ Æ÷ÀÎÅÍ´Â 1¹ÙÀÌÆ®¾¿ Áõ°¨ÇÏ°Ô µË´Ï´Ù.

¸¸¾à int Çü ¹è¿­ÀÎ °æ¿ì ÀúÀå °ø°£ÀÌ 4¹ÙÀÌÆ®¸¦ Â÷ÁöÇϱ⠶§¹®¿¡ Æ÷ÀÎÅÍ´Â 4¹ÙÀÌÆ®¾¿ Áõ°¨ÇÏ°Ô µË´Ï´Ù.

¿¹) char *str="hello"; 
 

str = 0x80000000(32bit ÁÖ¼Ò °ø°£ÀÎ °æ¿ì) À̸é
str++Àº charÇü ¹è¿­À̹ǷΠÆ÷ÀÎÅÍ´Â strÀÇ ÁÖ¼Ò+1¹ÙÀÌÆ®
=> str = 0x80000001(0x80000000+1)

str++; 
printf("%c\n", *str); 
=> e 
 

str--Àº charÇü ¹è¿­À̹ǷΠÆ÷ÀÎÅÍ´Â strÀÇ ÁÖ¼Ò-1¹ÙÀÌÆ®
=> str = 0x80000000(0x80000001-1)

str--; 
printf("%c\n", *str); 
=> h 
 

gdb °°Àº µð¹ö°Å·Î str º¯¼öÀÇ ¸Þ¸ð¸® ³»¿ëÀ» ´ýÇÁÇØ½Ã¸é ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.

str = 0x80000000 ÀÏ ¶§

   +-----+-----+-----+-----+-----+-----+  
   |  h  |  e  |  l  |  l  |  o  |  \0 | 
   +-----+-----+-----+-----+-----+-----+ 
   ^     ^     ^     ^     ^     ^     ^  
   |     |     |     |     |     |     |   
str+0 str+1 str+2 str+3 str+4 str+5 str+6  
 

°¢ ¿ø¼ÒÀÇ ÁÖ¼Ò °è»êÀº ´ÙÀ½°ú °°½À´Ï´Ù.

  index   ½ÃÀÛ ÁÖ¼Ò        ½ÇÁ¦ ÁÖ¼Ò 
    |         |              | 
    V         V              V 
str+0 = 0x80000000 + 0 = 0x80000000 
str+1 = 0x80000000 + 1 = 0x80000001 
str+2 = 0x80000000 + 2 = 0x80000002 
str+3 = 0x80000000 + 3 = 0x80000003 
str+4 = 0x80000000 + 4 = 0x80000004 
str+5 = 0x80000000 + 5 = 0x80000005 
 

  • index: ¹è¿­ ÷ÀÚ ¶Ç´Â ¿É¼Â

1.4 Âü °í

Âü°í·Î str+6Àº ¾²·¹±â°ªÀÌ µé¾îÀÖ´øÁö ¾Æ´Ï¸é ´Ù¸¥ º¯¼ö°¡ ±× ¸Þ¸ð¸® ¿µ¿ªÀ» ¾²°í ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.

±×·¯±â ¶§¹®¿¡ À߸ø Á¢±ÙÇÏ¸é ¿À¹öÇÃ·Î¿ì ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù.

ÀÌ·¸µí Ç×»ó ³²ÀÇ ¸Þ¸ð¸®¸¦ ħ¹üÇÏÁö ¾Ê´Â Á¤È®ÇÑ Æ÷ÀÎÅÍ ¿¬»ê ¹× ¸Þ¸ð¸® °ü¸®¸¦ ÇØ¾ßÇÕ´Ï´Ù.

¸Þ¸ð¸® ¸¯µµ ¸Þ¸ð¸® °ü¸®¸¦ À߸øÇؼ­ ¹ß»ýÇÑ ¹®Á¦Áß ÇϳªÀÔ´Ï´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.