ÇÁ·Î±×·¡¹Ö
ù ÆäÀÌÁö ·£´ý ±Û ȸ¿ø°¡ÀÔ ·Î±×ÀÎ
ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 13:08:21
URL https://te31.com/rgr/view.php?id=study&no=935 ¸ð¹ÙÀÏ È­¸é
C ¾ð¾î ¸î°¡Áö Áú¹®! ÄÚµå¸ÛÅ°´Ô °ü½É Á».

1. ÇÔ¼öÆ÷ÀÎÅÍ »ç¿ëÇÒ ¶§,

typedef void (*func)(int x);

ó·³ typedef¸¦ »ç¿ëÇÏ¿© ¼±¾ð Çϴ°Ŷû

void (*func)(int);

¿ä·¸°Ô ±×³É ¼±¾ðÇÏ´Â °Å µÎ°¡Áö°¡ ÀÖ´øµ¥ Â÷ÀÌ°¡ ÀÖ³ª¿ä?

2. typedef ¿ë¹ý¿¡ °üÇÑ Áú¹® :

typedef unsigned long int new_int;
typedef void(*func)(int x);

µÑ´Ù typedef Àε¥ ¼­·Î ´Ù¸¥ ¹æ½ÄÀ¸·Î Çؼ®ÇÏ´Â °Ç°¡¿ä? Áï, ù¹ø° °æ¿ì´Â "¾ÕÀ¸·Î new_int¶ó°í ¾²¸é unsigned long int·Î ¾Ë°Ú´Ù" Àε¥ µÎ¹ø° °æ¿ì¸¦ ù¹ø°¶û À¯»çÇÑ ¹æ½ÄÀ¸·Î Çؼ®ÇÒ ¼ö ¾ø³ª¿ä? (»¹Áú¹®ÀÌÁö¸¸ ¹¹, ¶È°°Àº typedef¶ó ±Ã±Ý±Ã±Ý)

3. ±¸Á¶Ã¼¸¦ Àμö·Î ¹Þ´Â ÇÔ¼ö ÀÛ¼ºÇÒ ¶§, ¿¹¸¦ µé¾î.

struct gujoche {
int x;
char* y;
}

int func1(struct gujoche gujo){
...
return 1;
}
¿ä·¸°Ô Çϴ°Ŷû
int func2(struct gujoche* gujo){
...
return 1;
}

ÇßÀ» ¶§, µÑ´Ù ¶È°°ÀÌ ÀÛµ¿ÇÏ´øµ¥ - ´ç¿¬È÷ ¾È¿¡ ÄÚµå Áß gujo.x °°Àº °Å´Â gujo->x ·Î ¹Ù²ã ÁÖ¾úÀ½ - func1À̶û func2°¡ ³»ºÎÀûÀ¸·Î ¸Þ¸ð¸® 󸮿¡ Â÷ÀÌ °°Àº°Ô ÀÖ³ª¿ä?

4. À§ 3¹øÀ̶û °ü°èµÈ Áú¹®Àε¥,

struct gujoche* gujo2 = (struct gujoche*)malloc(sizeof(sturct gujoche));
gujo2 = &gujo1; // gujo1Àº ÀÌ¹Ì ¼±¾ðµÈ gujoche.

¿ä·¸°Ô ÇßÀ» °æ¿ì, *gujo2 °¡ ÀǹÌÇÏ´Â°Ô ¹«¾ùÀΰ¡¿ä? char* °°Àº °æ¿ì´Â ¸Þ¸ð¸® ÁÖ¼Ò¿¡ µé¾î ÀÖ´Â ¹®ÀÚ(int)°ªÀ̶ó´Â °Ç ¾Ë°Ú´Âµ¥ ±¸Á¶Ã¼ °°Àº °æ¿ì´Â ¹«½¼°ªÀ» °¡Áö´ÂÁö....


±ÞÇÑ°Ç ¾Æ´Ï°í °Á, °øºÎÇÏ·Á°í ¿©ÂÞ¾î º¸´Â°Å´Ï±î õõÈ÷ ´äº¯ºÎŹµå¸³´Ï´Ù.
ÁÁÀº ÇÏ·ç~

