??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲乱码精品久久久久..,国产偷久久久精品专区,久久久无码精品午夜http://www.shnenglu.com/qiaodong/category/2992.html耶\撒冷对你来说意味着什么?zh-cnMon, 26 May 2008 08:23:32 GMTMon, 26 May 2008 08:23:32 GMT60C E序设计l典书籍http://www.shnenglu.com/qiaodong/archive/2007/06/07/25706.html乔栋乔栋Thu, 07 Jun 2007 01:56:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/06/07/25706.htmlhttp://www.shnenglu.com/qiaodong/comments/25706.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/06/07/25706.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/25706.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/25706.html
荣耀QCE序设计之四书五l?
来自:bookread
此书架对287人里?span id=pp>208人有?
对你 有用 无用
 
CE序设计教程 
Q美QH.M.Deitel{著 薛万鹏等?/ 2000q??/ 机械工业出版C?/ 33?/ 787*1092 1/16 /

 
C陷阱与缺?/a> 
Andrew Koenig?高巍?/ 2002q?1?/ 人民邮电(sh)出版C?/ 30?/ 720*980 1/16 /

 
C语言接口与实现——创建可重用软g的技?/a> 
[]汉森 著,傅蓉{??/ 01 1 2004 12:00AM / 机械工业出版C?/ 35?/ 787*1092 1/16 /

 
C语言参考手册(原书W?版)(j) 
Q美QSamuel P.Harbison III/Guy L.Steele Jr.?׃潘等?/ 2003q??/ 机械工业出版C?/ 39?/ 787*1092 1/16 /

 
C语言参考手册(W五版)(j)Q英文版Q?/a> 
哈比,斯蒂??/ 06 1 2003 12:00AM / 人民邮电(sh)出版C?/ 45?/ 16开 /

 
C专家~程 
Peter Van Der Linden?徐L?/ 2002q?2?/ 人民邮电(sh)出版C?/ 40?/ 800*1000 1/16 /

 
CE序设计语言Q第2?#183;新版Q习(fn)题解{?/a> 
[]汤朵Q[]吉米拜尔 著,杨涛{??/ 01 1 2004 12:00AM / 机械工业出版C?/ 15?/ 787*1092 1/16 /

 
CE序设计语言(W??#183;新版) 
Q美Q克汉Q()(j)里奇 著,徐宝文,李志 ?/ 01 1 2004 12:00AM / 机械工业出版C?/ 30?/ 787*1092 1/16 /

 
CE序设计语言W二版习(fn)题解{(W二?Q英文媄(jing)印版Q?/a> 
Clovis L.Tondo,Scott E.Gimpel / 2000-3-1 / 清华大学出版C?/ 12?/

 
CE序设计语言 
Brian W.Kernighan / 1997q??/ 清华大学出版C?/ 0?/ 850*1168 1/32 /






















































































































乔栋 2007-06-07 09:56 发表评论
]]>
C 的面试问?/title><link>http://www.shnenglu.com/qiaodong/archive/2007/04/05/21294.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Thu, 05 Apr 2007 03:18:00 GMT</pubDate><guid>http://www.shnenglu.com/qiaodong/archive/2007/04/05/21294.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/21294.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2007/04/05/21294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/21294.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/21294.html</trackback:ping><description><![CDATA[<a ><br><br><br><br>http://blog.csdn.net/ruibird/archive/2007/03/31/1547882.aspx</a><br><br><br><br> <img src ="http://www.shnenglu.com/qiaodong/aggbug/21294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2007-04-05 11:18 <a href="http://www.shnenglu.com/qiaodong/archive/2007/04/05/21294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>宏的使用http://www.shnenglu.com/qiaodong/archive/2007/04/05/21293.html乔栋乔栋Thu, 05 Apr 2007 03:16:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/04/05/21293.htmlhttp://www.shnenglu.com/qiaodong/comments/21293.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/04/05/21293.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/21293.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/21293.html
http://www.vckbase.com/document/viewdoc/?id=957






乔栋 2007-04-05 11:16 发表评论
]]>
斐L那契数列http://www.shnenglu.com/qiaodong/archive/2007/03/11/19585.html乔栋乔栋Sun, 11 Mar 2007 15:02:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/03/11/19585.htmlhttp://www.shnenglu.com/qiaodong/comments/19585.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/03/11/19585.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/19585.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/19585.htmlmain()
{
 (tng)  (tng) (tng)  (tng) (tng) (tng)int a,b;
 (tng)  (tng) (tng)  (tng) (tng) (tng)int i;
 (tng)  (tng) (tng)  (tng) (tng) (tng)a=b=1;
 (tng)  (tng) (tng)  (tng) (tng) (tng)for(i=1;i<100;i++)
 (tng)  (tng) (tng)  (tng) (tng) (tng){
 (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng) printf("%4d%4d",a,b);
 (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng) a+=b;
 (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng) b+=a;
 (tng)  (tng) (tng)  (tng) (tng) (tng)}
 (tng)  (tng) (tng)  (tng) (tng) (tng)printf("\n");
}




乔栋 2007-03-11 23:02 发表评论
]]>
C下用mysqlhttp://www.shnenglu.com/qiaodong/archive/2007/03/07/19349.html乔栋乔栋Wed, 07 Mar 2007 03:32:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/03/07/19349.htmlhttp://www.shnenglu.com/qiaodong/comments/19349.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/03/07/19349.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/19349.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/19349.html (tng)  (tng)
 (tng) #include  (tng) <conio.h>  (tng)
 (tng) #include  (tng) <stdarg.h>  (tng)
 (tng) #include  (tng) <stdio.h>  (tng)
 (tng) #include  (tng) <stdlib.h>  (tng)
 (tng) #include  (tng) "winsock.h"  (tng)
 (tng) #include  (tng) "mysql.h"  (tng)
 (tng)  (tng)
 (tng) MYSQL  (tng)  (tng)  (tng)  (tng)  (tng) *mysql  (tng) =  (tng) NULL;  (tng)
 (tng)  (tng)
 (tng) void  (tng) MySQLError(void)  (tng)
 (tng) {  (tng)
 (tng) fprintf(stderr,  (tng) "%s\n",  (tng) mysql_error(mysql));  (tng)
 (tng) exit(1);  (tng)
 (tng) }  (tng)
 (tng)  (tng)
 (tng) void  (tng) ExecuteSQL(char  (tng) *fmt,  (tng) ...)  (tng)
 (tng) {  (tng)
 (tng) char  (tng) SQL[1000]  (tng) =  (tng) {0};  (tng)
 (tng) int  (tng)  (tng) retval;  (tng)
 (tng) va_list  (tng) args;  (tng)
 (tng) va_start(args,  (tng) fmt);  (tng)
 (tng) if  (tng) (_vsnprintf(SQL,  (tng) sizeof(SQL)-1,  (tng) fmt,  (tng) args)  (tng) <  (tng) 0)  (tng)
 (tng) {  (tng)
 (tng) fprintf(stderr,  (tng) "SQL  (tng) query  (tng) truncated!  (tng) Increase  (tng) SQL  (tng) buffer  (tng) size  (tng) in  (tng) ExecuteSQL\n");  (tng)
 (tng) exit(1);  (tng)
 (tng) }  (tng)
 (tng) va_end(args);  (tng)
 (tng) retval  (tng) =  (tng) mysql_query(mysql,  (tng) SQL);  (tng)
 (tng) if  (tng) (retval)  (tng)
 (tng) {  (tng)
 (tng) fprintf(stderr,  (tng) "Original  (tng) SQL  (tng) Statement:  (tng) %s\n",  (tng) SQL);  (tng)
 (tng) fprintf(stderr,  (tng) "%s\n",  (tng) mysql_error(mysql));  (tng)
 (tng) exit(2);  (tng)
 (tng) }  (tng)
 (tng) }  (tng)
 (tng)  (tng)
 (tng) int  (tng) main()  (tng)
 (tng) {  (tng)
 (tng) UINT  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) i;  (tng)
 (tng) UINT  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) FieldCount;  (tng)
 (tng) MYSQL_RES  (tng)  (tng)  (tng) *res  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) =  (tng) NULL;  (tng)
 (tng) MYSQL_ROW  (tng)  (tng)  (tng)  (tng) row  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) =  (tng) NULL;  (tng)
 (tng) MYSQL_FIELD  (tng) *field;  (tng)
 (tng)  (tng)
 (tng) char  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) *DBName  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) =  (tng) "Test";  (tng)
 (tng) char  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) *TableName  (tng)  (tng)  (tng) =  (tng) "People";  (tng)
 (tng) char  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) *CreateDB  (tng)  (tng)  (tng)  (tng) =  (tng) "CREATE  (tng) DATABASE  (tng) IF  (tng) NOT  (tng) EXISTS  (tng) %s";  (tng)
 (tng) char  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) *DropTable  (tng)  (tng)  (tng) =  (tng) "DROP  (tng) TABLE  (tng) IF  (tng) EXISTS  (tng) %s";  (tng)
 (tng) char  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) *CreateTable  (tng) =  (tng) "CREATE  (tng) TABLE  (tng) IF  (tng) NOT  (tng) EXISTS  (tng) %s  (tng) (\n"  (tng)
 (tng)  (tng) "ID  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) INT  (tng) UNSIGNED  (tng) AUTO_INCREMENT,  (tng) \n"  (tng)
 (tng)  (tng) "FirstName  (tng)  (tng) VARCHAR(32),  (tng) \n"  (tng)
 (tng)  (tng) "MiddleName  (tng) VARCHAR(32),  (tng) \n"  (tng)
 (tng)  (tng) "LastName  (tng)  (tng)  (tng) VARCHAR(32),  (tng) \n"  (tng)
 (tng)  (tng) "Address1  (tng)  (tng)  (tng) VARCHAR(50),  (tng) \n"  (tng)
 (tng)  (tng) "Address2  (tng)  (tng)  (tng) VARCHAR(50),  (tng) \n"  (tng)
 (tng)  (tng) "City  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) VARCHAR(50),  (tng) \n"  (tng)
 (tng)  (tng) "State  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) VARCHAR(2),  (tng) \n"  (tng)
 (tng)  (tng) "Zip  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) VARCHAR(5),  (tng) \n"  (tng)
 (tng)  (tng) "Email  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) VARCHAR(50),  (tng) \n"  (tng)
 (tng)  (tng) "Gender  (tng)  (tng)  (tng)  (tng)  (tng) VARCHAR(1),  (tng) \n"  (tng)
 (tng)  (tng) "WorkPhone  (tng)  (tng) VARCHAR(50),  (tng) \n"  (tng)
 (tng)  (tng) "HomePhone  (tng)  (tng) VARCHAR(50),  (tng) \n"  (tng)
 (tng)  (tng) "CellPhone  (tng)  (tng) VARCHAR(50),  (tng) \n"  (tng)
 (tng)  (tng) "BirthDate  (tng)  (tng) DATE  (tng) NULL,  (tng) \n"  (tng)
 (tng)  (tng) "Primary  (tng) Key  (tng) (ID)  (tng) \n"  (tng)
 (tng)  (tng) ")\n";  (tng)
 (tng) char  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) *AddRecord  (tng)  (tng)  (tng) =  (tng) "INSERT  (tng) INTO  (tng) %s  (tng) (FirstName,  (tng) LastName)  (tng) VALUES  (tng) ('FirstName  (tng) %03d',  (tng) 'LastName  (tng) %03d')";  (tng)
 (tng) char  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) *GetRecords  (tng)  (tng) =  (tng) "SELECT  (tng) ID,  (tng) FirstName,  (tng) LastName  (tng) FROM  (tng) %s";  (tng)
 (tng)  (tng)
 (tng)  (tng)
 (tng)  (tng)
 (tng) //  (tng) Initialize  (tng) MySQL  (tng)
 (tng) mysql  (tng) =  (tng) mysql_init(NULL);  (tng)
 (tng)  (tng)
 (tng) //  (tng) Connect  (tng) to  (tng) MySQL  (tng)
 (tng) if  (tng) (!(mysql_real_connect(mysql,  (tng) "localhost",  (tng) "admin",  (tng) "",  (tng) NULL,  (tng) mysql->port,  (tng) 0,  (tng) 0)))  (tng)  (tng)
 (tng) MySQLError();  (tng)
 (tng)  (tng)
 (tng) //  (tng) Create  (tng) database  (tng)
 (tng) ExecuteSQL(CreateDB,  (tng) DBName);  (tng)
 (tng)  (tng)
 (tng) //  (tng) Connect  (tng) to  (tng) temporary  (tng) database  (tng)
 (tng) if  (tng) (mysql_select_db(mysql,  (tng) DBName))  (tng)
 (tng) MySQLError();  (tng)
 (tng)  (tng)
 (tng) //  (tng) Delete  (tng) table  (tng) if  (tng) it  (tng) already  (tng) exists.  (tng)
 (tng) ExecuteSQL(DropTable,  (tng) TableName);  (tng)
 (tng)  (tng)
 (tng) //  (tng) Create  (tng) table  (tng)
 (tng) ExecuteSQL(CreateTable,  (tng) TableName);  (tng)
 (tng)  (tng)
 (tng) //  (tng) Insert  (tng) some  (tng) data  (tng) into  (tng) the  (tng) table.  (tng)
 (tng) for  (tng) (i  (tng) =  (tng) 0;  (tng) i  (tng) <  (tng) 200;  (tng) i++)  (tng)
 (tng) ExecuteSQL(AddRecord,  (tng) TableName,  (tng) i,  (tng) i);  (tng)
 (tng)  (tng)
 (tng) //  (tng) Execute  (tng) query  (tng)
 (tng) ExecuteSQL(GetRecords,  (tng) TableName);  (tng)
 (tng)  (tng)
 (tng) //  (tng) Store  (tng) the  (tng) recordset  (tng)
 (tng) if  (tng) ((res  (tng) =  (tng) mysql_store_result(mysql))  (tng) ==  (tng) NULL)  (tng)
 (tng) MySQLError();  (tng)
 (tng)  (tng)
 (tng) //  (tng) Print  (tng) the  (tng) recordset  (tng)
 (tng) printf("Table  (tng) %s\n",  (tng) TableName);  (tng)
 (tng) while((field  (tng) =  (tng) mysql_fetch_field(res))  (tng) !=  (tng) NULL)  (tng)
 (tng) printf("%s\t",  (tng) field->name);  (tng)
 (tng) printf("\n");  (tng)
 (tng) FieldCount  (tng) =  (tng) mysql_num_fields(res);  (tng)
 (tng) while((row  (tng) =  (tng) mysql_fetch_row(res))  (tng) !=  (tng) NULL)  (tng)  (tng)
 (tng) {  (tng)
 (tng) for  (tng) (i  (tng) =  (tng) 0;  (tng) i  (tng) <  (tng) FieldCount;  (tng) i++)  (tng)  (tng)
 (tng) printf("%s\t",  (tng) row[i]);  (tng)
 (tng) printf("\n");  (tng)
 (tng) }  (tng)
 (tng) printf("\nTotal  (tng) rows:  (tng) %d\n",  (tng) mysql_num_rows(res));  (tng)
 (tng)  (tng)
 (tng) //  (tng) Free  (tng) the  (tng) recordset  (tng)
 (tng) mysql_free_result(res);  (tng)
 (tng)  (tng)
 (tng) //  (tng) Close  (tng) the  (tng) connection  (tng)
 (tng) mysql_close(mysql);  (tng)
 (tng)  (tng)
 (tng) printf("\nPrint  (tng) any  (tng) key  (tng) to  (tng) continue...\n");  (tng)
 (tng) getche();  (tng)
 (tng) }  (tng)
 (tng)  (tng)
 (tng) 如果有问题,请加入mysql++.lib (tng) (tng) (tng) (tng)





 (tng) (tng) (tng) (tng) void mysql_close(MYSQL *connection);关闭一个连接?br />3Q?tng) (tng) (tng) (tng)?执行SQL语句
