Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

C ÓïÑÔÖеÄÖ¸ÕëºÍÄÚ´æÐ¹Â©

http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/index.html
Ó¢ÎÄÔ­ÎÄ

ÒýÑÔ
¶ÔÓÚÈκÎʹÓà C ÓïÑÔµÄÈË£¬Èç¹ûÎÊËûÃÇ C ÓïÑÔµÄ×î´ó·³ÄÕÊÇʲô£¬ÆäÖÐÐí¶àÈË¿ÉÄÜ»á»Ø´ð˵ÊÇÖ¸ÕëºÍÄÚ´æÐ¹Â©
¡£ÕâЩµÄÈ·ÊÇÏûºÄÁË¿ª·¢ÈËÔ±´ó¶àÊýµ÷ÊÔʱ¼äµÄÊÂÏî¡£Ö¸ÕëºÍÄÚ´æÐ¹Â©¶ÔijЩ¿ª·¢ÈËÔ±À´ËµËƺõÁîÈËη¾å£¬µ«ÊÇÒ»µ©ÄúÁ˽âÁËÖ¸Õë¼°Æä¹ØÁªÄÚ´æ²Ù×÷µÄ»ù´¡£¬ËüÃǾÍÊÇÄúÔÚ C ÓïÑÔÖÐÓµÓеÄ×îÇ¿´ó¹¤¾ß¡£
±¾ÎĽ«ÓëÄú·ÖÏí¿ª·¢ÈËÔ±ÔÚ¿ªÊ¼Ê¹ÓÃÖ¸ÕëÀ´±à³ÌǰӦ¸ÃÖªµÀµÄÃØÃÜ¡£±¾ÎÄÄÚÈݰüÀ¨£º

µ¼ÖÂÄÚ´æÆÆ»µµÄÖ¸Õë²Ù×÷ÀàÐÍ
ÔÚʹÓö¯Ì¬ÄÚ´æ·ÖÅäʱ±ØÐ뿼Âǵļì²éµã
µ¼ÖÂÄÚ´æÐ¹Â©µÄ³¡¾°

Èç¹ûÄúÔ¤ÏÈÖªµÀʲôµØ·½¿ÉÄܳö´í£¬ÄÇôÄú¾ÍÄܹ»Ð¡ÐıÜÃâÏÝÚ壬²¢Ïû³ý´ó¶àÊýÓëÖ¸ÕëºÍÄÚ´æÏà¹ØµÄÎÊÌâ¡£

ʲôµØ·½¿ÉÄܳö´í£¿
Óм¸ÖÖÎÊÌⳡ¾°¿ÉÄÜ»á³öÏÖ£¬´Ó¶ø¿ÉÄÜÔÚÍê³ÉÉú³Éºóµ¼ÖÂÎÊÌâ¡£ÔÚ´¦ÀíÖ¸Õëʱ£¬Äú¿ÉÒÔʹÓñ¾ÎÄÖеÄÐÅÏ¢À´±ÜÃâÐí¶àÎÊÌâ¡£
»ØÒ³Ê×
δ³õʼ»¯µÄÄÚ´æ
ÔÚ±¾ÀýÖУ¬p
Òѱ»·ÖÅäÁË 10 ¸ö×Ö½Ú¡£Õâ 10 ¸ö×Ö½Ú¿ÉÄܰüº¬À¬»øÊý¾Ý£¬Èçͼ 1
Ëùʾ¡£
char *p = malloc ( 10 );


ͼ 1. À¬»øÊý¾Ý

Èç¹ûÔÚ¶ÔÕâ¸ö p
¸³ÖµÇ°£¬Ä³¸ö´úÂë¶Î³¢ÊÔ·ÃÎÊËü£¬Ôò¿ÉÄÜ»á»ñµÃÀ¬»øÖµ£¬ÄúµÄ³ÌÐò¿ÉÄܾßÓв»¿ÉÔ¤²âµÄÐÐΪ¡£p
¿ÉÄܾßÓÐÄúµÄ³ÌÐò´ÓÎ´ÔøÔ¤Áϵ½µÄÖµ¡£
Á¼ºÃµÄʵ¼ùÊÇʼÖÕ½áºÏʹÓà memset
ºÍ malloc
£¬»òÕßʹÓà calloc
¡£
char *p = malloc (10);
memset(p,’\0’,10);
ÏÖÔÚ£¬¼´Ê¹Í¬Ò»¸ö´úÂë¶Î³¢ÊÔÔÚ¶Ô p
¸³ÖµÇ°·ÃÎÊËü£¬¸Ã´úÂë¶ÎÒ²ÄÜÕýÈ·´¦Àí Null
Öµ£¨ÔÚÀíÏëÇé¿öÏÂÓ¦¾ßÓеÄÖµ£©£¬È»ºó½«¾ßÓÐÕýÈ·µÄÐÐΪ¡£
»ØÒ³Ê×
Äڴ渲¸Ç
ÓÉÓÚ p
Òѱ»·ÖÅäÁË 10 ¸ö×Ö½Ú£¬Èç¹ûij¸ö´úÂëÆ¬¶Î³¢ÊÔÏò p
дÈëÒ»¸ö 11 ×Ö½ÚµÄÖµ£¬Ôò¸Ã²Ù×÷½«ÔÚ²»¸æËßÄúµÄÇé¿öÏÂ×Ô¶¯´ÓÆäËûij¸öλÖÓ³Ôµô”Ò»¸ö×Ö½Ú¡£ÈÃÎÒÃǼÙÉèÖ¸Õë q
±íʾ¸ÃÄÚ´æ¡£