Àâ´ã | 1843¸íÀÌ Àоú¾î¿ä. 52.15.61.129

0
1 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 14:24:46
1. typedef·Î »õ·Î¿î ŸÀÔÀ» Á¤ÀÇÇßÀ¸´Ï ÇØ´ç ÇÔ¼öÆ÷ÀÎÅ͸¦ ÀÎÀÚ·Î ¹Þ´Â ÇÔ¼ö ÀÎÀÚ¸ñ·Ï ÀÛ¼º½Ã ÀåȲÇÏ°Ô

void foo(int a, int b, void (*func)(int)); ¶ó ½á¾ßµÇ´ø°É
void foo(int a, int b, func fp); °°Àº Çü½ÄÀ¸·Î ¾µ¼öÀÖÀ½

(1/understanding-typedefs-for-function-pointers-in-c-examples-hints-and-tips-ple) target=_blank>http://stackoverflow.com/questions/1591361/understanding-typedefs-for-function-pointers-in-c-examples-hints-and-tips-ple)

2. typedef ´Â »õ·Î¿î ŸÀÔÀ» Á¤ÀÇÇÏ´Â Å°¿öµåÀÔ´Ï´Ù. ¸ÅÅ©·Î¶ûÀº ¾ö¿¬È÷ ´Ù¸§. ¸ÅÅ©·Îó·³ µ¿ÀÛÇÑ´Ù ÀÌÇØÇÏÁö¸é ÆíÇϱä ÇÏÁö¸¸ Á¤È®ÇÏ°Ô´Â ¸ÅÅ©·Î´Â Àü󸮱⿡ ÀÇÇÑ ´Ü¼ø ¹®ÀÚ¿­ ġȯ, typedef ´Â ÄÄÆÄÀÏ·¯¿¡ ÀÇÇÑ »õ·Î¿î ŸÀÔ ¼±¾ðÀÌ Á¤È®ÇÕ´Ï´Ù.