mysql_select_dbQMYSQL *connection,const char *db_nameQ?选定某个数据库?br /> (tng) (tng) (tng) (tng) int mysql_query(MYSQL *connection,const char *query)//他将执行query语句Q运行成功将q回0Q例如mysql_query(conn_ptr, Create table cert_info(...),创Z个名为cert_info的表Q几乎所有的SQL语句都能q么执行。呵呵,是不是显得很单,他就和命令行中输入的SQL语句差不多。在使用上面函数的时候一般会(x)使用
 (tng) (tng) (tng) (tng) my_ulonglong mysql_affected_rows(MYSQL *connection)Q这个函数返回的是mysql_query对进行改动的行的数量?br />4Q?tng) (tng) (tng) (tng)?处理(g)索到的数?br />当我们可以执行SQL语句以后Q那么就很容易执行增加删除修改等操作Q但是假若检索出来的数据存储在哪里呢Q?br /> (tng) (tng) (tng) (tng) MYSQL_RES *mysql_use_result(MYSQL *connection)q个函数得到一个连接对象返回一个结果集合指针,出错时返回NULL。不q他只是q回一个集合对象初始化来接收数据,q没有将M(g)索到的数据返回到l果集合中?br /> (tng) (tng) (tng) (tng) MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)q个函数获得mysql_use_resul得到的结果结构体Qƈ从中(g)索单个行Qƈq回分配l行l构体的数据Q没有更多数据或出错Ӟq回NULL?br /> (tng) (tng) (tng) (tng) Unsigned int mysql_field_count(MYSQL *connection)它得C个连接对象ƈq回在集合中字段的数目?br />于是有上面的基础我们可以理解下面这D了(jin)Q(没有错误处理Q?br />mysql_init(&conn_ptr);
mysql_real_connect(conn_ptr,"localhost","sagely","secret","ra",0,NULL,0);
mysql_query(conn_ptr,"SELECT * form usr_info);
res_ptr=mysql_use_result(&conn_ptr);
sqlrow=mysql_fetch_row(res_ptr);
for(int i=0;i<mysql_field_count(&conn_ptr);i++){printf("%s ",sqlrow);}
 (tng) (tng) (tng) (tng) MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)它返回的是列的信息,比如列的名称Q列所在表名称{等Q有?jin)这个就可以列标题(sh)数据想对应h?jin)?br />