ͼ 2. ԭʼ q ÄÚÈÝ




ͼ 3. ¸²¸ÇºóµÄ q ÄÚÈÝ

½á¹û£¬Ö¸Õë q
½«¾ßÓдÓδԤÁϵ½µÄÄÚÈÝ¡£¼´Ê¹ÄúµÄÄ£¿é±àÂëµÃ×ã¹»ºÃ£¬Ò²¿ÉÄÜÓÉÓÚij¸ö¹²´æÄ£¿éÖ´ÐÐijЩÄÚ´æ²Ù×÷¶ø¾ßÓв»ÕýÈ·µÄÐÐΪ¡£ÏÂÃæµÄʾÀý´úÂëÆ¬¶ÎÒ²¿ÉÒÔ˵Ã÷ÕâÖÖ³¡¾°¡£
char *name = (char *) malloc(11);
// Assign some value to name
memcpy ( p,name,11); // Problem begins here
ÔÚ±¾ÀýÖУ¬memcpy
²Ù×÷³¢ÊÔ½« 11 ¸ö×Ö½Úдµ½ p
£¬¶øºóÕß½ö±»·ÖÅäÁË 10 ¸ö×Ö½Ú¡£
×÷ΪÁ¼ºÃµÄʵ¼ù£¬Ã¿µ±


Ïà¹ØÎĵµ£º

ÿÈÕC(3.Linux³£ÓÃCº¯Êý ÄÚ´æ¿ØÖÆÆª)

ÄÚ´æ¿ØÖÆÆª
calloc
free
getpagesize
malloc
mmap
munmap
calloc£¨ÅäÖÃÄÚ´æ¿Õ¼ä£©
Ïà¹Øº¯Êý
malloc£¬free£¬realloc£¬brk
±íÍ·Îļþ
#include <stdlib.h>
¶¨Ò庯Êý
void *calloc(size_t nmemb£¬size_t size);
º¯Êý˵Ã÷
calloc()ÓÃÀ´ÅäÖÃnmemb¸öÏàÁÚµÄÄڴ浥λ£¬Ã¿Ò»µ¥Î»µÄ´óСΪsize£¬²¢·µ»ØÖ¸ÏòµÚ ......

Linux c/c++ ¿ª·¢¹¤¾ß¼¯½õ

ÎÒ֮ǰÊÇÒ»¸öC³ÌÐòÔ±£¬¶øÇÒÊǸöWindowsµÄ³ÌÐòÔ±£¬ÔÚwindowsÏÂʹÓÃVC6.0/VS2005µÈmicrosoftµÄɵ¹Ïʽ¹¤¾ß¹¤×÷£¬
¶ÔÓÚÄǸövc 6.0/vs2005µÄ¿ì½Ý²Ù×÷£¬debug²Ù×÷ÊÇÄÇôµÄÊìϤ£¬¿ÉÒÔ˵vc
6.0/vs2005ÊÇwindowÏ¿ª·¢c/c++×îºÃÓõŤ¾ßÁË£¬¿ÉÒԲ鿴µ÷ÓöÑÕ»£¬ÄÚ´æ±ä»¯Çé¿ö£¬±äÁ¿Öµ£¬ÁíÍâ°²×° visual assist
xºóÈÃVC¿´ÆðÀ´ÊÇÄÇô ......

C³£ÓôúÂë

Ò»¡¢ÅúÁ¿×ªÒÆ×Ö·ûµ½»º³åÇø
bufptr = buffer;
void bufwrite(char* p,int n)
{
    while(n>0)
    {
          int k,rem;
          if(bufptr == &buffer[N])
 &nbs ......

c/sµÄÏîÄ¿´ò°ü£¨º¬ÅäÖÃÎļþ£©

1 ÔÚ½â¾ö·½°¸ÖÐÌí¼ÓWindows°²×°ÏîÄ¿
   ˼·: A ÆäËüÏîÄ¿ÀàÐÍ->°²×°ºÍ²¿Êð
     B Ñ¡Ôñ°²×°ÏîĿģ°å
2 Íê³É³ÌÐòµÄÌí¼Ó
    ˼·: A Ñ¡ÖÐÓ¦ÓóÌÐòÎļþ¼Ð->ÓÒ¼üÑ¡ÔñÌí¼ÓÎļþ->
        Ñ¡ÖÐÓ¦ÓóÌÐò(ÏîÄ¿Ãû.exe)£¨Íê³É³ÌÐòµÄ´ò°ü£ ......

C×Ö·û´®´¦Àíº¯ÊýµÄʵÏÖ£¨Linux£©

C×Ö·û´®´¦Àíº¯ÊýµÄʵÏÖ£¨Linux£©
#include <stddef.h>
char * ___strtok = NULL;

char * strcpy(char * dest,const char *src)
{
char *tmp = dest;

while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}

char * strncpy(char * des ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