(http://stackoverflow.com/questions/1666353/are-typedef-and-define-the-same-in-c)

3. call by value, call by reference ¹®Á¦Àε¥ function ¿¡ Àü´ÞµÇ´Â °ªÀº stackÀ» »ç¿ëÇÕ´Ï´Ù. stack¿¡ ±¸Á¶Ã¼ Àüü°¡ µé¾î°¡´À³Ä, ±¸Á¶Ã¼¿¡ ´ëÇÑ ÁÖ¼Ò¸¸ µé¾î°¡´À³ÄÀÇ ¾ÆÁÖ Áß¿äÇÑ Â÷ÀÌ°¡ ÀÖÁÒ. ¹°·Ð À§¿Í°°Àº ´Ü¼øÇÑ ¿¹½Ã¿¡¼­´Â ÀüÇô Â÷ÀÌ°¡ ¾ø½À´Ï´Ù¸¸ ... ±¸Á¶Ã¼ÀÇ Å©±â°¡ Å©´Ù´ø°¡ ÇÔ¼ö 󸮰á°ú¸¦ ´Ù½Ã ³Ñ°ÜÁÙ ¶§¶ó´ø°¡¿¡ Â÷ÀÌ°¡ ¹ß»ýÇÕ´Ï´Ù. ¿Ø¸¸ÇÏ¸é ±¸Á¶Ã¼´Â Æ÷ÀÎÅÍ·Î ³Ñ±â´Â ½À°ü µéÀ̵µ·Ï Çϼ¼¿ä.

(https://www.google.co.kr/url?sa=t&rct=j&q=&estyle=max-width:320px; src=s&source=web&cd=2&cad=rja&uact=8&ved=0CCMQFjAB&url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F161788%2Fare-there-any-downsides-to-passing-structs-by-value-in-c-rather-than-passing-a&ei=CxKuVLXLCoTc8AWRvoCwAg&usg=AFQjCNHGCLNGOeuDUMtF09vBNnxBY2qWyw&sig2=8UmawClIEgnPTfbpzOVO-w&bvm=bv.83134100,d.dGc)

4. °³ÀÎÀûÀ¸·Î * ´Â K&RÀÌ c ¼³°èÇÒ¶§ ½Ç¼öÇÑ ¿¬»êÀÚ¶ó »ý°¢Çϴµ¥, type ¿¡ ºÙ´Â * ´Â Æ÷ÀÎÅÍÇü ŸÀÔÀ» ¸»ÇÏ°í, º¯¼ö¸í¿¡ ºÙ´Â * ´Â ¿ªÂüÁ¶ ¿¬»êÀÚ¸¦ ÀǹÌÇÕ´Ï´Ù.

Áï struct gujoche* ¶õ ¹®ÀåÀº 'struct gujoche' ¶ó´Â ŸÀÔÀÇ Æ÷ÀÎÅÍÇü

*gujo2->member ´Â gujo2 º¯¼ö°¡ °¡¸®Å°´Â À§Ä¡ÀÇ °ª(ÀÌ struct ÀÌ¸ç ±× struct ÀÇ member¿¡ Á¢±ÙÇÏ°Ú´Ù)À» ÀǹÌÇÕ´Ï´Ù.

4¹ø°°Àº ¿¹´Â Àý´ë ÇÏ¸é ¾ÈµÇ´Â ¿¹·Î¼­(dead assignment / dead store), gujo2 ¿¡ ÀúÀåµÈ malloc ÀÇ °á°ú°ªÀ» ³¯·Á¹ö¸®´Â ÇàÀ§ÀÔ´Ï´Ù. µû¶ó¼­ mallocÇÑ ¸Þ¸ð¸®¸¦ freeÇÒ ¹æ¹ýÀÌ ¾ø¾îÁö°Ô µÇÁÒ. malloc ÇÑ pointer ´Â free Àü±îÁö´Â Àý´ë overwrite ÇÏÁö¸¶¼¼¿ä.

(1/c-dynamic-struct-malloc-and-free) target=_blank>http://stackoverflow.com/questions/4550251/c-dynamic-struct-malloc-and-free)
3 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 15:21:48
ÄÚµå¸ÛÅ°´Ô ÀÌÂë µÇ¸é ¤±·ç..¤½..¤·..
4 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 15:40:20
¾Æ... 4¹ø Áú¹® À߸øÇß´Ù.

struct gujoche* gujo2;
gujo2 = &gujo1; // gujo1Àº ÀÌ¹Ì ¼±¾ðµÈ gujoche.

¿ä·¸°Ô ÇßÀ» °æ¿ì, *gujo2 °¡ ÀǹÌÇÏ´Â°Ô ¹«¾ùÀΰ¡¿ä?

±Û°í 4¹ø ´äº¯¿¡¼­ *gujo2->member °¡ ¾Æ´Ï¶ó (*gujo2).member ¶Ç´Â gujo2->member ¿ä·¸°Ô ¸â¹öº¯¼ö¿¡ Á¢±ÙÇؾßÇϴ°Š¾Æ´Ñ°¡¿ä? -> °¡ *º¸´Ù ¿ì¼±À̶ó¸é ¸Â´Â°Å °°±âµµ..

¾Æ¹«Æ° ¸Å¹ø Á¤¸» °¨»çµå¸³´Ï´Ù, ÄÚµå¸ÛÅ°´Ô.
5 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 16:00:00
gujo2 º¯¼ö¿¡ ÇÒ´çµÈ °ªÀ» ¿ªÂüÁ¶ Ç϶ó´Â ÀǹÌÀÔ´Ï´Ù
6 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 16:01:06
±Ùµ¥ ÇÒ´çµÈ °ªÀÌ gujo1º¯¼öÀÇ ÁÖ¼Ò µû¶ó¼­ gujo2 º¯¼öÀÇ Å¸ÀÔÀÌ struct gujocheÀÇ Æ÷ÀÎÅÍÇüÀ̶ó¸é *gujo2´Â °á±¹ gujo1À» °¡¸®Å°´Â°ÍÀÌ µÇÁÒ. (¿ªÂüÁ¶ÀÇ °á°ú)
7 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 16:01:29
»ç¼ÒÇÑ ¹®¹ý¿À·ù´Â ¹«½ÃÇØÁÖ¼¼¿ä ÇìÇì
8 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 16:23:14
7// Á¦°¡ Áú¹®À» À߸ø ¿Ã·Á¼­ °Å±â¿¡ ¸ÂÃç ´äº¯ÇϽŠÁپ˰í...¤§¤§
À½, 4¹ø Áú¹®ÀÇ Àǵµ´Â.... ½ÇÁúÀûÀÎ µ¥ÀÌÅÍ°¡ ¹¹°¡ µÉ±î´Â Áú¹®ÀÔ´Ï´Ù.
char* text;
char a[] = "abcd";
text = a;
¿ä·¸°Ô ÇßÀ» °æ¿ì, printf("%c",*text); Çϸé 'a' ¸¦ ¹ñ¾î³»Àݾƿä. ±¸Á¶Ã¼´Â ¾î¶»°Ô µÇ...

ÀÚ´ä : Áö±Ý ½ÇÇè Çغ¸´Ï ¹®ÀÚ¿­À̶û ºñ½ÁÇÏ°Ô ÀÛµ¿Çϳ׿ä. printf("%d",*gujo2)¸¦ ÇßÀ» °æ¿ì, ù¹ø° ¸â¹ö º¯¼öÀÇ °ªÀ» Ãâ·ÂÇϳ׿ä. ÄÚµå¸ÛÅ°´Ô ¸»¾¸´ë·Î * ´Â ½ÇÆÐÇÑ ¿¬»êÀÚ ¸Â³×¿ä.¤Ì.¤Ì

°¨»çÇÕ´Ï´Ù. ¸¹Àº ±Ã±ÝÁõµéÀÌ ÇØ°á µÇ¾ú½À´Ï´Ù. ^^
9 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 19:37:20
c¾ð¾î¿¡¼­ °¢ °ªµéÀº ¸Þ¸ð¸®¿¡ rawÇÏ°Ô µé¾î°©´Ï´Ù.
±×°É ²¨³» ¾µ ¶§ ŸÀÔ¿¡ ¸Â°Ô Çؼ®ÇÏ´Â°Í »ÓÀÌÁÒ

char a[] = "abc";
unsigned long b = 0x00636261;

À϶§

printf("%s\n", a);
printf("%s\n", (char *)&b);

ÀÇ °á°ú´Â °°À¸¸ç

printf("%ld\n", *((unsigned long *)a));
printf("%ld\n", b);

ÀÇ °á°ú ¿ª½Ã °°½À´Ï´Ù.
10 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-08 19:40:28
±×·³ ±¸Á¶Ã¼ÀÇ °æ¿ì´Â?
ÄÄÆÄÀÏ·¯ ±¸Çö¿¡ µû¶ó ´Ù ´Ù¸¨´Ï´Ù.
ÀÚ¼¼ÇÑ°Ç ±¸Á¶Ã¼ ÆÐÅ·À¸·Î °Ë»öÇغ¸¼¼¿ä
11 ºñ°ø°³ ¼Õ´Ô ¡¦ 2015-01-09 09:10:21
10 // ±×·± Å°¿öµå°¡ ÀÖ¾ú±º¿ä. °¨»ç¿ä!
´ñ±ÛÀ» ÀÛ¼ºÇÏ½Ç ¼ö ¾ø½À´Ï´Ù.
(±ÇÇÑÀÌ ¾ø´Â ȸ¿ø·¹º§)
¸ñ·ÏÀ¸·Î
¡â ÀÌÀü±Û: Visual 2010¿¡¼­ ¿¡·¯ ¹®Á¦. [4]
¡ä ´ÙÀ½±Û: Big O Âø°¢ [3]
ÀÌ¿ë¾à°ü | ±¤°í/Á¦ÈÞ | °³ÀÎÁ¤º¸Ãë±Þ¹æħ | ¹®ÀÇ/½Å°í | ¸ð¹ÙÀÏ TE31 | ¼­¹ö ºÎÇÏ : 6.25%
½Ç½Ã°£ Issue Ä¿¹Â´ÏƼ TE31 [¾ËÁö·Õ] ¨Ï 2002-2024
TOP arrow_upward