乔栋 2007-03-07 11:32 发表评论
]]>
?Sizeof ?/title><link>http://www.shnenglu.com/qiaodong/archive/2007/03/06/19299.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Tue, 06 Mar 2007 08:14:00 GMT</pubDate><guid>http://www.shnenglu.com/qiaodong/archive/2007/03/06/19299.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/19299.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2007/03/06/19299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/19299.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/19299.html</trackback:ping><description><![CDATA[ <table cellspacing="0" cellpadding="0" width="85%" align="center" border="0"> <tbody> <tr> <td style="FONT-SIZE: 9pt" align="middle" width="100%" height="20"> <font color="#666666"> </font> </td> </tr> <tr> <td style="FONT-SIZE: 14px" align="middle" width="100%"> <table cellspacing="0" cellpadding="0" align="center" border="0"> <tbody> <tr> <td height="25"> (tng) </td> </tr> <tr> <td style="FONT-SIZE: 14px">本文主要包括二个部分Q第一部分重点介绍在VC中,怎么样采用sizeof来求l构的大,以及(qing)Ҏ(gu)出现的问题,q给?gu)决问题的?gu)Q第二部分ȝ出VC中sizeof的主要用法?br /><br />1?sizeof应用在结构上的情?br /><br />L(fng)下面的结构:(x)<br /><br />struct MyStruct<br /><br />{<br /><br />double dda1;<br /><br />char dda;<br /><br />int type<br /><br />};<br /><br />对结构MyStruct采用sizeof?x)出C么结果呢Qsizeof(MyStruct)为多呢Q也怽?x)这hQ?br /><br />sizeof(MyStruct)=sizeof(double)+sizeof(char)+sizeof(int)=13<br /><br />但是当在VC中测试上面结构的大小Ӟ你会(x)发现sizeof(MyStruct)?6。你知道Z么在VC中会(x)得出q样一个结果吗Q?br /><br />其实Q这是VC对变量存储的一个特D处理。ؓ(f)?jin)提高CPU的存储速度QVC对一些变量的起始地址做了(jin)“对齐”处理。在默认情况下,VC规定各成员变量存攄起始地址相对于结构的起始地址的偏U量必须变量的类型所占用的字节数的倍数。下面列出常用类型的寚w方式(vc6.0,32位系l??br /><br />cd<br />寚w方式Q变量存攄起始地址相对于结构的起始地址的偏U量Q?br /><br />Char<br />偏移量必Mؓ(f)sizeof(char)?的倍数<br /><br />int<br />偏移量必Mؓ(f)sizeof(int)?的倍数<br /><br />float<br />偏移量必Mؓ(f)sizeof(float)?的倍数<br /><br />double<br />偏移量必Mؓ(f)sizeof(double)?的倍数<br /><br />Short<br />偏移量必Mؓ(f)sizeof(short)?的倍数<br /><br /><br /><br />各成员变量在存放的时候根据在l构中出现的序依次甌I间Q同时按照上面的寚w方式调整位置Q空~的字节VC?x)自动填充。同时VCZ(jin)保l构的大ؓ(f)l构的字节边界数Q即该结构中占用最大空间的cd所占用的字节数Q的倍数Q所以在为最后一个成员变量申L(fng)间后Q还?sh)(x)根据需要自动填充空~的字节?br /><br />下面用前面的例子来说明VC到底怎么h存放l构的?br /><br />struct MyStruct <br /><br />{<br /><br />double dda1; <br /><br />char dda;<br /><br />int type<br /><br />}Q?br /><br />Z面的l构分配I间的时候,VCҎ(gu)成员变量出现的顺序和寚w方式Q先为第一个成员dda1分配I间Q其起始地址跟结构的起始地址相同Q刚好偏U量0刚好为sizeof(double)的倍数Q,该成员变量占用sizeof(double)=8个字节;接下来ؓ(f)W二个成员dda分配I间Q这时下一个可以分配的地址对于l构的v始地址的偏U量?Q是sizeof(char)的倍数Q所以把dda存放在偏U量?的地Ҏ(gu)_齐方式,该成员变量占用sizeof(char)=1个字节;接下来ؓ(f)W三个成员type分配I间Q这时下一个可以分配的地址对于l构的v始地址的偏U量?Q不是sizeof(int)=4的倍数Qؓ(f)?jin)满_齐方式对偏移量的U束问题QVC自动填充3个字节(q三个字节没有放什么东西)(j)Q这时下一个可以分配的地址对于l构的v始地址的偏U量?2Q刚好是sizeof(int)=4的倍数Q所以把type存放在偏U量?2的地方,该成员变量占用sizeof(int)=4个字节;q时整个l构的成员变量已l都分配?jin)空_(d)ȝ占用的空间大ؓ(f)Q?+1+3+4=16Q刚好ؓ(f)l构的字节边界数Q即l构中占用最大空间的cd所占用的字节数sizeof(double)=8Q的倍数Q所以没有空~的字节需要填充。所以整个结构的大小为:(x)sizeof(MyStruct)=8+1+3+4=16Q其中有3个字节是VC自动填充的,没有放Q何有意义的东ѝ?br /><br />下面再D个例子,交换一下上面的MyStruct的成员变量的位置Q它变成下面的情况Q?br /><br />struct MyStruct <br /><br />{<br /><br />char dda;<br /><br />double dda1; <br /><br />int type<br /><br />}Q?br /><br />q个l构占用的空间ؓ(f)多大呢?在VC6.0环境下,可以得到sizeof(MyStruc)?4。结合上面提到的分配I间的一些原则,分析下VC怎么样ؓ(f)上面的结构分配空间的。(单说明)(j)<br /><br />struct MyStruct <br /><br />{<br /><br />char dda;//偏移量ؓ(f)0Q满_齐方式,dda占用1个字节;<br /><br />double dda1;//下一个可用的地址的偏U量?Q不是sizeof(double)=8<br /><br />//的倍数Q需要补?个字节才能偏移量变?sh)?Q满_?br /><br />//方式Q,因此VC自动填充7个字节,dda1存放在偏U量?<br /><br />//的地址上,它占?个字节?br /><br />int typeQ?/下一个可用的地址的偏U量?6Q是sizeof(int)=4的?br /><br />//敎ͼ满int的对齐方式,所以不需要VC自动填充Qtype?br /><br />//攑֜偏移量ؓ(f)16的地址上,它占?个字节?br /><br />}Q?/所有成员变量都分配?jin)空_(d)I间ȝ大小?+7+8+4=20Q不是结?br /><br />//的节边界敎ͼ即结构中占用最大空间的cd所占用的字节数sizeof<br /><br />//(double)=8Q的倍数Q所以需要填?个字节,以满结构的大小?br /><br />//sizeof(double)=8的倍数?br /><br /><br /><br />所以该l构ȝ大小为:(x)sizeof(MyStruc)?+7+8+4+4=24。其中ȝ?+4=11个字节是VC自动填充的,没有放Q何有意义的东ѝ?br /><br /><br /><br />VC对结构的存储的特D处理确实提高CPU存储变量的速度Q但是有时候也带来?jin)一些麻?ch),我们也屏蔽掉变量默认的对齐方式,自己可以讑֮变量的对齐方式?br /><br />VC中提供了(jin)#pragma pack(n)来设定变量以n字节寚w方式。n字节寚w是说变量存攄起始地址的偏U量有两U情况:(x)W一、如果n大于{于该变量所占用的字节数Q那么偏U量必须满默认的对齐方式,W二、如果n于该变量的cd所占用的字节数Q那么偏U量为n的倍数Q不用满默认的寚w方式。结构的d也有个U束条gQ分下面两种情况Q如果n大于所有成员变量类型所占用的字节数Q那么结构的d必Mؓ(f)占用I间最大的变量占用的空间数的倍数Q?br /><br />否则必须为n的倍数。下面D例说明其用法?br /><br />#pragma pack(push) //保存寚w状?br /><br />#pragma pack(4)//讑֮?字节寚w<br /><br />struct test<br /><br />{<br /><br />char m1;<br /><br />double m4;<br /><br />int m3;<br /><br />};<br /><br />#pragma pack(pop)//恢复寚w状?br /><br />以上l构的大ؓ(f)16Q下面分析其存储情况Q首先ؓ(f)m1分配I间Q其偏移量ؓ(f)0Q满x(chng)们自p定的寚w方式Q?字节寚wQ,m1占用1个字节。接着开始ؓ(f)m4分配I间Q这时其偏移量ؓ(f)1Q需要补?个字节,q样使偏U量满为n=4的倍数Q因为sizeof(double)大于nQ?m4占用8个字节。接着为m3分配I间Q这时其偏移量ؓ(f)12Q满ؓ(f)4的倍数Qm3占用4个字节。这时已lؓ(f)所有成员变量分配了(jin)I间Q共分配?6个字节,满为n的倍数。如果把上面?pragma pack(4)改ؓ(f)#pragma pack(16)Q那么我们可以得到结构的大小?4。(误者自己分析)(j)<br /><br />2?sizeof用法ȝ<br /><br />在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个ȝ?br /><br />AQ?参数为数据类型或者ؓ(f)一般变量。例如sizeof(int),sizeof(long){等。这U情况要注意的是不同pȝpȝ或者不同编译器得到的结果可能是不同的。例如intcd?6位系l中?个字节,?2位系l中?个字节?br /><br />BQ?参数为数l或指针。下面D例说?<br /><br />int a[50]; //sizeof(a)=4*50=200; 求数l所占的I间大小<br /><br />int *a=new int[50];// sizeof(a)=4; aZ个指针,sizeof(a)是求指针<br /><br />//的大??2位系l中Q当然是?个字节?br /><br />CQ?参数为结构或cRSizeof应用在类和结构的处理情况是相同的。但有两炚w要注意,W一、结构或者类中的?rn)态成员(sh)对结构或者类的大生媄(jing)响,因ؓ(f)?rn)态变量的存储位置与结构或者类的实例地址无关?br /><br />W二、没有成员变量的l构或类的大ؓ(f)1Q因为必M证结构或cȝ每一<br /><br />个实例在内存?sh)都有唯一的地址?br /><br />下面举例说明Q?br /><br />Class Test{int a;static double c};//sizeof(Test)=4.<br /><br />Test *s;//sizeof(s)=4,sZ个指针?br /><br />Class test1{ };//sizeof(test1)=1;<br /><br />DQ?参数为其他。下面D例说明?br /><br />int func(char s[5]);<br /><br />{<br /><br />cout<<sizeof(s); q里输?Q本来sZ个数l,但由于做为函<br=""><br />//数的参数在传递的时候系l处理ؓ(f)一个指针,所<br /><br />//以sizeof(s)实际上ؓ(f)求指针的大小?br /><br />return 1;<br /><br />}<br /><br />sizeof(func(?234?)=4//因ؓ(f)func的返回类型ؓ(f)intQ所以相当于<br /><br />//求sizeof(int).<br /><br /><br /><br />以上为sizeof的基本用法,在实际的使用中要注意分析VC的分配变量的分配{略Q这L(fng)话可以避免一些错误?br /></sizeof(s);></td> </tr> </tbody> </table> </td> </tr> </tbody> </table> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <img src ="http://www.shnenglu.com/qiaodong/aggbug/19299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2007-03-06 16:14 <a href="http://www.shnenglu.com/qiaodong/archive/2007/03/06/19299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c/c++ 面试http://www.shnenglu.com/qiaodong/archive/2007/03/05/19244.html乔栋乔栋Mon, 05 Mar 2007 09:13:00 GMThttp://www.shnenglu.com/qiaodong/archive/2007/03/05/19244.htmlhttp://www.shnenglu.com/qiaodong/comments/19244.htmlhttp://www.shnenglu.com/qiaodong/archive/2007/03/05/19244.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/19244.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/19244.html1Q实C个字W串拯函数strcpy(char * a, char * b)Qb拯到aQ用C语言实现Q要求以性能为首要,请在E序中写上注释?/p>

