 | |
ÀλýÀº ´ÙÀ½ µÎ°¡Áö·Î ¼º¸³µÈ´Ù. ÇÏ°í ½ÍÁö¸¸ ÇÒ ¼ö ¾ø´Ù. ÇÒ ¼ö ÀÖÁö¸¸ ÇÏ°í ½ÍÁö ¾Ê´Ù. - ±«Å× -
µ¥ÀÌŸ¿Í Æ÷ÀÎÅÍ Posted on 2002/9/23
Topic: ½Ã½ºÅÛ ÇÁ·Î±×·¥
|
¸¹Àº ÇÁ·Î±×·¡¸ÓµéÀÌ C ÀÇ Æ÷ÀÎÅÍ¿¡ ´ëÇØ¼ (½ÉÁö¾î ²Ï ¿À·§µ¿¾È C ¾ð¾î¸¦ ´Ù·é
ÇÁ·Î±×·¡¸ÓÁ¶Â÷µµ) Àϸ»ÀÇ °øÆ÷°¨À» °¡Áö°í ÀÖ´Ù.
À̹ø ±â»ç¿¡¼´Â ½ÇÁ¦·Î µ¥ÀÌŸ°¡ ¾î¶»°Ô ÀúÀåµÇ´ÂÁö¿¡ ´ëÇÑ ¿©·¯°¡Áö
¿¹Á¦¸¦ ÅëÇØ¼ Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ³»¿ëÀ» ¾Ë¾Æº¼ °ÍÀÌ´Ù.
´õºÒ¾î Çüº¯È¯, ¸Þ¸ð¸® Ä«ÇÇ µî¿¡ ´ëÇÑ ¸î°¡Áö Áö½Äµµ ¾òÀ»¼ö ÀÖÀ»°ÍÀÌ´Ù.
µ¥ÀÌŸ ¿Í Æ÷ÀÎÅÍ
C ¾ð¾î¸¦ °¡Àå óÀ½ Á¢ÇÏ¸é¼ °Þ´Â ¾î·Á¿òÀº
¾ö°ÝÇÏ°Ô ±¸ºÐµÇ¾î ÀÖ´Â ÀÚ·áÇü°ú À̵é ÀÚ·áµéÀ» ´Ù·ç±â À§Çؼ
»ç¿ëÇÏ´Â Æ÷ÀÎÅͶó´Â °³³ä ±×¸®°í ÀÌ¿Í ´õºÒ¾î¼ »ç¿ëµÇ´Â
Çüº¯È¯ ÀÌ´Ù.
ÀÌ´Â ÃÖ±ÙÀÇ ¿©·¯°¡Áö °í¼öÁØ ¾ð¾îµéÀÌ Æ÷ÀÎÅÍÀÇ »ç¿ëÀ» Áö¾çÇϰí,
ÀÚ·áÇü¿¡ ±×¸® ¾ö°ÝÇÏÁö ¾Ê´Â°Í°ú ±¸ºÐµÈ´Ù. À̵éÀ» À¯Àú(ÇÁ·Î±×·¡¸Ó)°¡
Á÷Á¢ ´Ù·ç°Ô µÇ¸é ¾Æ¹«·¡µµ ÇÁ·Î±×·¥ ¿À·ù¸¦ À¯¹ß½Ãų °¡´É¼ºÀÌ
¸¹¾Æ ÁüÀ¸·Î ÄÄÆÄÀÏ·¯¿¡¼ ÀÌ·¯ÇÑ °ÍµéÀ» ó¸®Çϵµ·Ï Çϰí ÀÖ´Ù.
C ¾ð¾î¿¡¼ ÀÌ·¯ÇÑ °ÍµéÀÇ Ã³¸®´Â ÇÁ·Î±×·¡¸ÓÀÇ ¸òÀÌ´Ù.
±×·± ÀÌÀ¯·Î C ¾ð¾î¸¦ Áß±Þ¾ð¾î¶ó°í ÇÑ´Ù. ÇÁ·Î±×·¡¸Ó¿¡°Ô À§ÀÇ
¹®Á¦µéÀÇ ÇØ°áÀ» ¸Ã±èÀ¸·Î½á ºÐ¸í ÇÁ·Î±×·¡¸Ó¿¡°Ô ¸¹Àº ºÎ´ãÀÌ ÁÖ¾îÁö´Â
°Ç »ç½ÇÀÌ´Ù. ±×·¯³ª ¶ÇÇÑ À̰͵éÀ» Á¦´ë·Î¸¸ »ç¿ëÇÒÁÙ ¾Ë°Ô µÈ´Ù¸é,
´Ù¸¥ ¾ð¾î¿¡¼´Â °ï¶õÇÑ Àú¼öÁØ¿¡¼ÀÇ ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏ°Ô µÈ´Ù.
ÀÌ·± ÀÌÀ¯·Î C ¾ð¾î°¡ ½Ã½ºÅÛ/³×Æ®¿÷ ÇÁ·Î±×·¡¹Ö¿¡¼ ´Ù¸¥ ¾ð¾îµé º¸´Ù
¿ìÀ§¿¡ ÀÖ°Ô µÇ´Â °ÍÀÌ´Ù.
ÀÌ ¹®¼¿¡¼´Â ÀÌ·¯ÇÑ ÀÚ·áµéÀÌ ¾î¶»°Ô ÀúÀåµÇ´ÂÁö, Çüº¯È¯ÀÌ
¾î¶»°Ô ÀϾ´ÂÁö ¶ÇÇÑ ÀÚ·á¿¡ Á¢±ÙÇϱâ À§Çؼ »ç¿ëµÇ´Â
Æ÷ÀÎÅͶõ ¾î¶²°ÍÀÎÁö¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇÒ°ÍÀÌ´Ù.
ÀÌ ¹®¼´Â C ÀÔ¹®ÀÚ ¿¡°Ô Æ÷ÀÎÅÍ °³³äÀ» °¡¸£Å°±â À§ÇÑ ¸ñÀûÀ¸·Î ÀÛ¼ºµÈ ¹®¼´Â ¾Æ´Ï´Ù.
¾î´ÀÁ¤µµ C¸¦ ¾Æ´Â »ç¿ëÀÚ¿¡ ÇÑÇØ¼ ¿©ÀüÈ÷ Æ÷ÀÎÅÍ¿¡ ´ëÇØ¼ Çò°¥¸®´Â C ¾ð¾î ÃÊ/Áß±Þ
»ç¿ëÀÚ¸¦ À§ÇÑ ³»¿ëÀ» ´ã°í ÀÖ´Ù.
°á±¹ ÇÁ·Î±×·¥ÀÌ ÇÏ´Â ÀÏÀº µ¥ÀÌŸ¸¦ ÀúÀåÇϰí, ÀоîµéÀ̰í
ÀϾîµéÀÎ µ¥ÀÌŸ¸¦ ó¸®Çؼ °í°´ÀÌ ¿øÇÏ´Â Á¤º¸·Î º¯È¯Çؼ
º¸¿©ÁÖ´Â °ÍÀÌ´Ù. ȤÀº ½Ã½ºÅÛ ÇÁ·Î±×·¥À̶ó¸é µ¥ÀÌŸ¸¦
ÀÌ¿ëÇØ¼ ½Ã½ºÅÛÀ» Á¦¾îÇÏ´Â ÀÏÀ» ÇÒ°ÍÀÌ´Ù.
±×·¯¹Ç·Î µ¥ÀÌŸ°¡ ¾î¶² ¹æ½ÄÀ¸·Î ÀúÀåµÇ°í ÀоîµéÀϼö ÀÖ´ÂÁö
ÀÌÇØÇÏ´Â °ÍÀº ´ë´ÜÈ÷ Áß¿äÇÑ ÀÏÀÌ´Ù.
ÄÄÇ»ÅÍ ÀÔÀå¿¡¼´Â ÇÁ·Î±×·¡¸Ó°¡ ÈçÈ÷ µ¥ÀÌŸÀÇ Çü ±¸ºÐÀ» À§Çؼ
»ç¿ëÇÏ´Â int, char, long int ÀÌ·±°Í¿¡ ´ëÇØ¼ ÀüÇô »ó°üÇÏÁö
¾Ê´Â´Ù. ÄÄÇ»ÅÍ ÀÔÀå¿¡¼´Â µ¥ÀÌŸ´Â ´ÜÁö bit ÀÇ ³ª¿ÀÏ »ÓÀÌ´Ù.
ÄÄÇ»ÅÍ´Â ÀÌ bit ¸¦ 8bit(1byte) ´ÜÀ§·Î ÀúÀåÀ» ÇÏ°Ô µÈ´Ù.
ÇÁ·Î±×·¡¸Ó°¡ ÈçÈ÷ »ç¿ëÇÏ´Â µ¥ÀÌŸ ÇüÀ̶ó´Â °ÍÀº
ÇÁ·Î±×·¡¸Ó°¡ µ¥ÀÌŸÀÇ Á¶ÀÛÀ» Æí¸®ÇϰԲû ¸¸µé¾î ³õÀº °Í¿¡
ºÒ°ú ÇÏ´Ù. Áï int ÇüÀ̶ó¸é ¿¬¼ÓµÈ 4 byte(32bit) Á¤º¸¸¦
memory ȤÀº µð½ºÅ©¿¡ ÀúÀåÇϰí, char ÇüÀ̶ó¸é 1 byte(8bit) ´ÜÀ§·Î Á¤º¸¸¦
ÀúÀåÇϰí/ÀоîµéÀϰÍÀ» ¾à¼ÓÇÑ °ÍÀÏ »ÓÀÌ´Ù. ±×·¯³ª ÄÄÇ»ÅÍÀÔÀå¿¡¼´Â
±×³É byte ÀÇ ¿¬¼ÓµÈ Á¤º¸ÀÏ »ÓÀÌ´Ù.
´ÙÀ½ÀÇ ¿¹Á¦¸¦ ½ÇÇà½ÃÄÑ º¸ÀÚ
¿¹Á¦ : mem.c
#include <string.h>
#include <stdio.h>
int main()
{
int a[4];
char c[6] = "6789";
short int d[2];
a[0] = 324;
a[1] = 2000;
a[2] = 3;
a[3] = 4;
printf("a : int, c : char, d : short int\n");
printf("size int %d\n", sizeof(int));
printf("size char %d\n", sizeof(char));
printf("size short %d\n", sizeof(short));
printf("a[0] : %x\n", &a[0]);
printf("a[1] : %x\n", &a[1]);
printf("a[2] : %x\n", &a[2]);
printf("a[3] : %x\n", &a[3]);
printf("c[0] : %x\n", &c[0]);
printf("c[1] : %x\n", &c[1]);
printf("d[0] : %x\n", &d[0]);
printf("d[1] : %x\n", &d[1]);
}
|
´ÙÀ½Àº ÇÊÀÚÀÇ Linux ¹Ú½º(kernel 2.4.x) ¿¡¼ÀÇ ½ÇÇà°á°ú
ÀÌ´Ù. ½ÇÇà °ªÀº ´Ù¸¦¼ö ÀÖ´Ù. (¾Æ½Ã°ÚÁö¸¸ '&' ´Â ÁÖ¼Ò ¿¬»êÀÚÀÌ´Ù. ÁÖ¼Ò°ªÀ»
µÇµ¹·ÁÁØ´Ù)
a : int, c : char, d : short int
size int 4
size char 1
size short 2
a[0] : bffff7b0
a[1] : bffff7b4
a[2] : bffff7b8
a[3] : bffff7bc
c[0] : bffff7a0
c[1] : bffff7a1
d[0] : bffff79c
d[1] : bffff79e
|
sizeof() ÇÔ¼ö´Â ÀÚ·áÇüÀÇ Å©±â¸¦ ¾Ë¾Æ³»±â À§Çؼ »ç¿ëÇÏ´Â ÇÔ¼öÀÌ´Ù.
sizeof ¸¦ »ç¿ëÇÒ°æ¿ì ÇØ´ç ÀÚ·áÇüÀÇ Å©±â¸¦ byte ´ÜÀ§·Î µÇµ¹·ÁÁØ´Ù.
printf ¿¡¼ Çü½ÄÈµÈ ÀÔÃâ·ÂÀ» À§ÇØ »ç¿ëµÈ %x ´Â 16 Áø¼ö ÇüÅ·Πº¸¿©ÁÖ±â
À§ÇÑ ÀÎÀÚÀÌ´Ù. º¯¼ö a ´Â int ÇüÀ̸ç, int ÇüÀº ¾Æ½Ã´Ù½ÃÇÇ 32bit Å©±â¸¦ °¡Áø´Ù.
À̰ÍÀ» sizeof ÇØº¸¸é 4(32/8) ¸¦ µÇµ¹·ÁÁÙ°ÍÀÌ´Ù.
ÁÖ¼Ò °ªÀÇ Å©±â¸¦ º¸¶ó a[0] ¿¡¼ ºÎÅÍ a[3] ±îÁö ÁÖ¼Ò°ªÀÌ 4 ¸¸Å Áõ°¡Çϰí ÀÖÀ½À» ¾Ë¼ö
ÀÖ´Ù. ÀÌ ÁÖ¼Ò°ªÀº byte ´ÜÀ§·Î Áõ°¡¸¦ ÇÔÀ¸·Î a[0] ¿¡¼ ºÎÅÍ a[3] ±îÁö ¸Þ¸ð¸® »ó¿¡
¿¬¼ÓµÇ°Ô À§Ä¡Çϰí ÀÖÀ½À» ¾Ë¼ö ÀÖÀ»°ÍÀÌ´Ù.
´ÜÀ§ : byte
0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| a[0] | a[1] | a[2] | a[3] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
bffff7b0 7b4 7b8 7bc
a[0] = 324
a[1] = 2000
a[2] = 3
a[3] = 4
|
º¯¼ö c ÀÇ °æ¿ì¿¡´Â char ÇüÀε¥, char ÇüÀº 1byte Å©±â¸¦ °¡Áø´Ù. ½ÇÁ¦ ÁÖ¼ÒÀÇ Áõ°¡ºÐÀ»
ºÁµµ 1byte Å©±â ´ÜÀ§·Î Áõ°¡Çϰí ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù. 2 ¹ÙÀÌÆ® Å©±â¸¦ °¡Áö´Â short int
µµ ¸¶Âù°¡Áö·Î 2byte Å©±â ´ÜÀ§·Î ÁÖ¼Ò °ªÀÌ Áõ°¡Çϰí ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù.
À§ÀÇ char, int, short ¿Í °°Àº ÀÚ·áÇü¿Ü¿¡ struct ¿Í °°Àº ÇÁ·Î±×·¡¸Ó°¡ Á¤ÀÇÇØ¼
»ç¿ëÇÏ´Â ÀÚ·áÇüµµ ÀÖ´Ù. ±¸Á¶Ã¼´Â ¿©·¯°³ÀÇ ÀÚ·áÇüÀ» ¹¾î ³õÀº Çü½ÄÀ» ÃëÇϰí Àִµ¥,
struct ÀÚ·áÇü ¿ª½Ã ÄÄÇ»ÅÍÀÇ ÀÔÀå¿¡¼ ´Ü¼øÈ÷ ¿¬¼ÓµÈ byte ÀÇ ¸ðÀ½ÀÌ´Ù.
´ÙÀ½ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÈÄ ½ÇÇà½ÃÄÑ º¸ÀÚ.
#include <stdio.h>
struct mydata
{
int age;
int weight;
char name[16];
char juso[80];
};
int main()
{
struct mydata data;
printf("%d\n", sizeof(data));
printf("mydata.age : %x\n", &data.age);
printf("mydata.weight : %x\n", &data.weight);
printf("mydata.name : %x\n", &data.name);
printf("mydata.juso : %x\n", &data.juso);
}
|
½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ º¸¿©ÁÙ °ÍÀÌ´Ù.
104
mydata.age : bffff740
mydata.weight : bffff744
mydata.name : bffff748
mydata.juso : bffff758
|
mydata ±¸Á¶Ã¼ÀÇ sizof °ªÀº 104 °¡ ³ª¿Ô´Ù. °è»êÀ» ÇØº¸¸é 4+4+16+80 = 104
·Î Á¤È®ÇÏ°Ô Å©±â°¡ °è»êµÇ¾úÀ½À» ¾Ë¼ö ÀÖ´Ù.
±×¸®°í printf ÀÇ ÁÖ¼Ò°ªÀ» º¸¸é °¢°¢ÀÇ ÀÚ·áÇü¿¡ ¾Ë¸Âµµ·Ï ¸Þ¸ð¸® Å©±â°¡ ÇÒ´çµÇ¾î
ÀÖÀ¸¸ç, ¸Þ¸ð¸® »ó¿¡¼ ¿¬¼ÓµÇ°Ô ÇÒ´çµÇ¾î ÀÖÀ½À» ¾Ë¼ö ÀÖÀ» °ÍÀÌ´Ù.
age, weight ´Â 4byte ¾¿, name 16 byte, juso ´Â 80byte °¡ ÇÒ´çµÇ¾î ÀÖÀ½À»
¾Ë¼ö ÀÖÀ» °ÍÀÌ´Ù.
¿©·¯ºÐÀº void ŸÀÔ¿¡ ´ëÇØ¼ µé¾îº»ÀûÀÌ ÀÖÀ»°ÍÀÌ´Ù.
À̰Š»ó´çÈ÷ È¥µ¿µÉ¼ö Àִµ¥, void ŸÀÔÀ̶õ À̸¦Å×¸é µ¥ÀÌŸÇü À» ÄÄÇ»ÅÍ ÀÔÀå¿¡¼
ÇØ¼®ÇÏ´Â °ÍÀÌ´Ù. ÇÁ·Î±×·¡¸ÓÀÇ °æ¿ì
ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» ¼ö¿ùÇÏ°Ô Çϱâ À§Çؼ ´Ù¾çÇÑ µ¥ÀÌŸ ŸÀÔÀ» ÀÌ¿ëÇÏÁö¸¸
¸»ÇßµíÀÌ ÄÄÇ»ÅÍ¿¡°Ô ÀÖ¾î¼ µ¥ÀÌŸ ŸÀÔÀº »ç½Ç Çʿ䰡 ¾ø´Ù. ÄÄÇ»ÅÍ ÀÔÀå¿¡¼´Â
´ÜÁö ¿¬¼ÓµÈ 8bit(byte) µ¥ÀÌŸÀÇ ³ª¿ÀÏ »ÓÀÌ´Ù.
´Þ¸® ¸»ÇÏÀÚ¸é ÄÄÇ»ÅÍ ÀÔÀå¿¡¼´Â ¸ðµç µ¥ÀÌŸ´Â void ÇüÀÌ´Ù.
±×·¯¹Ç·Î void ŸÀÔÀÇ °æ¿ì ¸ðµç µ¥ÀÌŸÇüÀ» ÀúÀåÇÒ¼ö ÀÖ°Ô µÈ´Ù.
º¸ÅëÀÇ °æ¿ì int, char ȤÀº struct ¿Í °°Àº µ¥ÀÌŸ ŸÀÔÀ» ÀÌ¿ëÇØ¼ ÀÛ¾÷ÇÏ´Â
°ÍÀº ¸Å¿ì Æí¸®Çϱä ÇÏÁö¸¸, ¶§¶§·Î µ¥ÀÌŸ ŸÀÔÀ» ºÐ¸®Çؼ ÀÛ¾÷Çϸé
¿ÀÈ÷·Á ºÒÆíÇÑ °æ¿ì°¡ »ý±æ¼ö°¡ ÀÖ´Ù. ´ëÇ¥ÀûÀÎ ¿¹·Î memcpy ¸¦ ¿¹·Î µé¾îº¸ÀÚ.
memcpy ´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î Àִµ¥,
void *memcpy(void *dest, const void *src, size_t n);
|
¸¸¾à ÁÖ¾îÁö´Â ÀÎÀÚ°¡ void ÇüÀÌ ¾Æ´Ï¶ó°í °¡Á¤ÇØ º¸ÀÚ. ±×·¸´Ù¸é
int Çü º¹»ç, char Çüº¹»ç, struct Çü º¹»ç¸¦ Çϱâ À§ÇÑ º°µµÀÇ memcpy ÇÔ¼ö¸¦
¸¸µé¾î¾ß¸¸ ÇÒ°ÍÀÌ´Ù.(À̸¦Å׸é imemcpy, cmemcpy µî)
À̰Š´ë´ÜÈ÷ ±ÍÂúÀº ÀÛ¾÷ÀÌ´Ù. ±×³ª¸¶ ¿ì¸®°¡ Å©±â¸¦ ¾Ë°í ÀÖ´Â int, char °°Àº °æ¿ì¶ó¸é
±¦Âú°ÚÁö¸¸, »ç¿ëÀÚ Á¤ÀÇÇü µ¥ÀÌŸŸÀÔÀ» À§ÇÑ memcpy ÇÔ¼ö¸¦ ¸¸µå´Â°Ç »ó´çÈ÷
±î´Ù·Î¿î ÀÛ¾÷ÀÌ µÉ°ÍÀÌ´Ù.
±×·¸´Ù¸é °¡Àå °£´ÜÇÑ ¹æ¹ýÀº µ¥ÀÌŸ ŸÀÔ¿¡ »ó°üÇÏÁö ¾Ê°í ÄÄÇ»ÅÍ ÀÔÀå¿¡¼
µ¥ÀÌŸ¸¦ ¹Ù¶ó º¸´Â °ÍÀÌ´Ù. ¹Ù·Î ÄÄÇ»ÅÍ ÀÔÀå¿¡¼ÀÇ µ¥ÀÌŸ ŸÀÔÀÌ void ÇüÀÌ´Ù.
ÄÄÇ»ÅÍÀÔÀå¿¡¼´Â µ¥ÀÌŸ ŸÀÔÀº void Çü ¿ÀÁ÷ ÇϳªÀ̹ǷÎ, ÇÁ·Î±×·¡¸Ó°¡ Á¤ÀÇÇÑ
µ¥ÀÌŸ ŸÀÔÀ» °øÅë µ¥ÀÌŸ ŸÀÔÀÎ void ÇüÀ¸·Î Çüº¯È¯(cast) ½ÃÄÑÁشٸé,
ŸÀÔ¿¡ °ü°è¾øÀÌ ÀÛ¾÷ÇÒ¼ö ÀÖ°Ô µÉ°ÍÀÌ´Ù.
´ÙÀ½Àº void ÇüÀÇ ÀÌÇØ¸¦ µ½±â À§ÇÑ °£´ÜÇÑ ¿¹Á¦ÀÌ´Ù.
¿¹Á¦ memcpy2.c
#include <unistd.h>
struct mydata
{
int age;
int weight;
char name[16];
char juso[80];
};
int main()
{
struct mydata data;
char f_data[120];
int my_weight;
data.age = 29;
data.weight = 64;
strcpy(data.name, "yundream");
strcpy(data.juso, "seoul korea");
memset(f_data, 0x00, 120);
memcpy(f_data, (void *)&data, sizeof(struct mydata));
memcpy((void *)&my_weight, f_data+4, sizeof(int));
printf("%d\n", my_weight);
}
|
memcpy ÇÑÈÄ f_data ÀÇ ¸Þ¸ð¸® ±¸¼ºÀ» º¸¸é ¾Æ·¡¿Í °°À» °ÍÀÌ´Ù.
we = weight
´ÜÀ§ : byte
4 4 16 80 16
+----+----+-------------+----------------------+-----------+
|age |we |name | juso | NULL |
+----+----+-------------+----------------------+-----------+
| |
+-------- 120 byte -------+
|
Âü°í·Î char ÇüÀÏ °æ¿ì void ÇüÀ¸·Î Çüº¯È¯(cast) ÇÒ Çʿ䰡 ¾ø´Ù.
¿Ö³ÄÇϸé char ´Â 1byte ´ÜÀ§·Î ÄÄÇ»ÅÍÀÇ µ¥ÀÌŸ ÀúÀå´ÜÀ§ 1byte ¿Í µ¿ÀÏÇϱâ
¶§¹®ÀÌ´Ù.
¾î¶µç void ŸÀÔÀ» ÀÌ¿ëÇØ¼ ÀüÇô ´Ù¸¥ µ¥ÀÌŸ ÇüÀ¸·Î µ¥ÀÌŸ º¹»ç¸¦ Çϱä Çߴµ¥,
±×·¸´Ù¸é f_data ¿¡¼ µ¥ÀÌŸ¸¦ °¡Á®¿À´Â°Ç ¾î¶»°Ô ÇØ¾ß ÇÒ±î.
°¡Àå °£´ÜÇÑ ¹æ¹ýÀº mydata ÇüÀÇ º¯¼ö¸¦ Çϳª´õ ¸¸µç´ÙÀ½¿¡ ¿©±â¿¡ memcpy
½ÃŰ´Â ¹æ¹ýÀÌ ÀÖÀ»¼ö ÀÖÀ»°ÍÀÌ´Ù.
mydata data2;
...
memcpy((void *)&data2, f_data, sizeof(mydata));
|
ÀÌ·¸°Ô Çϸé f_data ¿¡¼ sizeof(mydata) Å©±âÀÎ 104 ¸¸ÅÀÌ data2 ·Î º¹»çµÉ
°ÍÀÌ´Ù.
¸¸¾à weight ÀÇ Á¤º¸¸¸À» °¡Á®¿À°í ½Í´Ù¸é, ±»ÀÌ struct Àüü¸¦ º¹»çÇÒ ÇÊ¿ä ¾øÀÌ
´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î weight Á¤º¸¸¦ °¡Á®¿Ã¼ö ÀÖÀ»°ÍÀÌ´Ù.
int my_weight;
...
memcpy((void *)&my_weight, f_data+4, sizeof(int));
|
¿ì¸®°¡ °¡Á®¿À°íÀÚ ÇÏ´Â °ªÀº f_data ¿¡¼ 4 ¹ÙÀÌÆ®¸¸Å µÚ·Î À̵¿ÇÑ µ¥ÀÌŸ ÀÌ´Ù.
(age °¡ int ÇüÀ¸·Î 4byte ÀÇ Å©±â¸¦ °¡ÁüÀ¸·Î) ±×·³À¸·Î f_data ¿¡ +4 ¸¸Å ÇØÁÖ¸é
weight °¡ ÀúÀåµÈ °÷ÀÇ ÁÖ¼Ò¸¦ °¡¸£Å°°Ô µÉ°ÍÀÌ´Ù. ¿ì¸®°¡ °¡Á®¿À°í ½Í¾îÇÏ´Â weight
µ¥ÀÌŸ´Â 4 ¹ÙÀÌÆ® Å©±âÀÇ int Çü µ¥ÀÌŸ ÀÓÀ¸·Î sizeof(int) ÀÇ Å©±â¸¸ÅÀ»
my_weight °¡ °¡¸£Å°´Â ÁÖ¼Ò·Î º¹»çÇÏ¸é µÉ°ÍÀÌ´Ù.
name, juso °ª ¿ª½Ã À§¿Í °°Àº ¹æ¹ýÀ¸·Î °¡Á®¿Ã¼ö ÀÖ´Ù.
±×¸®°í ¸Þ¸ð¸®´Â ¿¬¼ÓµÇ°Ô ÇÒ´çµÈ´Ù´Â Á¡¿¡ Âø¾ÈÇÑ´Ù¸é ´ÙÀ½°ú °°Àº
ÄÚµùµµ °¡´ÉÇÒ°ÍÀÌ´Ù.
#include <unistd.h>
struct mydata
{
int a;
int b;
};
int main()
{
int c[2];
struct mydata data;
data.a = 1;
data.b = 2;
memcpy((void *)&c, (void *)&data, sizeof(struct mydata));
printf("%d\n", c[0]);
printf("%d\n", c[1]);
}
|
Ãâ·ÂÀ» ÇØº¸¸é ¾Ë°ÚÁö¸¸ ±¸Á¶Ã¼°¡ ±×´ë·Î c[2] ¹è¿ º¯¼ö¿¡ º¹»çµÇ¾úÀ½À»
¾Ë¼ö ÀÖ´Ù. ¾îÂ÷ÇÇ c[2] µµ 8byte ÀÇ Å©±â¸¦ °¡Áö°í, mydata µµ 8byte ¸¦
°¡Áö°í ÀÖÀ½À¸·Î void ÇüÀ¸·Î Çüº¯È¯½ÃÄÑÁÖ°í º¹»çÇÑ´Ù¸é,
µ¿ÀÏÇÑ ¸Þ¸ð¸®ºí·° ±¸Á¶¸¦ °¡Áú¼ö Àֱ⠶§¹®ÀÌ´Ù.
"Æ÷ÀÎÅͶõ µ¥ÀÌŸ°¡ ÀúÀåµÈ ÁÖ¼Ò¸¦ °¡¸£Å²´Ù." ´ëºÎºÐÀÇ C ¾ð¾î ÀÔ¹®¼¿¡ º¸¸é
º¸Åë ÀÌ·¸°Ô Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ¼³¸íÀ» ½ÃÀÛÇÑ´Ù. ºÐ¸í Ʋ¸°¸»Àº ¾Æ´Ï¸ç, À§ÀÇ ¸íÁ¦´ë·Î
Æ÷ÀÎÅÍÀÇ °³³äÀº ¸Å¿ì °£´ÜÇÏ´Ù°í ÇÒ¼ö ÀÖ´Ù.
±×·¸Áö¸¸ C ¾ð¾î Ãʺ¸ÀÚÀÌ°Ç Áß±Þ»ç¿ëÀÚÀÌ°Ç °£¿¡ Æ÷ÀÎÅͶó´Â °ÍÀÌ °³³ä¸¸Å ¸¸¸¸Ä¡
¾Ê´Ù¶ó´Âµ¥ °ø°¨ÇÒ°ÍÀÌ´Ù.
½ÉÁö¾î C ¾ð¾îÀÇ È°¿ëÀ» °¡·Î¸·´Â °¡Àå Å« Àû Çϸé ÀϼøÀ§·Î ²Å´Â°Ô "Æ÷ÀÎÅÍ" ÀÏ Á¤µµÀÌ´Ù.
À̹øÀå¿¡ ´ëÇØ¼´Â Pointer ¿¡ ´ëÇÑ ±âº»ÀûÀÎ °³³ä¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.
Æ÷ÀÎÅÍ´Â ±× µ¥ÀÌŸ°¡ ÀúÀåµÈ ÁÖ¼Ò¸¦ °¡¸£Å²´Ù. ´Ù½Ã mem.c ÀÇ °á°ú¸¦ º¸µµ·Ï ÇÏÀÚ.
´ÜÀ§ : byte
0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| a[0] | a[1] | a[2] | a[3] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
bffff7b0 7b4 7b8 7bc
a[0] = 324
a[1] = 2000
a[2] = 3
a[3] = 4
|
C ¿¡¼´Â Æ÷ÀÎÅÍ ¿¬»êÀ» À§ÇÑ ¿¬»êÀÚ¸¦ º°µµ·Î Á¦°øÇϴµ¥ '*' ÀÌ´Ù. À̰ÍÀ» ÅëÇØ¼
µ¥ÀÌŸ¸¦ Æ÷ÀÎÅ͸¦ »ç¿ëÇØ¼ Á¢±ÙÇÒ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î *a ¸¦ »ç¿ëÇÑ´Ù¸é À̰ÍÀÇ ¶æÀº "º¯¼ö a ¸¦ À§ÇØ ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦
°¡¸£Å°´Â" ÀÇ ¶æÀÌ µÈ´Ù.
mem.c ¿¡ ´ÙÀ½ÀÇ Äڵ带 Ãß°¡ ½ÃÄÑ º¸ÀÚ
a °¡ ÀúÀåµÈ ÁÖ¼ÒÀÇ °ªÀº bffff7b0 ÀÌ´Ù(*a °¡ °¡¸£Å°´Â ÁÖ¼ÒÀÇ °ª).
%d ¸¦ »ç¿ëÇÏ¿©¼ Ãâ·ÂÀ» Ç϶ó°í ÇßÀ½À¸·Î
bffff7b0 ¿¡¼ ºÎÅÍ bffff7b3 ±îÁöÀÇ °ªÀ» int ÇüÀ¸·Î º¯È¯ÇÏ¿© Ãâ·ÂÀ» ÇÏ°Ô µÉ°ÍÀÌ´Ù.
±×·¯¹Ç·Î À§ÀÇ ÄÚµå´Â "324" À» Ãâ·Â ½ÃŲ´Ù.
±×·¸´Ù¸é ÇѰ¡Áö ±Ã±ÝÇÑ°Ô ÀÖ´Ù.
¸¸¾à printf("%c
", *a) ·Î Ãâ·ÂÇ϶ó°í ÇÏ¸é ¾î¶»°Ô µÉ±î? ¿¡·¯°¡ ¹ß»ýÇÏ°Ô µÉ±î ?
´«Ä¡ ë°ÚÁö¸¸ ÄÄÆÄÀÏ¿¡·¯µµ ¹ß»ýÇÏÁö ¾Ê°í, ¿ö´×µµ ¹ß»ýÇÏÁö ¾ÊÀ» »Ó´õ·¯, ½ÇÇà½Ã
¿¡µµ ¿¡·¯°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. À§ÀÇ °æ¿ì¸¦ ÇØ¼®ÇØ º¸ÀÚ¸é, a °¡ ÀúÀåµÈ ÁÖ¼Ò·Î ºÎÅÍ
1byte ¸¸Å (%c ´Â 1byte ij¸¯Å͸¦ Ãâ·ÂÇϱâ À§Çؼ »ç¿ëÇÔÀ¸·Î) µ¥ÀÌŸ¸¦ Àоîµé¿©¼
ȸ鿡 Ãâ·ÂÇÏ°Ô µÈ´Ù. *a °¡ ÀúÀåµÈ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¿¡ ÀúÀåµÈ µ¥ÀÌŸ¸¦ ÀÚ¼¼È÷ »ìÆìº¸¸é
bffff7b0 b1 b2 b3
01000100 00000001 00000000 00000000
|
ÀÌ µÉ°ÍÀÌ´Ù. (°è»ê±â·Î °è»êÇØ º¸¸é 324 ´Â 101000100 ÀÌ´Ù. ±×·±µ¥, Linux ´Â ¸®Æ²¿£µð¾È ÀúÀ广½Ä
À» µû¸§À¸·Î ³·ÀºÁÖ¼ÒÀÇ µ¥ÀÌŸ°¡ °¡Àå ¸ÕÀú ÀúÀå¹Ç·Î À§¿Í °°Àº ¹æ½ÄÀ¸·Î
¸Þ¸ð¸®¿¡ ÀúÀåµÈ´Ù. ¿£µð¾È¿¡ ´ëÇÑ ³»¿ëÀº Endian¿¡ ´ëÇØ¼¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù)
±×·¯¹Ç·Î printf("%c
", *a) °¡ Ãâ·ÂÇÏ°Ô µÇ´Â °ªÀº bffff7b0 ¿¡¼ ºÎÅÍ
1byte ¸¸Å ÀúÀåµÇ¾î ÀÖ´Â °ªÀÎ 01000100 ÀÌ´Ù. À̰ÍÀ» 10 Áø¼ö·Î º¯È¯ ½ÃÄѺ¸¸é 68 À̰í
68 Àº ASCII ÄÚµåÇ¥¿¡¼ D ¸¦ °¡¸£Å°¹Ç·Î °á±¹ 'D' ¸¦ Ãâ·ÂÇÏ°Ô µÈ´Ù.
¾Æ¸¶ Æ÷ÀÎÅÍ¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ÀÌÇØ¸¦ ÇßÀ»°ÍÀÌ´Ù. ±×·¸´Ù¸é a[0] À» °¡Á® ¿À´Â°Ç
¾Ë°Ú´Âµ¥ a[1] ÀÇ °ªÀº ¾î¶»°Ô ÇÏ¸é °¡Á®¿Ã¼ö ÀÖÀ»Áö ¾Ë¾Æº¸ÀÚ.
°£´ÜÈ÷ »ý°¢Çؼ ÃÖÃÊ *a ¿¡¼ 4 ¸¸Å Æ÷ÀÎÅÍÀÇ À§Ä¡¸¦ À̵¿½ÃŰ¸é µÉ°ÍÀÌ´Ù. ½ÇÁ¦·Î
ÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î Æ÷ÀÎÅÍ ¿¬»êÀ» ÇÏ°Ô µÈ´Ù.
±×³É *(a+1) ÇØÁÖ¸é µÈ´Ù. +1 À̸é Ȥ½Ã 1byte ¸¸Å¸¸ Áõ°¡ÇÏÁö ¾ÊÀ»Áö.. °ÆÁ¤ÀÌ µÉ¼öµµ
ÀÖ°ÚÁö¸¸ ÀÌ·²°æ¿ì ÄÄÆÄÀÏ·¯°¡ º¯¼ö 'a' ÀÇ sizeof ¸¦ °è»êÇØ¼ ¾Ë¾Æ¼ Áõ°¡ ½ÃÄÑÁØ´Ù.
Áï sizeof(a) ´Â 4 ÀÓÀ¸·Î *(a+1) Àº bffff7b0 + 4 ÀÇ ÁÖ¼Ò¸¦ °¡¸£Å°°Ô µÈ´Ù.
a[1] ÀÇ °ªÀ» °¡Á®¿À±æ ¿øÇÑ´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÄÚµùÇÏ¸é µÈ´Ù.
±×·¯¸é bffff7b4 ¿¡¼ bffff7b7 ±îÁöÀÇ °ªÀ» Àоîµé¿©¼ int ÇüÀ¸·Î º¯È¯½ÃÄѼ
Ãâ·Â ½ÃÄÑÁÖ°Ô µÈ´Ù.
¸¶Âù°¡Áö·Î *c+1 À» ÇÏ°Ô µÇ¸é 1byte ¸¸Å Áõ°¡ ½ÃÄѼ ÇØ´ç ÁÖ¼Ò°¡ °¡¸£Å°´Â °ªÀ»
ȸ鿡 Ãâ·Â ½ÃÄÑÁÙ°ÍÀÌ´Ù.
±×¸®°í È¥µ¿ÇÒ¼ö Àִµ¥, *a+1 °ú *(a+1)Àº ±× °á°ú °ªÀÌ ¾ö¿¬È÷ ´Ù¸£´Ù.
*a+1 Àº *a ÀÇ °ª¿¡ +1 À» ÇØÁÖ´Â °ÍÀ̰í (Áï 325), *(a+1), aÀÇ ÁÖ¼Ò¿¡ sizeof(a)*1 ¸¸Å
À̵¿ÇÑ ÁÖ¼Ò°ªÀ» °¡¸£Å°´Â °ÍÀÌ´Ù. ÀüÀÚ´Â ±×³É µ¡¼À ¿¬»êÀ̰í, ÈÄÀÚ°¡ Æ÷ÀÎÅÍ ¿¬»êÀÌ´Ù.
°¡²û È¥µ¿µÉ¼ö ÀÖÀ¸´Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù.
ÀÚ ±×·¯¸é ¿¹Á¦ memcpy2.c ¸¦ pointer ¹öÁ¯À¸·Î ¹Ù²Ù¾î º¸ÀÚ.
memcpy2.c ´Â void ÇüÀ» ¼³¸íÇϱâ À§ÇÑ ¿¹Á¦·Î´Â ¾µ¸¸ÇÏÁö¸¸ µ¥ÀÌŸÀÇ ÀÌ¿ëÀ»
À§Çؼ ºñ¿ëÀÌ Å« ¸Þ¸ð¸® º¹»ç¸¦ »ç¿ëÇÑ´Ù¶ó´Â ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù.
À̰ÍÀ» ¾Æ·¡¿Í °°ÀÌ Æ÷ÀÎÅÍ ¹öÁ¯À¸·Î ¹Ù²Ù¸é °ÅÀÇ ºñ¿ëÀÌ µéÁö ¾Ê´Â È¿À²ÀûÀÎ
Äڵ带 ¸¸µé¼ö ÀÖ´Ù.
¿¹Á¦ : memcpy3.c
#include <unistd.h>
struct mydata
{
int age;
int weight;
char name[16];
char juso[80];
};
int main()
{
struct mydata data, *data2;
char *f_data;
int my_weight;
int *test;
data.age = 29;
data.weight = 64;
strcpy(data.name, "yundream");
strcpy(data.juso, "seoul korea");
printf("point size %d\n", sizeof(f_data));
printf("point size %d\n", sizeof(test));
// ÂüÁ¶ 1
printf("data : %x\n", &data);
printf("f_data : %x\n", &f_data);
printf("data2 : %x\n", &data2);
// ÂüÁ¶ 2
f_data = (void *)&data;
// ÂüÁ¶ 3
data2 = (void *)f_data;
printf("data2 %d\n", data2->age);
printf("data2 %d\n", data2->weight);
}
|
À§ÀÇ ÄÚµå´Â µ¥ÀÌŸÀÇ º¹»ç°¡ ÀϾÁö ¾Ê´Â´Ù.
ÂüÁ¶ 2À» º¸¸é f_data °¡ data ÀÇ ÁÖ¼ÒÀ§Ä¡¸¦ °¡¸£Å°´Â(Æ÷ÀÎÅÍ) Çϵµ·Ï Çß´Ù.
±×¸®°í ÂüÁ¶ 3¿¡¼´Â data2 °¡ ´Ù½Ã f_data ÀÇ ÁÖ¼Ò À§Ä¡¸¦ °¡¸£Å°µµ·Ï Çß´Ù.
ÂüÁ¶ 2¿¡¼ ÁÖ¼Ò ¿¬»êÀÚ '&' °¡ »ç¿ëµÈ ÀÌÀ¯´Â data ´Â Æ÷ÀÎÅͰ¡ ¾Æ´ÔÀ¸·Î
Æ÷ÀÎÅÍÀÎ f_data ¿¡ ´ëÀÔ½Ãų¼ö°¡ ¾ø±â ¶§¹®ÀÌ´Ù. ´ëÀÔ¿¬»êÀÚ´Â °°Àº ŸÀÔÀÏ °æ¿ì¿¡¸¸
°¡´ÉÇÏ´Ù. ±×·¯¹Ç·Î ÁÖ¼Ò¿¬»êÀÚ '&' ¸¦ ÀÌ¿ëÇØ¼ data ÀÇ ÁÖ¼Ò¸¦ f_data ¿¡ ´ëÀÔ
°¡´ÉÇϵµ·Ï ¸¸µç°ÍÀÌ´Ù. ÂüÁ¶ 3 ¿¡¼ f_data ´Â ±× ÀÚü°¡ Æ÷ÀÎÅÍ ÀÓÀ¸·Î Æ÷ÀÎÅÍÀÎ
data2 ¿¡ ´ëÀÔÇØµµ ÀüÇô ¹®Á¦°¡ ¾ø´Ù.
À§ÀÇ °á°ú¸¦ Ãâ·ÂÇØ º¸¸é ¾Æ·¡¿Í ºñ½ÁÇÏ°Ô ³ª¿Ã°ÍÀÌ´Ù. ½ÇÇà½Ã ¸Þ¸ð¸® »óŵ
µû¶ó¼ °ªÀÌ ´Ù¸£°Ô ³ª¿Ã¼ö ÀÖ´Ù.
point size 4
point size 4
data : bffff700
f_data : bffff6f8
data2 : bffff6fc
data2.age 29
data2.weight 64
|
±×·±µ¥ Á» ÀÌ»óÇÑ°Ô ÀÖ´Ù char *, int * ÀÇ Å©±â°¡ ¸ðµÎ 4 ·Î ³ª¿Í ÀÖ´Ù.
±× ÀÌÀ¯´Â Æ÷ÀÎÅÍ ÀÚü°¡ ÇϳªÀÇ ÀÚ·áÇüÀ¸·Î Ãë±ÞµÇ±â ¶§¹®ÀÌ´Ù.
Æ÷ÀÎÅ͸¦ À§ÇÑ Å©±â´Â ¿î¿µÃ¼Á¦¿¡ µû¶ó ´Ù¸£Áö¸¸ º¸Åë 4¹ÙÀÌÆ®ÀÎ °æ¿ì°¡ ¸¹´Ù.
À̰æ¿ì °¡¸£Å³¼ö ÀÖ´Â ¸Þ¸ð¸®ÀÇ ÃÖ´ë Å©±â´Â 2^32 ÀÌ µÉ°ÍÀÌ´Ù.
¸®´ª½º´Â 4byte ÀÇ Å©±â¸¦ °¡ÁüÀ¸·Î ´ë·«ÀûÀ¸·Î ¸®´ª½º ¿î¿µÃ¼Á¦°¡ °ü¸®ÇÒ¼ö ÀÖ´Â
¸Þ¸ð¸®ÀÇ ÃÖ´ëÅ©±â´Â 4G ¹ÙÀÌÆ® ÂëÀÌ µÉ°ÍÀ̸ç, ½ÇÁ¦·Î Ä¿³Î¿¡ Ưº°ÇÑ ÆÐÄ¡¸¦ °¡ÇÏÁö ¾Ê´ÂÇÑ
ÀÌÁ¤µµÀÇ ÇѰ踦 °¡Áø´Ù.
°¢ Æ÷ÀÎÅÍ´Â ÀÚ½ÅÀÌ °¡¸®ÄѾßÇÒ µ¥ÀÌŸ°¡ ÀÖ´Â ÁÖ¼ÒÀÇ À§Ä¡ Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù.
À§ÀÇ °¢ Æ÷ÀÎÅͰ¡ °¡¸£Å°´Â Á¤º¸¸¦ ±×¸²À¸·Î ³ªÅ¸³½´Ù¸é
¾Æ·¡¿Í °°À» °ÍÀÌ´Ù.
´ÜÀ§ : byte
0 1 2 3 0 1 2 3 4 ...... 103
+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+----------------+-+
|f_data | | data2 | | data |
+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+----------------+-+
bffff6f8 bffff6fc bffff700
|| | |
|+-----<-------+ |
+------------->--------------+
|
data2 ¿¡¼ age °ªÀ» °¡Á®¿À±â À§Çؼ ÁÖ¼Ò ¿¬»êÀÚ "->"¸¦ »ç¿ëÇϰí Àִµ¥,
À§ÀÇ ±×¸²À» º¸¸é ÀÌÇØ°¡ °¡´ÉÇÒ°ÍÀÌ´Ù. age ¶ó´Â ¸â¹öº¯¼öÀÇ °ªÀº data2 ÀÇ ¸â¹ö º¯¼ö°¡
¾Æ´Ñ data2 °¡ °¡¸£Å°°í(Æ÷ÀÎÅÍ Çϰí) ÀÖ´Â dataÀÇ ¸â¹öº¯¼öÀÌ´Ù. ±×·¯¹Ç·Î
¹Ýµå½Ã Æ÷ÀÎÅÍ ¿¬»êÀÚ¸¦ ½á¼, ÂüÁ¶ÇÒ µ¥ÀÌŸ°¡ ÀÖ´Â ÁÖ¼Ò°ªÀ» ¿¬»êÇØ ÁÖ¾î¾ß ÇÑ´Ù.
¸¸¾à data2.age ·Î °ªÀ» °¡Á®¿À·Á°í ÇÑ´Ù¸é, ÄÄÆÄÀÏ·¯´Â ¿¡·¯¸¦ ¸®ÅÏÇϸç ÄÄÆÄÀÏ ½ÇÆÐ ÇÒ°ÍÀÌ´Ù.
¿¹Á¦ mem.c ¿¡¼ º¯¼ö a ´Â 4ÀÇ Å©±â¸¦ °¡Áö´Â ¹è¿·Î ¼±¾ðµÇÀÖ´Ù.
¹è¿Àº Æ÷ÀÎÅͰú µ¿ÀÏÇÏ°Ô »ç¿ë°¡´ÉÇÏ´Ù. Áï a[0] Àº *a ¿Í °°À¸¸ç,
a[1] Àº *(a+1) °ú µ¿ÀÏÇÏ´Ù.
¾ÕÀå¿¡¼ Æ÷ÀÎÅÍ ¿¬»êÀ» ÇÒ¶§ *a+1 Àº Æ÷ÀÎÅÍ ¿¬»êÀÌ ¾Æ´Ï¶ó°í Çߴµ¥, ±× ÀÌÀ¯´Â
*a+1 Àº a[1] ÀÌ ¾Æ´Ï°í a[0] + 1 ÀÌ µÇ±â ¶§¹®ÀÌ´Ù.
|
|
|
|