C Traps and Pitfalls Ëæ±Ê
CÏÝÚåÓÚȱÏÝÕâ±¾Ê鵽ͼÊé¹Ý½èÁ˺ܾã¬Ò»Ö±¶¼Ã»ÓÐϸϸµÄ¿´£¬ÏÖÍêÕûµÄ¿´ÁËÖ®ºó°ÑÈÏÎªÖØÒªµÄ£¬Ò»°ãÈË¿ÉÄܺöÊÓµÄÎÊÌâ¸ø×öÁ˱ʼǣ¬Ï£ÍûÓÐËù°ïÖú
2010.02.25
¶þάÊý×é:
int calendar[12][31];
int * p;
int i;
calendar[4]µÄº¬Ò壺
calendar[4]ÊÇcalendarÊý×éµÄµÚ5¸öÔªËØ£¬ÊÇcalendarÊý×éÖÐ12¸öÓÐ×Å31¸öÕûÐÍÔªËØµÄÊý×éÖ®Ò»¡£
szieof(calendar[4])µÄ½á¹ûÊÇ31Óësizeof(int)µÄ³Ë»ý¡£
p=calendar[4];±íʾָÕëpÖ¸Ïòcalendar[4]ÖÐϱêΪ0µÄÔªËØ¡£
i=calendar[4][7];i=*(calendar[4]+7);i=*(*(calendar+4)+7);ΪͬÑùµÄ¹¦ÄÜ¡£
p=calendar;·Ç·¨£¬calendarÊÇÒ»¸ö¶þάÊý×飬¼´"Êý×éµÄÊý×é",±»×ª»»ÎªÒ»¸öÖ¸ÏòÊý×éµÄÖ¸Õ룻pΪָÏòÕûÐͱäÁ¿µÄÖ¸Õë¡£
int (*monthp)[31];monthp=calendar:ΪºÏ·¨µÄ¡£monthpÖ¸ÏòcalendarµÄµÚÒ»¸öÔªËØ
calendar[i][j]=0;Óë*(*(calendar+i)+j)=0;µÈ¼Û¡£
for(monthp=calendar;monthp< &calendar[12];monthp++)//¿ÉÒÔÓÃmonthp²½½øµÄ·½Ê½±ãÀûÊý×écalendar;
for(monthp=calendar;monthp< &calendar[12];monthp++)
int * dayp;
for(dayp=* monthp;dayp<&(*monthp)[31];dayp++)
*dayp=0;
×ܽ᣺
¿ÉÄÜÔÚCÓïÑÔÖжþάÊý×é²»ÊÇÁ¬Ðø·ÖÅäµÄ£¬µÚһάÖеÄÿһ¸öÔªËØÎªµÚ¶þάÊý×éµÄÊ×µØÖ·¡£
·ÇÊý×éÖ¸ÕëʹÓãº
char * r;
r=malloc(strlen(s)+strlen(t)+1);
if(!r) //error control;
strcpy(r,s);
strcat(r,t);
//control;
fress(r);
mallocº¯Êý¿ÉÄÜÎÞ·¨ÌṩÇëÇóµÄÄڴ棬½«·µ»Ø¿ÕÖ¸Õë¡£
strlen·µ»Ø×Ö·û´®ÖÐËù°üº¬µÄ×Ö·ûÊýÄ¿£¬×÷Ϊ½áÊø±êÖ¾µÄ¿Õ×Ö·û묒ËãÔÚÄÚ¡£strlen(s)µÄֵΪn£¬Ôò×Ö·û´®Êµ¼ÊÐèÒª£î+£±¸ö×Ö·ûµÄ¿Õ¼ä¡£
char hello[]="hello";
printf("%s\n",hello);Óëprintf("%s\n",&hello[0])µÈЧ¡£
char *p,*q;
p="xyz";//pµÄÖµ²»ÊÇ"xyz"£¬p¶øÊÇÖ¸Ïò×Ö·ûÊý×éµÄÆøÖÊÔªËØµÄÖ¸Õ룻
q=p;//pºÍqÖ¸ÏòÄÚ´æÖÐͬһµØÖ·µÄÖ¸Õë¡£¸Ã¸³ÖµÓï¾ä²¢Ã»ÓÐͬʱ¸´ÖÆÄÚ´æÖеÄ×Ö·û
q[1]='Y';//q£¬pÖ¸ÏòµÄ×Ö·û´®¶¼¸Ä±ä¡£
Êý×éÖÐʵ¼Ê²»´æÔڵēÒç½ç”ÔªËØµÄµØÖ·Î»ÓÚÊý×éËùÕ¼ÄÚ´æÖ®ºó£¬Õâ¸öµØÖ·¿ÉÒÔÓÃÓÚ¸´ÖƺͱȽϣ¬ÒýÓøÃÔªËØÔò·Ç·¨¡£
static:
static int a£»±íʾaµÄ×÷ÓÃÓòÏÞÖÆÔÚÒ»¸öÔ´ÎļþÖУ¬¶ÔÓÚÆäËûÔ´Îļþ£¬aÊDz»¿É¼ûµÄ¡£staticÒ²ÊÊÓÃÓÚº¯Ê
Ïà¹ØÎĵµ£º
ÕâÆªÎÄÕÂÊÇʹÓÃSQLite C/C++½Ó¿ÚµÄÒ»¸ö¸ÅÒª½éÉܺÍÈëÃÅÖ¸ÄÏ¡£
ÓÉÓÚÔçÆÚµÄSQLiteÖ»Ö§³Ö5¸öC/C++½Ó¿Ú£¬Òò¶ø·Ç³£ÈÝÒ×ѧϰºÍʹÓ㬵«ÊÇËæ×ÅSQLite¹¦ÄܵÄÔöÇ¿£¬ÐµÄC/C++½Ó¿Ú
²»¶ÏµÄÔö¼Ó½øÀ´£¬µ½ÏÖÔÚÓг¬¹ý150¸ö²»Í¬µÄAPI½Ó¿Ú¡£ÕâÍùÍùʹ³õѧÕßÍû¶øÈ´²½¡£ÐÒÔ˵ÄÊÇ£¬´ó¶àÊýSQLiteÖеÄC/C++½Ó¿ÚÊÇרÓõģ¬Òò¶øºÜÉÙ±»
ʹÓõ½¡£¾¡¹Ü ......
1£¬LinuxµÄI2CÇý¶¯¼Ü¹¹¸ÅÀÀ
LinuxÖÐI2C×ÜÏßµÄÇý¶¯·ÖΪÁ½¸ö²¿·Ö£¬×ÜÏßÇý¶¯£¨BUS£©ºÍÉ豸Çý¶¯£¨DEVICE£©¡£ÆäÖÐ×ÜÏßÇý¶¯µÄÖ°Ôð£¬ÊÇΪϵͳÖÐÿ¸öI2C×ÜÏßÔö¼ÓÏàÓ¦µÄ¶Áд·½·¨£¨±ÈÈ粻ͬµÄÖ÷оƬ¼¯³ÉµÄI2C¿ØÖÆÆ÷£©¡£µ«ÊÇ×ÜÏßÇý¶¯±¾Éí²¢²»»á½øÐÐÈκεÄͨѶ£¬ËüÖ»ÊÇ´æÔÚÔÚÄÇÀµÈ´ýÉ豸Çý¶¯µ÷ÓÃÆäº ......
C/C++³ÌÐòԱӦƸ³£¼ûÃæÊÔÌâÉîÈëÆÊÎö(1)
×÷ÕߣºËᦻª e-mail:21cnbao@21cn.com ³ö´¦£ºÈí¼þ±¨
1.ÒýÑÔ
±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº¡£ÎÄÖеÄ
´ó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
Ðí¶àÃæÊÔÌâ¿´ËÆ¼òµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀ ......
CÖÐÔ¤±àÒëºê¶¨Òå
2010-01-07 11:49
ÔÚ½«Ò»¸öCÔ´³ÌÐòת»»Îª¿ÉÖ´ÐгÌÐòµÄ¹ý³ÌÖÐ, ±àÒëÔ¤´¦ÀíÊÇ×î³õµÄ²½Öè. ÕâÒ»²½ÖèÊÇÓÉÔ¤´¦ÀíÆ÷(preprocessor)À´Íê³ÉµÄ. ÔÚÔ´Á÷³ÌÐò±»±àÒëÆ÷´¦Àí֮ǰ, Ô¤´¦ÀíÆ÷Ê×ÏȶÔÔ´³ÌÐòÖеÄ"ºê(macro)"½øÐд¦Àí.
C ³õѧÕß¿ÉÄܶÔÔ¤´¦ÀíÆ÷ûʲô¸ÅÄî, ÕâÊÇÇéÓпÉÔµÄ: Ò»°ãµÄC±àÒëÆ÷¶¼½«Ô¤´¦Àí, »ã±à, ± ......