2Q一个类拯的函敎ͼ要求用C?br />例如Q?br />class A {
int a;
public:
int b;
};

class B {
…?br />…?br />};

int main() {
A aa, bb;
B c, d;
a.a = 10; a.b = 20;
copyclass(???);// aa拯到bb
?
copyclass(???);// c拯到d
return 0;
}
3在一个项目中Q你被分配到一个小dQ在一个字W串str中包含字W串str_aQ找出所有在字符串str中的str_aQ要求你架构q个功能块ƈ且给Z用说明,代码q行健壮q且性能为首要?br />


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

1、while(*a++=*b++);
2、memcpy(&bb, &aa, sizeof(A));
memcpy(&d, &c, sizeof(B));
3、BOOL FindString(const char *srcQ?const char *str_a)
{
 (tng) (tng) char *pStart=(char *)src;
 (tng) (tng) if(NULL==pStart || NULL==str_a) return FALSE;
 (tng) (tng) char *pCursor=pStart;
 (tng) (tng) while(pCursor=strstr(pCursor, str_a))
 (tng) {
 (tng) (tng) (tng) (tng) printf("find (%s) at position %ld\r\n"), str_a, pCursor-pStart); (tng) (tng)
 (tng) }
 (tng) return TRUE; (tng)
}



乔栋 2007-03-05 17:13 发表评论
]]>
单匹配算?http://www.shnenglu.com/qiaodong/archive/2006/12/25/16831.html乔栋乔栋Mon, 25 Dec 2006 05:18:00 GMThttp://www.shnenglu.com/qiaodong/archive/2006/12/25/16831.htmlhttp://www.shnenglu.com/qiaodong/comments/16831.htmlhttp://www.shnenglu.com/qiaodong/archive/2006/12/25/16831.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/16831.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/16831.html int Index_BF ( char S [ ], char T [ ], int pos )

