ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 1 ÇÔ¼öÆ÷ÀÎÅÍÀÇ »ç¿ë1.1 ÇÔ¼öÆ÷ÀÎÅͶõ
¿äÁò C ÇÏ´Â °³¹ßÀÚ¸¦ ã±â°¡ Èûµé´ø°¡¿ä ? ¿©±â Àú±â C¾ð¾î °³¹ßÀÚ¸¦ ¼Ò°³½ÃÄÑ ´Þ¶ó´Âµ¥, »ç¶÷ÀÌ ¾ø¾î¼ ³¸®ÀÔ´Ï´Ù.
C¾ð¾î ÇÏ¸é ¶°¿À¸£´Â°Ô Æ÷ÀÎÅÍÁÒ. µ¥ÀÌÅÍÀÇ À§Ä¡¸¦ °¡¸®Å°´Â µ¥ÀÌÅÍ Å¸ÀÔ¶ó°í »ý°¢ÇÏ¸é °£´ÜÇÑ °³³äÀ̱ä Çѵ¥, °³³äÀÌ ´Ü¼øÇÒ »Ó Àß ´Ù·ç±â´Â ½±Áö ¾Ê½À´Ï´Ù. Ä¿³ÎÀÌ °ü¸®ÇÏ´Â ¸Þ¸ð¸®¸¦ ³·Àº ¼öÁØ¿¡¼ Á÷Á¢ °Çµå¸®±â ¶§¹®ÀÔ´Ï´Ù. ÅöÇÏ¸é ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» ħ¹üÇØ¼ ÇÁ·Î±×·¥ÀÌ »¸¾î ¹ö¸®°í, Á» Àß µ¹¾Æ°£´Ù ½ÍÀ¸¸é ¸Þ¸ð¸®¸¦ ÇØÁ¦ÇÏÁö ¾Ê¾Æ¼ ¸ðµç ¸Þ¸ð¸®¸¦ ´Ù ½á¹ö¸®´Â ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù.
ÀüÇô Ãß»óÈ µÇ ÀÖÁö ¾Ê´Ù´Â ¾ê±âÁÒ. ±×·¯´Ï »ç¶÷ÀÌ Á÷Á¢ Ãß»óÈ ÇØÁà¾ß ÇÕ´Ï´Ù. ¿¹ÄÁµ¥ ÇÒ´çÇÑ ¸Þ¸ð¸®¸¦ ÃʰúÇÏÁö ¾Ê°Ô Çϰųª, ¸Þ¸ð¸® ÇØÁ¦¸¦ °ü¸®ÇÏ´Â Äڵ带 Ãß°¡Çϰųª ÇÏ´Â µîÀÌÁÒ.
ÇÔ¼ö Æ÷ÀÎÅÍ´Â µ¥ÀÌÅÍ¿µ¿ª ´ë½Å¿¡ ÇÔ¼ö¸¦ °¡¸®Å°°Ú´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¾îÂ÷ÇÇ ÄÄÇ»ÅÍ´Â ÄÚµåµç µ¥ÀÌÅÍµç µ¿ÀÏÇÑ ÇüÅ·Πº¸±â ¶§¹®¿¡, µ¥ÀÌÅ͸¦ °¡¸®Å°´Â °Í°ú ±×´ÙÁö Â÷ÀÌ´Â ¾ø½À´Ï´Ù.
Áö³ª°¡´Â ¾ê±â. ¿äÁò ¾ð¾îµéÀº Æ÷ÀÎÅ͸¦ Á÷Á¢ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ¸ðµÎ Ãß»óÈ µÇÀÖÁÒ. °³¹ßÀÚ´Â ¾ó¸¶¸¸Å ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ¾ß ÇÏ´ÂÁö, Ȥ ´Ù¸¥ ÇÁ·Î¼¼½ºÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» ħ¹üÇÏÁö´Â ¾ÊÀ»Áö ¸Þ¸ð¸® ´©¼ö°¡ ¹ß»ýÇÒÁö µî¿¡ ´ëÇØ¼ °í¹ÎÇÒ ÇÊ¿ä ¾øÀÌ ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ½À´Ï´Ù.
¿äÁò °°Àº ¶§¿¡ C´Â öÁö³ ¾ð¾î°°¾Æ º¸ÀÔ´Ï´Ù. ÇÏÁö¸¸ ¿©ÀüÈ÷ Java¿Í ÇÔ²² °¡À帹ÀÌ »ç¿ëÇÏ´Â ¾ð¾îÀÔ´Ï´Ù. ¾ð¾îº° »ç¿ëÀ² º¸·¯°¡±â 1.2 ÇÔ¼ö Æ÷ÀÎÅÍ ¼±¾ð
´ÙÀ½Àº ÇÔ¼öÆ÷ÀÎÅ͸¦ ¼±¾ðÇϱâ À§ÇÑ ÀüÇüÀûÀÎ ¹æ¹ýÀÌ´Ù. return_type (*function)(arg1, arg2, ...);°¡¸®Å°±â À§ÇÑ ÇÔ¼öÀÇ ¸Å°³ º¯¼ö¿Í ¹Ýȯ °ªÀ» Àß ¸ÂÃçÁÖ¸é µË´Ï´Ù. int (*func_name)(char *);
´ÙÀ½Àº °£´ÜÇÑ ÇÔ¼ö Æ÷ÀÎÅÍ »ç¿ë ¿¹Á¦ÀÔ´Ï´Ù. #include <stdio.h> void hello(char *name) { printf ("Hi %s\n", name); } int main() { void (*Func)(char *); Func = hello; Func("test"); }°£´ÜÇÑ ÄÚµåÀÔ´Ï´Ù. void ¹Ýȯ °ªÀ» °¡Áö°í ¸Å°³ º¯¼ö·Î·Î ij¸¯ÅÍ Æ÷ÀÎÅ͸¦ °¡Áö´Â ÇÔ¼öÆ÷ÀÎÅÍ Func¸¦ ¼±¾ðÇÑ ´ÙÀ½, hello ÇÔ¼ö¸¦ °¡¸®Å°°ÔÇß½À´Ï´Ù. ÀÌÁ¦ ÇÔ¼ö Æ÷ÀÎÅͰ¡ °¡¸®Å°´Â hello ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. 1.3 ÇÔ¼öÆ÷ÀÎÅÍ»ç¿ë ¿ëµµ
ÇÔ¼ö Æ÷ÀÎÅÍÀÇ ¹®¹ýÀº ºñ±³Àû ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®Á¦´Â ¾îµð¿¡ ¿Ö »ç¿ëÇÏ´À³Ä ÇÏ´Â °ÅÁÒ. ÇÔ¼ö Æ÷ÀÎÅͶó´Â °ÍÀº ÇÔ¼ö¸¦ ÇѴܰè Ãß»óÈ Çϰڴٴ °Ì´Ï´Ù. °³¹ßÀÚ¿¡°Ô´Â ÀÎÅÍÆäÀ̽º¸¸ Á¦°øÇÏ°í ¿ëµµ¿¡ ¸Â°Ô »ç¿ëÇÏ°Ô ¸¸µå´Â°Ô ¸ñÇ¥ÀÔ´Ï´Ù.
ÇÔ¼ö Æ÷ÀÎÅÍÀÇ ¸ñÀûÀ» ÀÌÇØÇϸé, ¾îµð¿¡ ½á¾ßÇÒÁö °¨ÀÌ ÀâÈú °Ì´Ï´Ù. 1.4 Generic ÇÔ¼ö(¾Ë°í¸®Áò)ÀÇ °³¹ß
°¢ ÇлýÀÇ °ú¸ñº° ¼ºÀûµ¥ÀÌŸ°¡ ÀÖ°í, °ú¸ñº° ÃÖ°í Á¡¼ö¸¦ °¡Á®¿À´Â ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù°í °¡Á¤ÇϰڽÀ´Ï´Ù óÀ½¿¡ ÀÌ ÇÁ·Î±×·¥Àº °¢ °ú¸ñÁß "±¹¾î"ÀÇ ÃÖ°í Á¡¼ö¸¸À» °¡Á®¿Àµµ·Ï ¸¸µé¾ú½À´Ï´Ù. ±×·±µ¥ "¼öÇÐ" ÃÖ°í Á¡¼ö¸¸À» °¡Á®¿Àµµ·Ï º¯°æÇÏ°í ½Í±º¿ä ¶»°Ô ÇØ¾ß ÇÒ±î¿ä ? ȤÀº ÃÖ°í ÆòÁ¡À» °¡Á®¿À±â¸¦ ¿øÇÒ¼öµµ ÀÖ°Í °Ì´Ï´Ù.
¹°·Ð ¸ðµç °æ¿ì¿¡ ´ëÇØ¼ °íÀ¯ÀÇ ÀÛ¾÷À» ÇÏ´Â ÇÔ¼ö¸¦ ¿©·µ ¸¸µé µË´Ï´Ù¸¸ À¯Áö/º¸¼ö¼ºÀÌ ¶³¾îÁö°ÚÁÒ. ÀÌ °æ¿ì ÀԷ°ú Ãâ·ÂÀÇ µ¥ÀÌÅÍ Å¸ÀÔÀÌ °°À¸¹Ç·Î ÀϹÝÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÔ¼ö¸¦ ¸¸µç´Ù¸é Á» ´õ À¯Áö/º¸¼ö°¡ ¿ëÀÌÇÑ Äڵ带 ¸¸µé ¼ö ÀÖÀ» °Ì´Ï´Ù. ÇÔ¼ö Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇØ¼ ÀÌ·± ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. #include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <vector>
using namespace std;
typedef struct _pinfo
{
char name[12];
int math;
int korean;
int eng;
} pinfo;
void printmax(vector<pinfo> va, void (*SortFunc)(vector<pinfo>))
{
printf("ÃÖ°í ¼ºÀû Ãâ·Â ÇÁ·Î±×·¥\n");
SortFunc(va);
}
void engmax(vector<pinfo> va)
{
int max = 0;
int index = 0;
for (int i = 0; i < va.size(); i++)
{
if (va[i].eng > max)
{
max = va[i].eng;
index = i;
}
}
printf("¿µ¾î ÃÖ°íÁ¡¼ö ȹµæÀÚ´Â %s : %d\n",
va[index].name,
va[index].eng);
};
int main()
{
pinfo myinfo;
vector<pinfo> va;
myinfo.korean = 80;
myinfo.eng = 65;
myinfo.math = 99;
strncpy(myinfo.name, "yundream", 12);
va.push_back(myinfo);
myinfo.korean = 90;
myinfo.eng = 65;
myinfo.math = 74;
strncpy(myinfo.name, "kknd", 12);
va.push_back(myinfo);
myinfo.korean = 63;
myinfo.eng = 88;
myinfo.math = 55;
strncpy(myinfo.name, "junny", 12);
va.push_back(myinfo);
printmax(va, engmax);
}
ÀÌ Äڵ忡´Â printmax¶ó´Â ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÃÖ°í °ªÀ» Ãâ·ÂÇÏ´Â ÀÏÀ» ÇÕ´Ï´Ù. ÃÖ°í °ªÀ» °è»êÇÏ´Â Äڵ带 Æ÷ÇÔÇÏ´Â ÇÔ¼ö´Â ÇÔ¼ö Æ÷ÀÎÅÍ·Î ¹Þ±â·Î Çß½À´Ï´Ù. ¿¹Á¦ ÇÁ·Î±×·¥¿¡¼´Â engmax¸¦ Æ÷ÀÎÆ® Çß½À´Ï´Ù. ¸¸¾à ÃÖ°í ÆòÁ¡ÀÚ¿¡ ´ëÇÑ Á¤º¸¸¦ Ãâ·ÂÇÏ±æ ¿øÇÑ´Ù¸é ´ÙÀ½°ú °°Àº ÇÔ¼ö¸¦ ¸¸µé¾î¼ printmax¿¡ ¸Å°³ º¯¼ö·Î ³Ñ±â¸é µË´Ï´Ù. void avgmax(vector<pinfo> va)
{
int max = 0;
int total;
int index = 0;
for (int i = 0; i < va.size(); i++)
{
total = (va[i].eng + va[i].math + va[i].korean);
if ( total > max)
{
max = total;
index = i;
}
}
printf("ÃÖ°íÆòÀÚ Á¡Á¤º¸ : \n");
printf("À̸§ : %s\n", va[index].name);
printf("¿µ¾î : %d\n", va[index].eng);
printf("±¹¾î : %d\n", va[index].korean);
printf("¼öÇÐ : %d\n", va[index].math);
printf("ÆòÁ¡ : %.2f\n", (float)max/3.);
}
¾Æ·¡¿Í °°ÀÌ printmax ¸¦ È£ÃâÇÏ¸é µË´Ï´Ù. printmax(va, avgmax);ÀÌó·³ ÇÔ¼ö Æ÷ÀÎÅ͸¦ ³Ñ±èÀ¸·Î ÀÎÇØ¼, ÇÁ·Î±×·¡¸Ó´Â Çʿ信 µû¶ó ¿ø ½î¾²ÀÇ Å« º¯È¾øÀÌ ÀڱⰡ ÇÊ¿ä·Î ÇÏ´Â Äڵ常 Ãß°¡ÇÏ´Â ½ÄÀ¸·Î ÇÁ·Î±×·¥À» ½±°Ô È®Àå½Ãų¼ö ÀÖ½À´Ï´Ù. 1.5 ´Ù¸¥ Ȱ¿ë
¿©±â¿¡¼´Â ÀÌ·¯ÇÑ ¿ëµµ·Îµµ »ç¿ëÀÌ °¡´ÉÇÏ´Ù´Â°É º¸¿©ÁÖ´Â ÆÁ¼öÁØÀÇ È°¿ë¿ëµµ¸¦ º¸¿©ÁÙ°ÍÀÌ´Ù.
Á¦°¡ ÇÁ·Î±×·¡¹ÖÀ» ÇÒ¶§ °¡²û »ç¿ëÇÏ´Â ¹æ¹ýÀε¥, Äڵ带 ±ò²ûÇÏ°í º¸±â ½±°Ô ¸¸µé¾îÁÝ´Ï´Ù. ¾²·¹µå ÇÔ¼ö¸¦ ÇÔ¼ö Æ÷ÀÎÅ͸¦ °ªÀ¸·Î ÇÏ´Â vector ¿¡ µî·ÏÇØ¼ ¾²·¹µå »ý¼ºµî¿¡ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù.
À̹æ¹ýÀ» ¾²¸é ºñ·Ï ¸îÁÙÀ̱ä ÇÏÁö¸¸ ºÐ¸íÈ÷ ÄÚµù·®À» ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ¾²·¹µå ÇÔ¼ö¸¦ ÇÑ¿µ¿ª¿¡¼ ¸ð¾Æ¼ °ü¸®ÇÔÀ¸·Î Äڵ带 Á»´õ º¸±â ½±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. #include <pthread.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <vector> #include <iostream> #define MAX_THREAD_NUM 20 using namespace std; void *func1(void *) { printf("Thread 1\n"); pause(); } void *func2(void *) { printf("Thread 2\n"); pause(); } void *func3(void *) { printf("Thread 3\n"); pause(); } void *func4(void *) { printf("Thread 4\n"); pause(); } int main() { // ÀÎÀÚ°¡ ÇÔ¼öÆ÷ÀÎÅÍÀÎ vector »ý¼º vector<void *(*)(void *)> thread_list; vector<pthread_t> tident(MAX_THREAD_NUM); int status; thread_list.push_back(func1); thread_list.push_back(func2); thread_list.push_back(func3); thread_list.push_back(func4); cout << "µî·ÏµÈ ¾²·¹µå " << thread_list.size() << endl; for (int i = 0; i < thread_list.size(); i++) { pthread_create(&tident[i], NULL, thread_list[i], (void *)NULL); } cout << "thread Join Wait" << endl; for (int i = 0; i < tident.size(); i++) { pthread_join(tident[i], (void **)&status); } return 1; } 1.6 Àü¼úÆÐÅÏ ÀÀ¿ë
ÇÔ¼ö Æ÷ÀÎÅÍ·Î Àü¼ú ÆÐÅϱ¸ÇöÇϱâ Âü°í 1.7 ¿ÉÀú¹öÆÐÅÏ ÀÀ¿ë
Á¤¸® Áß 2 °á·Ð
ÀÌ»ó °£´ÜÇÏ°Ô ÇÔ¼öÆ÷ÀÎÅÍÀÇ »ç¿ë¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾ÆºÃ½À´Ï´Ù.
»ç¿ë¹æ¹ýÀÌ ´«¿¡ ½¬ µé¾î¿ÀÁö ¾ÊÀ» ¼öµµ ÀÖÁö¸¸, ¾Ë¾ÆµÎ¸é ¸¹Àº µµ¿òÀÌ µË´Ï´Ù. C¿¡¼ °´Ã¼ÁöÇâÀ» À§Çؼ ³Î¸® »ç¿ëÇϰí ÀÖÀ¸´Ï±î¿ä. 3 Âü°í¹®Çå
4 È÷½ºÅ丮
|
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|