ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 1 ¸Þ¸ð¸®
Çö´ëÀûÀÎ ÄÄÇ»ÅÍ´Â ÀÔ·Â, ¿¬»ê, Ãâ·ÂÀÇ 3°¡Áö °úÁ¤ÀÌ ºÐ¸®µÇ¾î ÀÖ´Ù. ÀÌ´Â Àΰ£ÀÇ »ý°¢ÇÏ´Â ±¸Á¶¿Í ºñ½ÁÇÏ´Ù. ¿©·¯ºÐÀÇ ´«¾Õ¿¡ ³¯¾Æ µé¸é, ´«À¸·Î À̸¦ È®ÀÎÇϰí (ÀÔ·Â), ³ú·Î Àü´ÞÇØ¼ °í¹ÎÀ» ÇÑ´ÙÀ½ (¿¬»ê), ´«À» °¨À» °ÇÁö ¾ó±¼À» µ¹¸±°ÇÁö¸¦ °áÁ¤ (Ãâ·Â) ÇÏ°Ô µÉ°ÍÀÌ´Ù. À̶§ ¸ðµç Á¤º¸´Â ³ú·Î Àü´ÞµÇ¾î¼, ³úÀÇ Æ¯Á¤ºÎÀ§¿¡ ÀúÀåµÈÈÄ¿¡ 󸮵ÊÀ» ¾Ë ¼ö ÀÖ´Ù. ÄÄÇ»ÅÍ ¿ª½Ã Űº¸µå, Çϵåµð½ºÅ©, CD µîÀ» ÅëÇØ¼ ÀÔ·ÂµÈ ¸ðµç Á¤º¸´Â ÀÏ´Ü ¸Þ¸ð¸®¿¡ ÀúÀåÀÌ µÈ ´ÙÀ½ CPU ¿¡ ÀÇÇØ¼ ¿¬»ê󸮸¦ Çϰí, ±× °á°ú¸¦ ¸ð´ÏÅ͵îÀ» ÅëÇØ¼ Ãâ·ÂÇÏ°Ô µÈ´Ù. 2 ¸Þ¸ð¸®ÀÇ ±¸Á¶
¸ðµç Á¤º¸¸¦ ÀÏ´Ü ¸Þ¸ð¸®¿¡ ÀúÀåÇÑ´Ù´Â °ÍÀº ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¸´Ù¸é ¸Þ¸ð¸®¸¦ Á¦¾îÇÏ´Â ±â´É¿ª½Ã ÇÊ¿ä·Î ÇÒ °ÍÀÌ´Ù. Áï µ¥ÀÌÅͰ¡ ÀúÀåµÉ ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¼, ÇØ´ç ¿µ¿ª¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇϰí, ´Ù½Ã µ¥ÀÌÅ͸¦ ²¨³»¿À´Â ÀÏÀÌ´Ù. À̸¦ À§Çؼ´Â µ¥ÀÌÅͰ¡ ¸Þ¸ð¸®ÀÇ ¾î´À ÁöÁ¡¿¡ ÀúÀåµÇ¾ú´ÂÁö¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ¾î¾ßÇÒ Çʿ䰡 ÀÖ´Ù. À̸¦ À§Çؼ Çö´ëÀÇ ÄÄÇ»ÅÍ ½Ã½ºÅÛÀº ¸Þ¸ð¸®¿¡ ÁÖ¼Ò¸¦ ºÎ¿©Çؼ »ç¿ëÇϰí ÀÖ´Ù. ÁÖ¼Ò´Â ¿ìÆíÇÔ°ú ¸Å¿ì ºñ½ÁÇÑ Á¡ÀÌ ÀÖ´Ù. ![]()
¿ìÆíÇÔ°ú ºñ½ÁÇÏ°Ô ÄÄÇ»ÅÍ´Â ¸Þ¸ð¸®¿¡ ÀÏ·ÃÀÇ ¼ýÀÚ·ÎµÈ ÁÖ¼Ò¸¦ ºÎ¿©Çؼ, µ¥ÀÌÅͰ¡ ÀúÀåµÈ À§Ä¡¸¦ ã°Ô µµ´Ï´Ù. ÀÌ ÁÖ¼Ò´Â 0ºÎÅͽÃÀÛÇÏ°Ô µÈ´Ù. ÁÖ¼ÒÀÇ ÃÖ¼Ò´ÜÀ§´Â byte ´Ù. ÀÌ·¸°Ô ÁÖ¼Ò¹æ½ÄÀ» äÅÃÇÑ ÀÌÀ¯´Â °£´ÜÇÑ °ü¸®°¡ °¡´ÉÇϸç, °ü¸®¸¦ À§ÇÑ µµ±¸¸¦ ½±°Ô ¸¸µé ¼ö Àֱ⠶§¹®ÀÌ´Ù. 3 Æ÷ÀÎÅÍ
ÀÌ·¸°Ô ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦ °ü¸®Çϱâ À§Çؼ, C¾ð¿¡¼¼ »ç¿ëÇÏ´Â µµ±¸°¡ ¹Ù·Î Æ÷ÀÎÅÍ´Ù. Æ÷ÀÎÅÍ´Â ¸Þ¸ð¸®»óÀÇ ÁÖ¼Ò°ªÀ» ÀúÀåÇϱâ À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î 4byte ÀÇ ÀúÀå°ø°£À» °¡Áö¸ç, º°Ç¥ *¸¦ ÀÌ¿ëÇØ¼ Æ÷ÀÎÅÍÇü º¯¼ö¸¦ ¼±¾ðÇÒ ¼ö°¡ ÀÖ´Ù. º¯¼ö¸í¾Õ¿¡ *¸¦ ºÙ¿©ÁÖ¸é Æ÷ÀÎÅÍÇü º¯¼ö°¡ µÈ´Ù. *data;
¿©±â¿¡¼ ÁÖ¸ñÇÒ Á¡Àº Æ÷ÀÎÅÍ´Â µ¥ÀÌÅͰ¡ ÀúÀåµÈ °÷ÀÇ ÁÖ¼Ò°ª¸¸À» °¡Áö°í ÀÖ´Ù´Â Á¡ÀÌ´Ù. ÇØ´ç ¿µ¿ªÀÇ µ¥ÀÌÅͰ¡ ¾î¶² ŸÀÔÀÎÁö¸¦ ¾Ë¼ö´Â ¾ø´Ù. ÇØ¼ ÁÖ¼Ò°¡ °¡¸®Å°´Â °÷¿¡ ÀúÀåµÈ µ¥ÀÌÅÍÀÇ µ¥ÀÌÅÍŸÀÔÀ» ¸í½ÃÇϱâ À§Çؼ *¿Í ÇÔ²² µ¥ÀÌÅÍ Å¸ÀÔÀ» ÇÔ²² »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î int Çüµ¥ÀÌÅͰ¡ ÀúÀåµÈ °÷ÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÇü º¯¼ö *data´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÈ´Ù. int *data;ÀÌÁ¦ ¿ì¸®´Â int Çü µ¥ÀÌÅͰ¡ ÀúÀåµÈ ¸Þ¸ð¸®»óÀÇ À§Ä¡¸¦ ¾Ë°Ô µÇ¾ú´Ù. ¶ÇÇÑ ÇØ´ç ¸Þ¸ð¸®¿¡ ÀúÀåµÉ µ¥ÀÌÅÍÀÇ Å¸ÀÔÀÌ int ÇüÀ̶õ°É ¾Ë°Ô µÇ¾úÀ¸¹Ç·Î, intÇü µ¥ÀÌÅ͸¦ ¸¶À½´ë·Î Á¦¾îÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ¿ì¸®´Â data ¸¦ int Çü Æ÷ÀÎÅÍ º¯¼ö¶ó°í ÇÑ´Ù.
¹®Á¦
4 ¸Þ¸ð¸® ÇÒ´ç
º¯¼ö´Â °ªÀ» ÀúÀåÇϱâ À§Çؼ »ç¿ëÇÑ´Ù. int Çü º¯¼ö data ¿¡ 4¸¦ ÀúÀåÇϰíÀÚ ÇÑ´Ù¸é ¾Æ·¡¿Í °°ÀÌ Äڵ带 ¸¸µé¸é µÉ °ÍÀÌ´Ù. int data; data = 4;
Æ÷ÀÎÅͺ¯¼ö ¿ª½Ã °ªÀ» ÀúÀåÇϱâ À§Çؼ »ç¿ëÇÑ´Ù. ±×·¯³ª ÀÌ °ªÀÌ ÁÖ¼Ò°ªÀ̶ó´Â ´Ù¼Ò ƯÀÌÇÑ ¸éÀÌ ÀÖ´Ù. ´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔÀÇ º¯¼öµéÀº ´ëÀÔ¿¬»êÀÚ¸¦ ÅëÇØ¼ »ç¿ëÀÚ°¡ Á÷Á¢ °ªÀ» ÀÔ·ÂÇÒ ¼ö ÀÖÁö¸¸, ÁÖ¼Ò°ªÀº ±×·¸°Ô ÇÒ ¼ö°¡ ¾ø´Ù. ¿Ö³ÄÇÏ¸é µ¥ÀÌÅͰ¡ ÀúÀåµÉ À§Ä¡´Â ´ÜÁö ¿î¿µÃ¼Á¦¸¸ÀÌ °áÁ¤ÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×·¯¹Ç·Î Æ÷ÀÎÅÍ¿¡ »ç¿ëµÉ ÁÖ¼Ò°ªÀ» ¿ì¸®°¡ Á÷Á¢ °áÁ¤ÇÏ´Â ´ë½Å¿¡, ¿î¿µÃ¼Á¦¿¡°Ô ¿äûÀ» ÇÏ°Ô µÈ´Ù.
ÀÌ ¿äûÀº ´ÙÀ½°ú °°Àº Àǹ̸¦ °¡Áø´Ù. µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§Çؼ ¸î byte Á¤µµÀÇ °ø°£ÀÌ ÇÊ¿äÇÕ´Ï´Ù. ÀÌ °ø°£À» ¸¸µé°í, ÀÌ °ø°£ÀÇ ÁÖ¼Ò¸¦ ¾Ë·ÁÁÖ¼¼¿ä.
À¯´Ð½º ¿î¿µÃ¼Á¦´Â ÇÁ·Î±×·¥ÀÌ ½±°Ô ÀÌ·¯ÇÑ ¸Þ¸ð¸®¸¦ ¿äûÇÒ ¼ö ÀÖµµ·Ï malloc(3) À̶ó´Â ÇÔ¼ö¸¦ Á¦°øÇϰí ÀÖ´Ù. malloc(3)ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ ÇÊ¿äÇÑ °ø°£¸¸ÅÀ» ¹ÙÀÌÆ® ´ÜÀ§·Î ¿äûÇϸé, ¿î¿µÃ¼Á¦´Â ±×¸¸ÅÀÇ °ø°£À» ¸Þ¸ð¸®¿¡¼ ã¾Æ³½´ÙÀ½, ÇØ´ç ¸Þ¸ð¸®¿µ¿ªÀÇ ÁÖ¼Ò°ªÀ» Æ÷ÀÎÅÍ µ¥ÀÌÅÍ Å¸ÀÔÀ¸·Î ¾Ë·ÁÁØ´Ù. ´ÙÀ½Àº malloc ÇÔ¼öÀÇ »ç¿ë¹ýÀÌ´Ù. #include <stdlib.h> void *malloc(size_t size);size_t ´Â typedef unsigned int size_t ·Î Á¤ÀǵǾî ÀÖ´Ù. ±×·¯¹Ç·Î ÃÖ´ë 4Gbyte Á¤µµÀÇ ¸Þ¸ð¸® ÇÒ´çÀÌ °¡´ÉÇÏ´Ù. ÇÁ·Î±×·¥ÀÌ Çѹø¿¡ »ç¿ë°¡´ÉÇÑ ¸Þ¸ð¸®ÀÇ ÃÑÅ©±â°¡ 4Gbyte´Ù ¶ó´Â ¸»À» µé¾îº¸¾ÒÀ» °ÍÀÌ´Ù. ÀÌ Á¦ÇÑÀº ¿©±â¿¡¼ »ý±ä´Ù. À̰ÍÀº ÀϹÝÀûÀÎ 32bit ÄÄÇ»ÅÍ/¿î¿µÃ¼Á¦ ½Ã½ºÅÛÀÇ °æ¿ìÀ̰í, 64bit ¿î¿µÃ¼Á¦¶ó¸é Å×¶ó´ÜÀ§ÀÇ ¸Þ¸ð¸® »ç¿ëÀÌ °¡´ÉÇÒ °ÍÀÌ´Ù. ¹¹ ±»ÀÌ 4Gbyte ÀÌ»óÀÇ ¸Þ¸ð¸®¸¦ ¾µÀÏÀÌ ÀÖÀ»·Á³ª ÇÏ°í »ý°¢ÇÒÁöµµ ¸ð¸£°ÚÁö¸¸, °ú°Å DOS ½ÃÀý 64k ·Îµµ ¸Þ¸ð¸®°¡ Â÷°í³ÑÄ£´Ù°í ÁÖÀåÇß´ø ÀûÀÌ ÀÖ¾úÀ½À» ±â¾ïÇØº¸±â ¹Ù¶õ´Ù. °í¼º´É/´ë¿ë·® ÇÁ·Î±×·¥ÀÇ ÃâÇöÀ¸·Î 64bit ÄÄÇ»ÆÃ ȯ°æÀÌ ¿äûÀÌ ¾Õ´ç°ÜÁö°í ÀÖ´Ù.
mallocÀ» È£ÃâÇßÀ» ¶§, ¸®ÅϵǴ °ªÀº ¸Þ¸ð¸®ÀÇ ÁÖ¼ÒÁ¤º¸¸¦ °¡Áö°í ÀÖ´Â Æ÷ÀÎÅÍÀÌ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ Ã¹¹øÂ° ÁÖ¼Ò¸¦ °¡¸®Å°°Ô µÈ´Ù. ![]()
±×·³ int Çü Æ÷ÀÎÅ͸¦ Çϳª ¸¸µé°í, ¿©±â¿¡ 5°³ÀÇ int Çü °ªÀÌ µé¾î°¥ ¼ö ÀÖ´Â ¸Þ¸ð¸® °ø°£À» ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ. #include <stdlib.h> int main() { int *idata; // int Çü Æ÷ÀÎÅÍ idata ÀÇ ¼±¾ð idata = malloc(sizeof(int) * 5); // ¸Þ¸ð¸® ÇÒ´ç. }sizeof´Â ÁÖ¾îÁø µ¥ÀÌÅÍŸÀÔÀÇ Å©±â¸¦ ¾Ë·ÁÁÖ±â À§Çؼ »ç¿ëÇϴ Ű¿öµå ¸í·É¾î´Ù. int´Â 4byteÀÇ Å©±â¸¦ °¡Áö¹Ç·Î, 4*5 = 20 ÇØ¼ 5°³ÀÇ int Çüµ¥ÀÌÅͰ¡ µé¾î°¡´Â °ø°£ÀÌ ¸¸µé¾îÁö°Ô µÈ´Ù. malloc ÇÔ¼ö´Â 20byte ¸¸Å Å©±âÀÇ ¸Þ¸ð¸®°ø°£À» È®º¸ÇÑ´ÙÀ½¿¡, ±× ÁÖ¼Ò¸¦ µÇµ¹·ÁÁØ´Ù. ÀÌ ÁÖ¼Ò°ªÀº Æ÷ÀÎÅÍÇü º¯¼ö idata¿¡ µé¾î°£´Ù. 5 ¼±¾ð½Ã Á¤ÀÇ
À§ÀÇ °æ¿ì malloc ¸¦ ÀÌ¿ëÇØ¼ ÇÁ·Î±×·¥ÀÇ ½ÇÇà Áß°£¿¡ ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇß´Ù. ÀÌ·¸°Ô Áß°£ Áß°£ ÇÊ¿äÇÒ¶§ ÇÒ´çÇÏ´Â °ÍÀ» µ¿ÀûÇÒ´çÀ̶ó°í ÇÑ´Ù. ±×·¸Áö ¾Ê°í, Æ÷ÀÎÅÍ º¯¼ö°¡ ¼±¾ðµÉ¶§ °ªÀ» Á¤ÀÇ ÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù. ¾Æ·¡´Â 9Àå¿¡¼ ´Ù·ç¾ú´ø, hello ÇÁ·Î±×·¥ÀÇ Æ÷ÀÎÅÍ ¹öÁ¯ÀÌ´Ù. #include <stdio.h> int main() { char *hello = "hello world\0"; printf("%s\n",hello); }ÀÌ °æ¿ì ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â ½ÃÁ¡¿¡¼ ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇÑ ´ÙÀ½, ÇØ´ç °ø°£¿¡ "hello world\0"À» ÀúÀåÇÑ ´ÙÀ½, ÀúÀåµÈ ÁÖ¼Ò¸¦ Æ÷ÀÎÅÍ º¯¼ö hello¿¡ ³Ñ°ÜÁÖ°Ô µÈ´Ù. ¸Þ¸ð¸®ÀÇ ±¸¼ºÀº ¹è¿°ú µ¿ÀÏÇÏ´Ù.
¹®Á¦
hello.c ÀÇ Æ÷ÀÎÆ® ¹öÁ¯À» ·çÇÁ¿Í ¹è¿Ã·ÀÚ¸¦ ÅëÇØ¼ ¹®ÀÚ¸¦ Ãâ·ÂÇϵµ·Ï ÇØº¸ÀÚ.
6 Æ÷ÀÎÅÍ¿¡ Á¢±ÙÇϱâ - ¹è¿Ã·ÀÚ ÀÌ¿ë![]()
ÀÚ ÀÌ·¸°Ô ÇØ¼ ¸Þ¸ð¸® °ø°£ÀÌ È®º¸µÇ°í, ±×¿¡ ´ëÇÑ ÁÖ¼Ò°ªµµ ¾Ë¾Æ¿Ô´Ù. ÀÌÁ¦ ÇØ´ç ÁÖ¼Ò¿¡ Á¢±ÙÇØ¼ °ªÀ» Àаųª ¾²¸é µÉ°ÍÀÌ´Ù. ¸Þ¸ð¸®°¡ ÇÒ´çµÈ À§ÀÇ ±×¸²À» º¸¸é ¾Ë°ÚÁö¸¸, ÇÒ´çµÈ Å©±â¸¸Å À妽º·Î Á¢±ÙÇÒ ¼ö ÀÖÀ½À» ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. À̰ÍÀº ¸¶Ä¡ ¹è¿°ú °°Àº Á¢±Ù±¸Á¶Àε¥, ½ÇÁ¦ ¹è¿°ú µ¿ÀÏÇÏ°Ô ¹è¿Ã·ÀÚ¸¦ ÀÌ¿ëÇØ¼ ¸Þ¸ð¸® °ø°£¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. À§ÀÇ malloc ÇÁ·Î±×·¥À» ¾à°£ ¼öÁ¤Çؼ 5°³ÀÇ °ø°£¿¡ 0ºÎÅÍ 5±îÁö ä¿ö³Öµµ·Ï ¸¸µé¾î º¸ÀÚ. #include <stdlib.h> int main() { int *idata; int i; idata = malloc(sizeof(int) * 5); for (i = 0; i < 5; i++) { idata[i] = i; } } 7 Æ÷ÀÎÅÍ Á¢±ÙÇϱâ - Æ÷ÀÎÅ͸¦ ÀÌ¿ë
À§ÀÇ ÇÁ·Î±×·¥Àº ¹è¿Ã·ÀÚ¸¦ ÀÌ¿ëÇØ¼ µ¥ÀÌÅÍ¿¡ Á¢±ÙÀ» ÇßÁö¸¸, Æ÷ÀÎÅÍ ¿¬»êÀ» ÀÌ¿ëÇØ¼ Á¢±ÙÇÒ ¼öµµ ÀÖ´Ù. Æ÷ÀÎÅ͵µ ÀÏ¹Ý µ¥ÀÌÅÍ Å¸ÀÔÀ̹ǷΠ+¿Í °°Àº ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Æ÷ÀÎÅÍ¿¡ +1 À» ÇÑ´Ù¸é, Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ÁÖ¼Ò°ªÀÌ 1¸¸Å Áõ°¡Çؼ ´ÙÀ½ °ªÀ» °¡¸®Å°°Ô µÉ°ÍÀÌ´Ù. Æ÷ÀÎÅÍ ¿¬»êÀº ´ÙÀ½°ú °°ÀÌ °£´ÜÇÏ°Ô ¼öÇàÇÒ ¼ö ÀÖ´Ù. char *cdata = "hello world\0"; cdata = cdata+1;cdata´Â "hello world\0" °¡ ÀúÀåµÈ ¸Þ¸ð¸® ¿µ¿ªÀÇ Ã¹¹øÂ° ÁÖ¼Ò°ªÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î, h¸¦ °¡¸®Å°°í ÀÖÀ» °ÍÀÌ´Ù. ¿©±â¿¡ + 1 À» ÇØÁشٸé, 1byte ¸¸Å Áõ°¡µÈ À§Ä¡ÀÎ e¸¦ °¡¸®Å°°Ô µÉ °ÍÀÌ´Ù. ¾Æ·¡ÀÇ ±×¸²À» º¸¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ![]()
¿©±â¿¡¼ È¥µ¿ÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¿Ö *cdata = *cdata+1; ÀÌ ¾Æ´Ï°í cdata = cdata+1; Àΰ¡ ÇÏ´Â Á¡ÀÏ °ÍÀÌ´Ù. *´Â ÂüÁ¶ ¿¬»êÀÚ·Î Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â °÷ÀÇ °ªÀ» ÂüÁ¶Çϰڴٴ °ÍÀ» ÀǹÌÇÑ´Ù. Áï *cdata´Â Æ÷ÀÎÅÍ º¯¼ö cdata°¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀÎ h¸¦ ÂüÁ¶Çϰڴٴ ÀǹÌÀ̸ç, *cdata+1 À» ÇØ¹ö¸®¸é, ÁÖ¼Ò¸¦ Áõ°¡½ÃŰ´Â°Ô ¾Æ´Ñ, °ª 'h'¿¡ +1À» ÇÏ´Â È¿°ú¸¦ Áö³»°Ô µÈ´Ù. 'h'¿¡ 1À» ´õÇϸé, 'i'°¡ µÈ´Ù. À̰ÍÀº ¿ì¸®°¡ ¿øÇÏ´Â ¹Ù°¡ ¾Æ´Ï´Ù.
¿ì¸®°¡ ¿øÇÏ´Â °ÍÀº Æ÷ÀÎÅÍ °ªÀÌ ¾Æ´Ñ ÁÖ¼Ò¸¦ 1¸¸Å Áõ°¡½ÃŰ´Â °ÍÀ̹ǷΠcdata+1À» ÇØ¾ß¸¸ ÇÑ´Ù. ¾Æ·¡ÀÇ Äڵ带 ½ÇÇà½ÃÄÑ º¸±â ¹Ù¶õ´Ù. #include <stdio.h> int main() { int *idata; int i; idata = (int *)malloc(sizeof(int)*5); for(i = 0; i < 5; i++) { idata[i] = i; } *idata = *idata+2; printf("%d\n", idata[0]); }*idata °¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀº 0ÀÌ´Ù. ¿©±â¿¡ 2¸¦ ´õÇÏ°Ô µÇ¹Ç·Î *idata = *idata+2 ´Â Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â ù¹øÂ° °ªÀ» 2·Î ¹Ù²Ù¾î ¹ö¸®°Ô µÉ °ÍÀÌ´Ù. idata = idata+2 ·Î ÇÏ°Ô µÇ¸é ¿ì¸®°¡ ¿øÇÏ´Â ¹Ù´ë·Î, 3¹øÂ° °ªÀÎ 2¸¦ Àоî¿À°Ô µÉ °ÍÀÌ´Ù. ´ÙÀ½°ú °°ÀÌ Äڵ带 º¯°æÇÑ ´ÙÀ½ ½ÇÇàÇØº¸µµ·Ï ÇÏÀÚ. idata = idata+2;
printf("%d\n", *idata);
ÀÌÁ¦ idata Æ÷ÀÎÅʹ óÀ½ ÁÖ¼Ò¿¡¼ µÎ¹øÂ° ¸¸Å Áõ°¡ÇÑ °÷À» °¡¸®Å°°Ô µÈ´Ù. ÀÌÁ¦ *idata¸¦ printf·Î Ãâ·ÂÇϸé, idata°¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ °ªÀÎ 2¸¦ Ãâ·ÂÇÑ´Ù. Á» ´õ Á¤È®È÷ ¼³¸íÇÏÀÚ¸é, idata+2¸¦ ÇÏ°Ô µÇ¸é, ÇöÀç ÁÖ¼Ò°ª¿¡¼ 4*2 ¸¸ÅÀ» ´õÇØÁÖ°Ô µÈ´Ù. ¿Ö³Ä¸é idata°¡ intÇü Æ÷ÀÎÅÍ Å¸ÀÔÀ̰í, int µ¥ÀÌÅÍ Å¸ÀÔÀº 4byte¸¦ °¡¸®Å°°Ô µÇ±â ¶§¹®ÀÌ´Ù. ¸¸¾à char ÇüÆ÷ÀÎÅͺ¯¼ö ¿´´Ù¸é 2¸¸Å¸¸ Áõ°¡ÇÏ°Ô µÉ °ÍÀÌ´Ù.
Æ÷ÀÎÅÍ¿¬»ê¿¡ ÀÖ¾î¼ µ¡¼À¿¬»êÀº ¸Å¿ì ÀÚÁÖ »ç¿ëµÈ´Ù. ±×·¡¼ Áõ°¡¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇϰí ÀÖ´Ù. idata = idata+2´Â ´ÙÀ½°ú °°ÀÌ º¯°æÇÒ ¼ö ÀÖ´Ù. *idata += 2;
ÀÚ ±×·³ idataÀÇ ¸ðµç °ªÀ» Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. #include <stdio.h> int main() { int *idata; int i; idata = (int *)malloc(sizeof(int)*5); for(i = 0; i < 5; i++) { idata[i] = i; } for (i = 0; i < 5; i++, *idata++) { printf("%d\n", *idata); } } 8 ¹è¿°ú Æ÷ÀÎÅÍ
¹è¿°ú Æ÷ÀÎÅÍ´Â ±âº»ÀûÀ¸·Î µ¿ÀÏÇÑ ¸Þ¸ð¸® ±¸Á¶¸¦ °¡Áø´Ù. ¶§¹®¿¡ Æ÷ÀÎÅ͸¦ ¹è¿Ã³·³ »ç¿ëÇÒ ¼ö ÀÖ´Â °Í°ú ¸¶Âù°¡Áö·Î, ¹è¿À» Æ÷ÀÎÅÍó·³ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ¹è¿À» »ç¿ëÇØ¼ µ¥ÀÌÅ͸¦ ÀúÀåÇß´Ù°í ÇÏ´õ¶óµµ °á±¹¿¡´Â ¸Þ¸ð¸®»óÀÇ ÁÖ¼Ò¸¦ ÀÌ¿ëÇØ¼ µ¥ÀÌÅ͸¦ ²¨³»¿À´Â °ÍÀ̱⠶§¹®ÀÌ´Ù. ÀÌ¹Ì ¾Õ¿¡¼µµ Æ÷ÀÎÅÍ¿Í ¹è¿À» ÇÔ²² ¾²´Â °æ¿ì¸¦ ºÃÀ¸¹Ç·Î, ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
¿ì¸®´Â µ¥ÀÌÅÍÀÇ ÁÖ¼Ò°ªÀ» ¾ò¾î¿À±â À§ÇÑ ÁÖ¼Ò ¿¬»êÀÚ¸¦ ÀÌ¿ëÇØ¼ µ¥ÀÌÅͰ¡ ÀúÀåµÈ °÷ÀÇ ÁÖ¼Ò°ªÀ» ¾ò¾î¿Ã ¼ö°¡ ÀÖ´Ù. ÁÖ¼Ò ¿¬»êÀÚ´Â &¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ´ÙÀ½Àº hello ÇÁ·Î±×·¥ÀÇ ¹è¿ ¹öÀüÀ¸·Î ¹è¿º¯¼ö¿¡¼ ÁÖ¼Ò¿¬»êÀÚ¸¦ ÀÌ¿ëÇØ¼ Æ÷ÀÎÅ͸¦ ¾ò¾î¿À´Â ¹ýÀ» º¸¿©ÁÖ°í ÀÖ´Ù. #include <stdio.h> int main() { char hello[] = "hello world\0"; char *cdata1; cdata1 = &hello[0]; printf("%s\n",cdata1); }À§ÀÇ ÇÁ·Î±×·¥À» ¾à°£ ¼öÁ¤Çؼ char *cdata2 ¶ó´Â Æ÷ÀÎÅÍ º¯¼ö¸¦ ¸¸µé°í, wÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°µµ·Ï ÇØº¸ÀÚ. ¾Æ·¡¿Í °°ÀÌ °£´ÜÇÏ°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ¾î¶² °á°ú°¡ Ãâ·ÂµÉÁö¸¦ ¿¹ÃøÇØ º¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ÀÇ ±×¸²À» º¸¸é ´õ¿í ½±°Ô °á°ú¸¦ ¿¹ÃøÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ![]() #include <stdio.h> int main() { char hello[] = "hello world\0"; char *cdata2; cdata2 = &hello[6]; printf("%s\n",cdata2); } 9 Æ÷ÀÎÅÍ¿¡¼ »ç¿ëµÇ´Â ¿¬»êµé
¾Õ¿¡¼ ÀÌ¹Ì Æ÷ÀÎÅÍ¿¡ »ç¿ëµÇ´Â ¿¬»êÀÚµé°ú Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇØ¼ ÇÒ¼ö ÀÖ´Â ¿¬»ê¿¡ ´ëÇØ¼ ¾Ë¾ÆºÃ´Ù. À̵éÀº ¸Å¿ì Áß¿äÇϹǷΠÁ¤¸®ÇÏ´Â Â÷¿ø¿¡¼ ´Ù½Ã ¼³¸íÇØº¸µµ·Ï ÇϰڴÙ. 9.1 ÂüÁ¶ ¿¬»êÀÚ
ÂüÁ¶ ¿¬»êÀÚ´Â *·Î ÇØ´ç ÁÖ¼Ò°¡ °¡¸®Å°´Â °÷ÀÇ °ªÀ» ÂüÁ¶ÇÏ¸ç ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. #include <stdio.h> int main() { char *data = "hello world\0"; int i; char *cp = data; for (i = 0;;i++) { if (*data == '\0') break; // data°¡ °¡¸®Å°´Â ÁÖ¼Ò°¡ ÂüÁ¶ÇÏ´Â °ªÀÌ '\0'ÀÌ¸é ·çÇÁ¸¦ ºüÁ®³ª¿Â´Ù. printf("%c\n", *data); // ÂüÁ¶ ¿¬»êÀÚ¸¦ ÀÌ¿ë data°¡ °¡¸®Å°´Â ÁÖ¼ÒÀÇ ÂüÁ¶°ªÀ» Ãâ·ÂÇÑ´Ù. *data++; // Áõ°¡¿¬»êÀÚ¸¦ ÀÌ¿ëÇØ¼ Æ÷ÀÎÅ͸¦ 1¸¸Å Áõ°¡½ÃŲ´Ù. } printf("============\n"); data = cp; for (i = 0;;i++) { if (*data == '\0') break; // ÁÖ¼ÒÀÇ ÂüÁ¶°ªÀÌ '\0'ÀÌ¸é ·çÇÁ¸¦ ºüÁ®³ª¿Â´Ù. printf("%s\n", data); // Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â °÷ÀÇ µ¥ÀÌÅ͸¦ Ãâ·ÂÇÑ´Ù. // %s´Â '\0'À» ¸¸³ª±â Àü±îÁöÀÇ µ¥ÀÌÅ͸¦ ȸ鿡 Ãâ·ÂÇÑ´Ù. *data++; } }À§ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ Ãâ·ÂÇÑ´Ù. h e l l o w o r l d ============ hello world ello world llo world lo world o world world world orld rld ld d¿Ö ÀÌ·± °á°ú°¡ ³ª¿À´ÂÁö ÀÌÇØÇÏ´Â°Ç ±×¸® ¾î·ÆÁö ¾ÊÀ¸¸®¶ó »ý°¢µÈ´Ù. 9.2 ÁÖ¼Ò ¿¬»êÀÚ
¾î¶² °ªÀÌ ÀúÀåµÈ °÷ÀÇ ÁÖ¼Ò¸¦ ¾ò¾î¿À±â À§Çؼ »ç¿ëÇÏ´Â ¿¬»êÀÚÀÌ´Ù. ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. char *hello = "hello world";
char *data;
data = &hello[0];
printf("%s\n", data); // hello world °¡ Ãâ·ÂµÈ´Ù.
data = &hello[6];
printf("%s\n", data); // world°¡ Ãâ·ÂµÈ´Ù.
Æ÷ÀÎÅÍ º¯¼ö¿¡ µé¾î°¡´Â °ÍÀº °ªÀÌ ÀúÀåµÈ µ¥ÀÌÅÍÀÇ ÁÖ¼ÒÀ̹ǷÎ, ÁÖ¼Ò¿¬»êÀÚ &¸¦ ÀÌ¿ëÇØ¼ ¾ò¾î¿Â ÁÖ¼Ò¸¦ Æ÷ÀÎÅÍ º¯¼ö¿¡ ´ëÀÔÇÒ ¼ö ÀÖ°Ô µÈ´Ù.9.3 µ¡¼À¿¬»ê
Æ÷ÀÎÅÍ´Â µ¡¼À¿¬»êÀÌ °¡´ÉÇÏ´Ù. ¿Ö³ÄÇϸé ÀúÀåµÈ µ¥ÀÌÅͰ¡ ÁÖ¼ÒÀ̱⠶§¹®ÀÌ´Ù. ÁÖ¼Ò¿¡ ¼ýÀÚ¸¦ ´õÇÏ´Â ¹æ½ÄÀ¸·Î ¸Þ¸ð¸®ÀÇ ´ÙÀ½À§Ä¡¿¡ ÀÖ´Â ÁÖ¼Ò¸¦ ¾ò¾î¿Ã ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀÌ·¯ÇÑ µ¡¼À¿¬»êÀÌ °¡´ÉÇѰÇ, µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ¶§ ¿¬¼ÓµÈ °ø°£¿¡ ÇÒ´çÇϱ⠶§¹®ÀÌ´Ù. À̸¦Å׸é ÁÖ¼Ò+1 ÇÏ¸é ´ÙÀ½ ÁÖ¼Ò¸¦ °¡¸®Å°°Ô µÈ´Ù. char *hello = "hello world";
printf("%s\n", hello+1);
¸¶Âù°¡Áö·Î Æ÷ÀÎÅÍ º¯¼ö³¢¸® ´õÇϰųª »©´Â °Íµµ °¡´ÉÇÏ´Ù. char *hello = "hello world\0";
char *fp = hello;
char *sp = hello+6;
printf("%d\n", sp-fp);
¸Þ¸ð¸® »ó¿¡¼ sp¿Í fpÀÇ °Å¸®´Â 6ÀÏ °ÍÀÌ´Ù. ±×·¯¹Ç·Î µÎ°³ÀÇ Æ÷ÀÎÅ͸¦ »« °á°ú·Î 6ÀÌ Ãâ·ÂµÉ °ÍÀÌ´Ù. ÀÌ·± Æ÷ÀÎÅÍ ¿¬»êÀ» ¾îµð¿¡ ½á¸ÔÀ» ¼ö ÀÖÀ»Áö °¨ÀÌ ÀâÈ÷Áö ¾ÊÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¡¼ Æ÷ÀÎÅÍ ¿¬»êÀ» ÀÌ¿ëÇÑ °£´ÜÇÑ ¿¹Á¦ÇÁ·Î±×·¥À» ¸¸µé¾î º¸¾Ò´Ù. ¾Æ·¡ÀÇ ¿¹Á¦ ÇÁ·Î±×·¥Àº "::" »çÀÌ¿¡ ÀÖ´Â ¹®ÀÚ¸¸À» ¾ò¾î¿À´Â ÇÁ·Î±×·¥ÀÌ´Ù.#include <stdio.h> int main() { char *hello = "aaa::data::bbb\0"; char *org = hello; char *fp; char *sp; char buf[10] = {'\0',}; fp = strstr(hello, "::"); printf("%s\n",fp); // fp´Â ::data::bbb¸¦ °¡¸®Å²´Ù. sp = strstr(fp+2, "::"); // fp+2 ´Â data::bbb ÀÌ´Ù. printf("%s\n",sp); // ±×·¯¹Ç·Î sp´Â ::bbb°¡ µÈ´Ù. memcpy(buf,fp+2,(sp - fp)-2); // fp+2´Â data::bbb ÀÌ´Ù. // sp - fp ´Â 6ÀÌ´Ù. ¿©±â¿¡´Â "::"µµ Æ÷ÇԵǾî ÀÖÀ¸¹Ç·Î -2¸¦ ÇØÁØ´Ù. // °á±¹ data::bbb ¿¡¼ 4¸¸ÅÀ¸ Å©±âÀÇ µ¥ÀÌÅ͸¦ buf¿¡ º¹»çÇÑ´Ù. printf("%s\n",buf); // ±×·¯¹Ç·Î data°¡ Ãâ·ÂµÈ´Ù. }strstr(3) Àº ÁÖ¾îÁø ¹®ÀÚ¿À» ã´Â ÇÔ¼ö·Î, ¹®ÀÚ¿ÀÌ ¹ß°ßµÈ À§Ä¡ÀÇ Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. memcpy(3)´Â µ¥ÀÌÅ͸¦ Á¤ÇØÁø Å©±â¸¸Å º¹»çÇϱâ À§Çؼ »ç¿ëÇÏ´Â ÇÔ¼ö´Ù. 10 ´ÙÂ÷¿ø Æ÷ÀÎÅÍ
¹è¿°ú ¸¶Âù°¡Áö·Î ´ÙÂ÷¿ø Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù. ¸»ÀÌ ´ÙÂ÷¿øÀ̰í, 3Â÷¿ø ÀÌ»óÀ» ³Ñ¾î°¡¸é Àΰ£ÀÌ ÀÎÁöÇϱⰡ ¸Å¿ì ¾î·Æ±â ¶§¹®¿¡ - ¿ì¸®´Â 3Â÷¿ø °ø°£¿¡ »ì°í ÀÖÁö¸¸ 3Â÷¿øÀ» ¸Ó¸®·Î ±×·Á³»´Â°Ç ½¬¿îÀÏÀÌ ¾Æ´Ï´Ù. 3Â÷¿ø Àü·« ½Ã¹Ä·¹À̼ÇÀÌ ÄÁÆ®·ÑÇϱ⠱î´Ù·Î¿î ÀÌÀ¯°¡ ¿©±â¿¡ ÀÖ´Ù. - ÀϹÝÀûÀ¸·Î ´ÙÂ÷¿ø Æ÷ÀÎÅͶõ 2Â÷¿ø Æ÷ÀÎÅ͸¸À» °¡¸®Å²´Ù.
Æ÷ÀÎÅÍ´Â µ¥ÀÌÅͰ¡ ÀúÀåµÈ ÁÖ¼Ò¸¦ °¡¸®Å°´Â µ¥ÀÌÅÍ Å¸ÀÔÀÌ´Ù. ÀÌ´Â ¾î¶°ÇÑ Á¾·ùÀÇ µ¥ÀÌÅÍŸÀÔÀÌ¶óµµ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÇ »ý¼ºÀÌ °¡´ÉÇÔÀ» ¾ê±âÇÑ´Ù. int Çü Æ÷ÀÎÅÍ, float Çü Æ÷ÀÎÅͰ¡ ÁÁÀº ¿¹°¡ µÇ°Ú´Ù. 2Â÷¿ø Æ÷ÀÎÅÍ´Â Æ÷ÀÎÅÍ µ¥ÀÌÅÍ Å¸ÀÔÀ» ¸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍÀÌ´Ù. ÀÌ·¯ÇÑ Æ¯Â¡ ¶§¹®¿¡ Æ÷ÀÎÅÍÀÇ Æ÷ÀÎÅͶó°í ºÎ¸£±âµµ ÇÑ´Ù. 2Â÷¿ø Æ÷ÀÎÅÍÀÇ °¡Àå ´ÜÀûÀÎ ¾ê´Â ¶óÀδÜÀ§ ÆíÁý±â¸¦ ¿¹·Î µé ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¾Æ·¡¿Í °°Àº ¹®ÀåÀÌ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ. Hello World!! My name is yundream. What's your name. Thank you.
ÀÌ ¹®ÀåÀ» °¢°¢ÀÇ ¶óÀδÜÀ§·Î ÀúÀåÀ» ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù°í °¡Á¤ÇØ º¸ÀÚ. ±×·¸´Ù¸é 4°³ÀÇ char Çü Æ÷ÀÎÅͰ¡ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ÀÌÁ¦ ÀÌ 4°³ÀÇ char Çü Æ÷ÀÎÅÍ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ Æ÷ÀÎÅͺ¯¼ö¸¦ ¸¸µé¸é µÉ°ÍÀÌ´Ù. Æ÷ÀÎÅ͸¦ ÀúÀåÇÏ´Â Æ÷ÀÎÅͺ¯¼öÀÎ ¼ÀÀÌ´Ù. Æ÷ÀÎÅÍÀÇ Æ÷ÀÎÅͺ¯¼ö´Â º°Ç¥¸¦ Çϳª ´õ ºÙÀÌ´Â °ÍÀ¸·Î °£´ÜÈ÷ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. À§ ¿¹ÀÇ °æ¿ì char Æ÷ÀÎÅ͸¦ ÀúÀåÇϱâ À§ÇÑ Æ÷ÀÎÅÍ´Â ¾Æ·¡¿Í °°ÀÌ ¼±¾ðÇÒ ¼ö ÀÖ´Ù. char **data;Â÷¿øÀÌ ´Ã¾î³¯ ¼ö·Ï ±×¸¸ÅÀÇ º°Ç¥¸¦ ºÙ¿©ÁÖ¸é µÈ´Ù. »ç¿ëÇÒÀÏÀÌ °ÅÀÇ ¾ø°ÚÁö¸¸, 3Â÷¿ø Æ÷ÀÎÅÍ´Â ´ÙÀ½°ú °°´Ù. char ***data;
±×·³ 2Â÷¿ø Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇØ¼ À§ÀÇ ¹®ÀåÀ» Ãâ·ÂÇÏ´Â ÁÙ´ÜÀ§ Ãâ·Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸ÀÚ. Æ÷ÀÎÅÍÇü º¯¼öÀÇ À̸§Àº char **data·Î ¼±¾ðÇÑ´Ù. ¼±¾ðÀ» Çß´Ù¸é, ¸Þ¸ð¸® ÇÒ´çÀ» ÇØ¾ß ÇÒ°ÍÀÌ´Ù. 2Â÷¿ø Æ÷ÀÎÅÍ À̹ǷΠ2¹øÀÇ ¸Þ¸ð¸® ÇÒ´çÀÌ ÀÌ·ç¾îÁ®¾ß ÇÑ´Ù.
char **data; data = malloc(sizeof(char *)*4);µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ °ø°£À» ÇÒ´çÇÏ·Á¸é, µ¥ÀÌÅÍ Å¸ÀÔÀÇ Å©±â¸¦ ¾Ë°í ÀÖ¾î¾ß ÇÑ´Ù. ¾Õ¼ sizeof¸¦ ÀÌ¿ëÇÏ¸é µ¥ÀÌÅÍ Å¸ÀÔÀÇ Å©±â¸¦ ¾ò¾î¿Ã ¼ö ÀÖÀ½À» ¾ð±ÞÇß´Ù. ¿ì¸®°¡ ÀúÀåÇϱâ À§ÇÑ µ¥ÀÌÅÍ Å¸ÀÔÀº ¹®ÀÚÇü Æ÷ÀÎÅÍÀ̹ǷΠsizof(char *)¸¦ ÀÌ¿ëÇØ¼ Å©±â¸¦ ¾ò¾î¿Ã¼ö ÀÖ´Ù. ÀÌ°Ô 4°³°¡ ÇÊ¿äÇϹǷΠ*4¸¦ ÇØÁÖ¸é 4°³ÀÇ ¹®ÀÚÇü Æ÷ÀÎÅÍ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ °ø°£À» ÇÒ´ç¹Þ°Ô µÈ´Ù. Æ÷ÀÎÅÍ µ¥ÀÌÅÍ Å¸ÀÔÀÇ Å©±â´Â 4 À̹ǷΠ16byte ¸¸ÅÀÇ °ø°£À» ÇÒ´ç¹Þ°Ô µÈ´Ù.
ÀÌÁ¦ 4°³ÀÇ ¹®ÀÚÇü Æ÷ÀÎÅͰ¡ »ç¿ëÇÒ °ø°£À» ÇÒ´çÇϰí, ±× ÁÖ¼Ò°ª(Æ÷ÀÎÅÍ)¸¦ ¾ò¾î¿Í¾ß ÇÒ Â÷·Ê´Ù. ¿øÄ¢ÀûÀ¸·Î ÇÏÀÚ¸é, °¢ ¹®ÀÚ¿ÀÇ Å©±â¸¸Å ´Ù¸£°Ô ÇÒ´çÇØ¾ß °ÚÀ¸³ª, ±×·¸°Ô ÇÏ¸é ±ÍÂúÀ¸´Ï, ¸ðµç ¹®ÀÚ¿À» ³Ö±â¿¡ ÃæºÐÇÏ´Ù°í »ý°¢µÇ´Â 25byte ¸¦ µ¿ÀÏÇÏ°Ô ÇÒ´çÇØº¸µµ·Ï ÇϰڴÙ. for ·çÇÁ¹®À» ÀÌ¿ëÇÏ¸é °£´ÜÇÏ°Ô ÇÒ´çÇÒ ¼ö ÀÖ´Ù. char **data
data = malloc(sizeof(char *)*4);
for (i = 0; i < 4; i++)
{
*data = malloc(sizeof(char) * 25);
*data++;
}
![]()
ÀÌ·¸°Ô ÇØ¼ 25 byte ¸¸ÅÀÇ °ø°£ÀÌ ÇÒ´çµÇ¾ú´Ù. ¸¸¾à 3Â÷¿ø Æ÷ÀÎÅͶó¸é 3¹øÀÇ ¸Þ¸ð¸® ÇÒ´çÀÌ ÀÌ·ç¾îÁ®¾ß ÇÒ°ÍÀÌ´Ù. ±×·±µ¥ ¼ÖÁ÷È÷ 2¹øÀÇ ¸Þ¸ð¸® ÇÒ´çÀÌ ÀÌ·ç¾îÁö´Â 2Â÷¿ø Æ÷ÀÎÅ͵µ ÀÌÇØÇϱⰡ ½±Áö ¾ÊÀ» °Çµ¥, 3Â÷¿ø Æ÷ÀÎÅ͸¦ ÀÌÇØÇϱâ¶õ Á¤¸» Èûµé °ÍÀÌ´Ù. ÇÁ·Î±×·¥À» ¸¸µé¶§´Â Ư¼öÇÑ °æ¿ì°¡ ¾Æ´Ï¸é °¡´ÉÇÑ "ÀÌÇØÇϱ⠽¬¿î ÄÚµå"¸¦ ÀÛ¼ºÇÏ´Â ¹æÇâÀ¸·Î °¡¾ß ÇÑ´Ù´Â Á¡¿¡¼, 3Â÷¿ø ÀÌ»óÀÇ Æ÷ÀÎÅÍ´Â °í·ÁÇÏÁö ¾Ê´Â°Ô ÁÁÀ» °ÍÀÌ´Ù. ½ÇÁ¦·Î 3Â÷¿ø ÀÌ»óÀÇ Æ÷ÀÎÅ͸¦ º¼ ¼ö ÀÖ´Â °æ¿ì´Â °ÅÀÇ ¾øÀ» °ÍÀÌ´Ù. ÇÊÀÚ ¿ª½Ã 3Â÷¿ø Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥À» º» ±â¾ïÀº °ÅÀÇ ¾ø´Ù.
¸Þ¸ð¸® »ó¿¡¼ÀÇ ½ÇÁúÀûÀÎ µ¥ÀÌÅͰø°£ ÇҴ籸Á¶´Â ¾Æ·¡ ±×¸²°ú °°À» °ÍÀÌ´Ù. ![]()
´ÙÀ½Àº ¿Ï¼ºµÈ ÇÁ·Î±×·¥ÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ À̸§Àº point2.c·Î ÇϰڴÙ. #include <unistd.h> int main() { char **data; char **org; int i; data = (void *)malloc(sizeof(char *)*4); // 4°³ÀÇ Æ÷ÀÎÅ͸¦ ÀúÀåÇϱâ À§ÇÑ ¸Þ¸ð¸® °ø°£ È®º¸ org = data; // ¿ø·¡ Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ ÀúÀåÇϱâ À§ÇÑ ¿ëµµ. for (i = 0; i < 4; i++) { *data = malloc(sizeof(char)*25); // °¢°¢ÀÇ Æ÷ÀÎÅÍ¿¡ ÃÖ´ë 25°³ÀÇ char µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ *data++; // °ø°£À» È®º¸ÇÑ´Ù. } data = org; strcpy(*data,"hello world!!\0"); *data++; strcpy(*data,"My name is yundream.\0"); *data++; strcpy(*data,"What's your name.\0"); *data++; strcpy(*data,"Thank you.\0"); data = org; for (i = 0; i < 4; i++) { printf("%s\n", *data); *data++; } } 11 ÇÒ´çµÇÁö ¾ÊÀº Æ÷ÀÎÅÍ
±×·¸´Ù¸é ÇÒ´çµÇÁö ¾ÊÀº Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¸é ¾î¶»°Ô µÉ°¡. ÀÌÀüÀå¿¡¼ °ªÀÌ ÇÒ´çµÇÁö ¾ÊÀº º¯¼ö´Â ¾Ë¼ö¾ø´Â °ªÀÌ µé¾îÀÖ´Ù´Â °ÍÀ» ¹è¿ü¾ú´Ù. ¸Þ¸ð¸®°ø°£À» ¿äû¹ÞÀº ¿î¿µÃ¼Á¦´Â ¸Þ¸ð¸® °ø°£¸¸ ÇÒ´çÇÏÁö, ±× ¸Þ¸ð¸® °ø°£À» 0 µîÀ¸·Î ÃʱâÈ ½ÃÄÑÁÖ´Â ÀÏÀº ÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ¼±¾ð½Ã °ªÀ» ÃʱâÈ ½ÃÄÑÁÖ´Â °í¼öÁØ ¾ð¾îµé Java, PHP, Perl µîÀÇ C º¸´Ù ³ôÀº ¼öÁØÀÇ ¾ð¾îµéÀº ¼±¾ð°ú µ¿½Ã¿¡ Ãʱâȸ¦ ½ÃÄÑÁØ´Ù. ±×·¯³ª C´Â ÃʱâȽÃÄÑÁÖÁö ¾Ê´Â´Ù. int a; ¸¦ ¼±¾ðÇßÀ¸´Ï a¿¡´Â 0ÀÌ µé¾îÀÖÀ» °Å¶ó°í »ý°¢Çß´Ù°¡´Â ¹ö±×¸¦ °¡Áø ÇÁ·Î±×·¥À» ¸¸µé°Ô µÈ´Ù.
Æ÷ÀÎÅͺ¯¼öµµ ¸¶Âù°¡Áö·Î, ¾î¶² °ªÀ» °¡Áö°í ÀÖÀ»Áö ¾Ë¼ö ¾ø´Ù. ´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔ¿¡ ºñÇØ¼ ´õ¿í Ä¡¸íÀûÀΰÍÀº ÁÖ¼Ò°ªÀ» °¡Áö°í ÀÖ´Ù´Â Á¡ÀÌ´Ù. ¾Ë¼ö ¾ø´Â ÁÖ¼Ò°ªÀÌ µé¾îÀÖ´Ù´Â ¶æÀε¥, ÀÌ ÁÖ¼Ò°ªÀÌ ´Ù¸¥ ÇÁ·Î¼¼½º°¡ »ç¿ëÁßÀÎ ÁÖ¼Ò°ªÀÏ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¿©±â¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ·Á°í ½ÃµµÇÒ°æ¿ì ÇÁ·Î±×·¥ÀÌ Á×¾î¹ö¸®°Ô µÈ´Ù. ±×·¯¹Ç·Î Æ÷ÀÎÅÍ´Â »ç¿ëÇϱâÀü¿¡ ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇØ¾ß ÇÑ´Ù. ¾Æ·¡ÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ°í ½ÇÇà½ÃŰ¸é ºñÁ¤»ó Á¾·áµÇ¾î ¹ö¸± °ÍÀÌ´Ù. int main() { char *data; strcpy(data, "hello world\0"); }¹Ýµå½Ã malloc() ÇÔ¼öµîÀ» ÀÌ¿ëÇØ¼, ¸Þ¸ð¸®¸¦ ÇÒ´ç¹Þ¾Æ¾ß µÈ´Ù. 12 ¼±¾ð½Ã Æ÷ÀÎÅÍÀÇ ÃʱâÈ
int a; ¶ó´Â °ªÀ» ¼±¾ðÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ±×³É ¼±¾ð¸¸ ÇÒ ¼öµµ ÀÖ°ÚÁö¸¸, ¾î¶² °ªÀÌ µé¾î°¡ ÀÖ´ÂÁö ¾Ë ¼ö ¾ø°í, ¶§¹®¿¡ À߸øµÈ ÇÁ·Î±×·¥À» ¸¸µé ¼öµµ ÀÖ´Ù. ¿¹¸¦µéÀÚ¸é ´ÙÀ½°ú °°Àº °æ¿ì´Ù. int a;
...
...
if (a ==0)
{
// ÀÌ·±Àú·± ÄÚµåµé
...
}
a¿¡´Â ¾Ë ¼ö ¾ø´Â °ªÀÌ µé¾î°¡ ÀÖÀ¸¹Ç·Î À߸øµÈ °á°ú¸¦ Ãâ·ÂÇÒ °ÍÀÌ´Ù. ÀÌ·± ½Ç¼ö´Â ±×´ÙÁö ¸¹ÀÌ ¹ß»ýÇÏÁø ¾Ê°ÚÁö¸¸, ¹Ì¿¬¿¡ ¿¹¹æÇÏ´Â Â÷¿ø¿¡¼ ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ´Â °ªÀ¸·Î ÃʱâÈ ½ÃÄÑÁÙ Çʿ䰡 ÀÖ´Ù. int ÇüÀ̶ó¸é 0 ÀÌ µÉ°ÍÀÌ´Ù.int a =0; float b = 0.0F;
Æ÷ÀÎÅÍÀÇ °æ¿ì¿¡´Â NULLÀ̶ó´Â °ÍÀ» »ç¿ëÇÑ´Ù. À̰ÍÀº ÇÒ´çµÇÁö ¾Ê¾ÒÀ½À» ÀǹÌÇϴ Ű¿öµå·Î ´ÙÀ½°ú °°ÀÌ »ç¿ëµÉ ¼ö ÀÖ´Ù.
char *data = NULL;ÀÌ·¸°Ô NULL ·Î ÃʱâÈ ÇÒ°æ¿ì, Æ÷ÀÎÅ͸¦ »ç¿ëÇÒ¶§ ´ÙÀ½°ú °°ÀÌ Æ÷ÀÎÅͰªÀ» °Ë»çÇÔÀ¸·Î½á, Á»´õ robost(°ß°íÇÑ) ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ°Ô µÈ´Ù. char *data = NULL;
if (data == NULL)
{
data = malloc(24);
}
strcpy(data, "hello world\0");
13 ¹®Á¦
|
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|