{

/* 若串 S 中从W?/span> pos(S 的下?/span> 0 ?/span> pos<StrLength(S)) 个字W?/span>

起存在和?/span> T 相同的子Ԍ则称匚w成功Q返回第一?/span>

q样的子串在?/span> S 中的下标Q否则返?/span> -1 (tng) (tng) (tng) */

int i = pos, j = 0;

while ( S[i+j] != '\0'&& T[j] != '\0')

if ( S[i+j] == T[j] )

j ++; // l箋(hu)比较后一字符

else

{

i ++; j = 0; // 重新开始新的一轮匹?/span>

}

if ( T[j] == '\0')

return i; // 匚w成功  (tng) (tng) q回下标

else

return -1; // ?/span> S ?/span> ( W?/span> pos 个字Wv ) 不存在和?/span> T 相同的子?/span>

} // Index_BF










乔栋 2006-12-25 13:18 发表评论
]]>
一个Windows API SetROP2(int nDrawMode)的?/title><link>http://www.shnenglu.com/qiaodong/archive/2006/11/20/15465.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Mon, 20 Nov 2006 09:27:00 GMT</pubDate><guid>http://www.shnenglu.com/qiaodong/archive/2006/11/20/15465.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/15465.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2006/11/20/15465.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/15465.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/15465.html</trackback:ping><description><![CDATA[ <table style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellspacing="0" cellpadding="0" width="90%" border="0"> <tbody> <tr> <td class="oblog_t_4"> <span id="ysqwpxy" class="style1"> <font size="3"> </font> </span> </td> </tr> <tr> <td> <span id="muquckh" class="oblog_text"> <p>偶然发现的一个有用的windows api SetROP2(int nDrawMode)Q现在将我对该api的用的?j)得归纳如下Q?/p> <p>该函数的主要的作用是Ҏ(gu)nDrawMode讄的方式重新设定绘囄方式Q下面就不同的nDrawMode值具体解释绘图模式是如何改变的?/p> <p>首先nDrawMode的取值有以下的情况:(x)</p> <li> <b>R2_BLACK</b> (tng) (tng) (tng)Pixel is always black. (tng) (tng) //所有绘制出来的像素为黑? </li> <li> <b>R2_WHITE</b> (tng) (tng) (tng)Pixel is always white. (tng) (tng) (tng) //所有绘制出来的像素为白? </li> <li> <b>R2_NOP</b> (tng) (tng) (tng)Pixel remains unchanged. (tng) (tng) //Ml制不改变当前的状? </li> <li> <b>R2_NOT</b> (tng) (tng) (tng)Pixel is the inverse of the screen color. (tng)//当前l制的像素D为屏q像素值的反,q样可以覆盖掉上ơ的l图Q(自动擦除上次l制的图形)(j) </li> <li> <b>R2_COPYPEN</b> (tng) (tng) (tng)Pixel is the pen color. (tng) (tng) (tng) //使用当前的画W的颜色 </li> <li> <b>R2_NOTCOPYPEN</b> (tng) (tng) (tng)Pixel is the inverse of the pen color. (tng) //当前ȝ的反?</li> <p>/////////////////////////////////////////////////////////////////////////////////example/////////////////////////////////////////////////////////////////////////<br /> (tng) (tng)ClientDC.SetROP2(R2_NOT);<br /> (tng) (tng)ClientDC.MoveTo(m_PointOrigin);<br /> (tng) (tng)ClientDC.LineTo(m_PointOld);<br /> (tng) (tng)ClientDC.MoveTo(m_PointOrigin);<br /> (tng) (tng)ClientDC.LineTo(point);<br /> (tng) (tng)m_PointOld = point;<br /> (tng) (tng)CView::OnMouseMove(nFlags, point);<br />///////////////////////////////////////////////////////////////////////////////////////end/////////////////////////////////////////////////////////////////////////</p> <li> <p>MQ上qapi的一个作用是在需要改变绘囄模式Ӟ不需要重新设|画W,只需要设|不同的l图的模式即可达到相应的目的?/p> </li> <br /> </span> </td> </tr> </tbody> </table> <img src ="http://www.shnenglu.com/qiaodong/aggbug/15465.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2006-11-20 17:27 <a href="http://www.shnenglu.com/qiaodong/archive/2006/11/20/15465.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个关于结构体的问?/title><link>http://www.shnenglu.com/qiaodong/archive/2006/11/20/15449.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Mon, 20 Nov 2006 02:54:00 GMT</pubDate><guid>http://www.shnenglu.com/qiaodong/archive/2006/11/20/15449.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/15449.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2006/11/20/15449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/15449.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/15449.html</trackback:ping><description><![CDATA[ <p>#include<stdio.h></p> <p>struct a<br />{<br /> (tng)int b;<br />};<br />struct b<br />{<br /> (tng) (tng) (tng) int a;<br />};<br />void main()<br />{<br /> (tng)a A;<br /> (tng)A.b = NULL;<br /> (tng)A.b = 1;<br /> (tng)<br /> (tng)b a;<br /> (tng)a.a = 3;<br />}</p> <p>在C的环境下Q会(x)报错Q在C++的情况,q样的操作就是允许的?br />在C++的编译器中,允许结构体名作Z个变量名来对待?/p> <img src ="http://www.shnenglu.com/qiaodong/aggbug/15449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2006-11-20 10:54 <a href="http://www.shnenglu.com/qiaodong/archive/2006/11/20/15449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>你所有用q的 if 语句http://www.shnenglu.com/qiaodong/archive/2006/11/10/14966.html乔栋乔栋Fri, 10 Nov 2006 06:54:00 GMThttp://www.shnenglu.com/qiaodong/archive/2006/11/10/14966.htmlhttp://www.shnenglu.com/qiaodong/comments/14966.htmlhttp://www.shnenglu.com/qiaodong/archive/2006/11/10/14966.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/14966.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/14966.html#include <stdio.h>
void main()
{
 (tng)  (tng)  (tng)  (tng) int i;
 (tng)  (tng)  (tng)  (tng)
 (tng)  (tng)  (tng)  (tng) if(i = -1)
 (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) printf("True!\n");
 (tng)  (tng)  (tng)  (tng) else
 (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) printf("False!\n");
 (tng)  (tng)  (tng)  (tng)
 (tng)  (tng)  (tng)  (tng) if(i = 0)
 (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) printf("True!\n");
 (tng)  (tng)  (tng)  (tng) else
 (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng)  (tng) printf("False!\n");
}
l果是什么?Z么呢Q?img src ="http://www.shnenglu.com/qiaodong/aggbug/14966.html" width = "1" height = "1" />

乔栋 2006-11-10 14:54 发表评论
]]>
内存操作 / 野指?/title><link>http://www.shnenglu.com/qiaodong/archive/2006/11/09/14905.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Thu, 09 Nov 2006 07:47:00 GMT</pubDate><guid>http://www.shnenglu.com/qiaodong/archive/2006/11/09/14905.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/14905.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2006/11/09/14905.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/14905.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/14905.html</trackback:ping><description><![CDATA[ <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 125%"> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">4</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>void GetMemory( char *p )</strong> <br /> <strong>{</strong> <br /> <strong> (tng)  (tng)p = (char *) malloc( 100 );</strong> <br /> <strong>}</strong> <br /> <br /> <strong>void Test( void ) </strong> <br /> <strong>{</strong> <br /> <strong> (tng)  (tng)char *str = NULL;</strong> <br /> <br /> <strong> (tng)  (tng)GetMemory( str ); </strong> <br /> <strong> (tng)  (tng)strcpy( str, "hello world" );</strong> <br /> <strong> (tng)  (tng)printf( str );</strong> <br /> <strong>}</strong> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">5</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>char *GetMemory( void )</strong> <br /> <strong>{ (tng)  (tng)</strong> <br /> <strong> (tng)  (tng) (tng) (tng)char p[] = "hello world"; (tng)  (tng) (tng)  (tng) </strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)return p; (tng) (tng)</strong> <br /> <strong>}</strong> <br /> <strong>void Test( void )</strong> <br /> <strong>{ (tng)  (tng)</strong> <br /> <strong> (tng)  (tng) (tng) (tng)char *str = NULL; (tng) (tng)</strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)str = GetMemory(); (tng)  (tng) </strong> <br /> <strong> (tng)  (tng) (tng) (tng)printf( str ); (tng)  (tng) </strong> <br /> <strong>}</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">6</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <strong>void GetMemory( char **p, int num )</strong> <br /> <strong>{</strong> <br /> <strong> (tng)  (tng) (tng) (tng)*p = (char *) malloc( num );</strong> <br /> <strong>}</strong> <br /> <strong>void Test( void )</strong> <br /> <strong>{</strong> <br /> <strong> (tng)  (tng) (tng) (tng)char *str = NULL;</strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)GetMemory( &str, 100 );</strong> <br /> <strong> (tng)  (tng) (tng) (tng)strcpy( str, "hello" ); </strong> <br /> <strong> (tng)  (tng) (tng) (tng)printf( str ); </strong> <br /> <strong>}</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">7</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>void Test( void )</strong> <br /> <strong>{</strong> <br /> <strong> (tng)  (tng) (tng) (tng)char *str = (char *) malloc( 100 );</strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)strcpy( str, "hello" );</strong> <br /> <strong> (tng)  (tng) (tng) (tng)free( str ); </strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)... (tng) (tng)//</strong> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">省略的其它语?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>}</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">解答Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">4</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">传入?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">GetMemory( char *p )</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数的Ş参ؓ(f)字符串指针,在函数内部修改Ş参ƈ不能真正的改变(sh)入Ş参的|执行?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>char *str = NULL;</strong> <br /> <br /> <strong>GetMemory( str ); </strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后的</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">str</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">仍然?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">NULL</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">5</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)char p[] = "hello world"; (tng)  (tng) </strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)return p; (tng) (tng)</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">p[]</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数组为函数内的局部自动变量,在函数返回后Q内存已l被释放。这是许多程序员常犯的错误,其根源在于不理解变量的生存期?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">6</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">GetMemory</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">避免?jin)试?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">4</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的问题,传入</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">GetMemory</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的参Cؓ(f)字符串指针的指针Q但是在</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">GetMemory</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中执行申请内存及(qing)赋D?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>p = (char *) malloc( num );</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后未判断内存是否甌成功Q应加上Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>if ( p == NULL )</strong> <br /> <strong>{</strong> <br /> <br /> <strong> (tng)  (tng)...//</strong> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q行甌内存p|处理</span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"> </span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">}</span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">7</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">存在与试?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">6</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">同样的问题,在执?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>char *str = (char *) malloc(100);</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后未q行内存是否甌成功的判断;另外Q在</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">free(str)</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">后未|?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">str</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为空Q导致可能变成一?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">?/span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">?/span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指针Q应加上Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>str = NULL;</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">6</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">Test</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数中也未对</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">malloc</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的内存进行释放?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">剖析Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">试题</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">4</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">7</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">考查面试者对内存操作的理解程度,基本功扎实的面试者一般都能正的回答其中</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">50~60</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的错误。但是要完全解答正确Q却也绝非易事?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对内存操作的考查主要集中在:(x)</span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">1</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q指针的理解Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">2</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q变量的生存期及(qing)作用范围Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">3</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q良好的动态内存申请和释放?fn)惯?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在看看下面的一D늨序有什么错误:(x)</span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>swap( int* p1,int* p2 )</strong> <br /> <strong>{</strong> <br /> <strong> (tng)  (tng) (tng) (tng)int *p;</strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)*p = *p1;</strong> <br /> <strong> (tng)  (tng) (tng) (tng)*p1 = *p2;</strong> <br /> <strong> (tng)  (tng) (tng) (tng)*p2 = *p;</strong> <br /> <strong>}</strong> <br /> <br /> </span> </i> </b> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">swap</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数中,</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">p</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">?/span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">?/span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">指针Q有可能指向pȝ区,DE序q行的崩溃。在</span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">VC++</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">DEBUG</span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q行时提C错?/span> </i> </strong> <strong> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%">“Access Violation?/span> </i> </strong> <strong> <i> <span style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%; FONT-FAMILY: ?hu)? mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。该E序应该改ؓ(f)Q?/span> </i> </strong> <b> <i> <span lang="EN-US" style="FONT-SIZE: 13.5pt; LINE-HEIGHT: 125%"> <br /> <br /> <strong>swap( int* p1,int* p2 )</strong> <br /> <strong>{</strong> <br /> <strong> (tng)  (tng) (tng) (tng)int p;</strong> <br /> <br /> <strong> (tng)  (tng) (tng) (tng)p = *p1;</strong> <br /> <strong> (tng)  (tng) (tng) (tng)*p1 = *p2;</strong> <br /> <strong> (tng)  (tng) (tng) (tng)*p2 = p;</strong> <br /> <strong>} </strong> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br style="mso-special-character: line-break" /> <br style="mso-special-character: line-break" /> </span> </i> </b> </p> <img src ="http://www.shnenglu.com/qiaodong/aggbug/14905.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2006-11-09 15:47 <a href="http://www.shnenglu.com/qiaodong/archive/2006/11/09/14905.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>写一个完的strcpy / strlen 函数http://www.shnenglu.com/qiaodong/archive/2006/11/09/14902.html乔栋乔栋Thu, 09 Nov 2006 06:48:00 GMThttp://www.shnenglu.com/qiaodong/archive/2006/11/09/14902.htmlhttp://www.shnenglu.com/qiaodong/comments/14902.htmlhttp://www.shnenglu.com/qiaodong/archive/2006/11/09/14902.html#Feedback3http://www.shnenglu.com/qiaodong/comments/commentRss/14902.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/14902.html 试题Q:(x)

void test1()
{
 (tng)  (tng)char string[10];
 (tng)  (tng)char* str1 = "0123456789";

 (tng)  (tng) (tng) (tng)strcpy( string, str1 );
}

试题2Q?br />
void test2()
{
 (tng)  (tng)char string[10], str1[10];
 (tng)  (tng) (tng) (tng)int i;

 (tng)  (tng) (tng) (tng)for(i=0; i<10; i++)
 (tng)  (tng) (tng) (tng){
 (tng)  (tng) (tng)  (tng) (tng) (tng)str1
= 'a';

 (tng)  (tng) (tng) (tng)}

 (tng)  (tng) (tng) (tng)strcpy( string, str1 );
}

试题3Q?br />
void test3(char* str1)
{
 (tng)  (tng)char string[10];

 (tng)  (tng)if( strlen( str1 ) <= 10 )
 (tng)  (tng) (tng) (tng){
 (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng)strcpy( string, str1 );
 (tng)  (tng) (tng) (tng)}
}

解答Q?br />
试题1字符串str1需?1个字节才能存放下Q包括末’\0’)(j)Q而string只有10个字节的I间Qstrcpy?x)导致数l越界;

对试?Q如果面试者指出字W数lstr1不能在数l内l束可以l?分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存h复制的字节数h不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分;

对试?Qif(strlen(str1) <= 10)应改为if(strlen(str1) < 10)Q因为strlen的结果未l计’\0’所占用?个字节?br />
剖析Q?br />
考查对基本功的掌握:(x)

Q?Q字W串以’\0’结;

Q2Q对数组界把握的敏感度Q?br />
Q3Q库函数strcpy的工作方式,如果~写一个标准strcpy函数的dgؓ(f)10Q下面给出几个不同得分的{案Q?br />
2?br />
void strcpy( char *strDest, char *strSrc )
{
  while( (*strDest++ = * strSrc++) != ‘\0?);
}

4?br />void strcpy( char *strDest, const char *strSrc )

//源字符串加constQ表明其入参敎ͼ??br />{
  while( (*strDest++ = * strSrc++) != ‘\0?);
}
7?br />void strcpy(char *strDest, const char *strSrc) (tng) (tng)
{
//Ҏ(gu)地址和目的地址加非0断言Q加3?br /> assert( (strDest != NULL) && (strSrc != NULL) );

 while( (*strDest++ = * strSrc++) (tng) (tng)!= (tng) (tng)‘\0?);

}
10?br />
//Z(jin)实现铑ּ操作Q将目的地址q回Q加3分!
char * strcpy( char *strDest, const char *strSrc ) (tng) (tng)
{
 assert( (strDest != NULL) && (strSrc != NULL) );
char *address = strDest; (tng) (tng)

 while( (*strDest++ = * strSrc++) != ‘\0?);

 (tng) (tng)return address;
}

cM的我们可以写Z?0分的
strlen函数
int strlen( const char *str ) (tng)  (tng) //输入参数const
{
 (tng)  (tng) (tng) (tng)assert( strt != NULL ); (tng)  (tng) //断言字符串地址?
 (tng)  (tng) (tng) (tng)int len;

 (tng)  (tng) (tng) (tng)while( (*str++) != '\0' )
 (tng)  (tng) (tng) (tng){ (tng) (tng)
 (tng)  (tng) (tng)  (tng) (tng)  (tng) (tng)  (tng)len++;
 (tng)  (tng) (tng) (tng)}

 (tng)  (tng) (tng) (tng)return len;

}



乔栋 2006-11-09 14:48 发表评论
]]>
l自己指定一Q?/title><link>http://www.shnenglu.com/qiaodong/archive/2006/11/09/14891.html</link><dc:creator>乔栋</dc:creator><author>乔栋</author><pubDate>Thu, 09 Nov 2006 01:24:00 GMT</pubDate><guid>http://www.shnenglu.com/qiaodong/archive/2006/11/09/14891.html</guid><wfw:comment>http://www.shnenglu.com/qiaodong/comments/14891.html</wfw:comment><comments>http://www.shnenglu.com/qiaodong/archive/2006/11/09/14891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qiaodong/comments/commentRss/14891.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qiaodong/services/trackbacks/14891.html</trackback:ping><description><![CDATA[ <br /> <br /> <br />今天Q明天,后天Q三天时间重新温?fn)一遍侯俊杰的《深入潜出MFC》,pȝ的回一下以前的知识?br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.shnenglu.com/qiaodong/aggbug/14891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qiaodong/" target="_blank">乔栋</a> 2006-11-09 09:24 <a href="http://www.shnenglu.com/qiaodong/archive/2006/11/09/14891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在高警戒情况下,大踏步地调试http://www.shnenglu.com/qiaodong/archive/2006/11/08/14834.html乔栋乔栋Wed, 08 Nov 2006 03:06:00 GMThttp://www.shnenglu.com/qiaodong/archive/2006/11/08/14834.htmlhttp://www.shnenglu.com/qiaodong/comments/14834.htmlhttp://www.shnenglu.com/qiaodong/archive/2006/11/08/14834.html#Feedback0http://www.shnenglu.com/qiaodong/comments/commentRss/14834.htmlhttp://www.shnenglu.com/qiaodong/services/trackbacks/14834.html



一直以L(fng)Ҏ(gu)比较好?但是今天把MSDN里的一个例子拿出来攑֜最大警报别下竟莫名其妙的出现?jin)一个初始化问题Q想不?br />













乔栋 2006-11-08 11:06 发表评论
]]>
þùƵ99Ӱ| ղþøŷһ| ޹˾Ʒþþþþۺ| ɫۺɫþû| þ99ƷþþþþҰ| ޾Ʒھþ| ҹþþþüŮӰԺ| TOKYOۺϾþþƷ| ƷVIDEOSSEXþ÷| þþþ޾Ʒһ| þþþòҰ¸߳| 99þþƷһ| þwww˳ɾƷ㽶| AëƬþþþƷëƬ| ŷþþþƷ| þþƷƵһ| Ʒþþþþþþ| þԭƷ| avþþƷ| ˾þ777777| ޾Ʒþþþþþþþþþ | ˾þþƷһ| þùһ| þһ| Ʒxxxxˮ޹Ʒþһ | ˾þþùۿëƬ| þĻƷһ| þùɫAVѹۿ| ӰɫۺϾþ| ھƷþù½| Ļþи| þþþŮʦһ| ƷþþƷ| ѾƷþ| þþþþ޾Ʒ| þԭƷ| ˾þô߽AVۺӰԺ| þþþþþþþѾƷ | ձɫۺϾþӰԺ| ƷŮ߳׾þþ| þ޹ӰԺվ|