锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 1銆佽鎶奵璇█鐨勫熀紜鎵撳疄 2銆佺悊瑙錛嬶紜璇█涓竴浜涙蹇典互鍙婂畠浠箣闂寸殑鍖哄埆錛堥渶瑕佹繁鍒葷悊瑙o級錛?/p>
錛?錛夊眬閮ㄥ彉閲?鍏ㄥ眬鍙橀噺 闈欐佸彉閲?const甯擱噺 瀵勫瓨鍣ㄥ彉閲?瀹忓畾涔夌殑甯擱噺 static鍙橀噺 娉細鍖呮嫭瀹冧滑鐨勫唴瀛樺垎閰嶅尯鍩燂紝浣滅敤鍩燂紝鍒濆鍖栫瓑絳?/p>
錛?錛夌悊瑙alloc涓巒ew涔嬮棿鐨勫尯鍒紝浠ュ強free涓巇elete涔嬮棿鍖哄埆 錛?錛夊唴鑱斿嚱鏁頒笌瀹忓畾涔夌殑鍖哄埆錛屽畠浠悇鏈変粈涔堜紭鐐?/p>
錛?錛夊唴瀛樺垎閰嶆湁鍝嚑縐嶅艦寮忥紵鍒嗗埆涓轟綍錛熷尯鍒槸浠涔堬紵瀵圭紪璇戦熷害褰卞搷鏄綍錛?/p>
錛?錛夌悊瑙d粈涔堟槸閲嶈澆銆佽鐩栥侀殣钘忥紝鍖哄埆鏄綍錛熷彲鍚︿婦渚嬶紵 錛?錛変粈涔堟槸澶氭侊紵涓句釜渚嬪瓙璇曡瘯 錛?錛塻truct 鍜宑lass鏈変粈涔堝尯鍒紵c璇█涓殑struct 鍜宑錛嬶紜涓殑struct涓鏍蜂箞錛熸湁浠涔堝尯鍒紵 錛?錛夎璇翠粈涔堟槸閲庢寚閽堬紵閲庢寚閽堜粈涔堟儏鍐典笅鍑虹幇錛燂紙娌℃湁鍒濆鍖栵紝delete鍚庢病鏈夎祴鍊間負NULL錛?/p>
錛?錛変綘鐔熸倝棰勭紪璇戞寚浠や箞錛熸潯浠剁紪璇戞槸鐢ㄦ潵鍋氫粈涔堢殑錛熶綘浼氬啓涔堬紵 錛?錛塻izeof錛堬級榪欎釜鍑芥暟浣犵悊瑙d箞錛熶綘鑳借鍑哄悇縐嶅彉閲忕被鍨嬪湪win 32 涓嬬殑鍊間箞錛?/p>
錛?0錛夊叧浜巗tring榪欎釜綾諱綘鐞嗚В涔堬紵浼氬啓瀹冪殑鏋勯犲嚱鏁幫紝鏋愭瀯鍑芥暟錛屾嫹璐濇瀯閫犲嚱鏁幫紝璧嬪煎嚱鏁頒箞錛熶細鍐檚trcpy鍚楋紵 錛?1錛夌煡閬撴柇璦ASSERT錛堬級鎬庝箞鏍蜂箞錛熶竴瀹氳甯哥敤銆傚畠鏄嚱鏁拌繕鏄畯錛熶負浠涔堜笉鑳芥槸鍑芥暟錛?/p>
錛?2錛夋噦浠涔堟槸閾捐〃涔堬紵浼氶摼琛ㄧ殑涓浜涘熀鏈搷浣滀箞錛?/p>
錛?3錛夋槑鐧介槦鍒楋紝鍙岄摼琛紝寰幆閾捐〃錛屾爤鏄庝箞鍥炰簨錛熶細鍐欒繖浜涚被銆?/p>
錛?4錛変竴瀹氳鐭ラ亾浜屽弶鏍戠殑閬嶅巻鏈夊嚑縐嶏紝涓瀹氳浼氬啓鐢ㄩ掑綊鐨勬柟寮忔潵閬嶅巻瀹冧滑銆?/p>
錛?5錛夊湪涓涓瓧絎︿覆涓紝浣犺兘璁$畻閲岃竟“鏁板瓧瀛楃”鐨勪釜鏁頒箞錛?/p>
錛?6錛夌煡閬搒izeof(Type*)=4鍚楋紵娉細win32涓?/p>
錛?7錛塱nt array[5]= {}; sizeof(array)=? int Fuction(int a[]) { return sizeof(a); } Fuction(array)=? 錛?8錛変綘鐭ラ亾鍑芥暟涓嶈兘榪斿洖鏍堟寚閽堜箞錛?/p>
錛?9錛夌煡閬撳眬閮ㄥ彉閲忎負浠涔堟瘮鍏ㄥ眬鍙橀噺蹇箞錛?/p>
錛?0錛夌煡閬撲負浠涔堣浜轟負鍐欐嫹璐濇瀯閫犲嚱鏁頒箞錛?/p>
××××××××××××××××××××××××××××××××××××××××××××××××××× 浠?1鏉″紑濮嬪睘浜庨毦鐐?/p>
錛?1錛変細鐢╟璇█瀹炵幇閲嶈澆涓庣戶鎵夸箞錛?/p>
錛?2錛夎兘璇村嚭鍑犵鎺掑簭鏂規硶錛熷畠浠殑鍖哄埆鍜屽悇鑷殑浼樼偣鏄粈涔堬紵鐭ラ亾浠涔堟槸鍐呮帓搴忎粈涔堟槸澶栨帓搴忎箞錛?/p>
錛?3錛夌煡閬撲粈涔堟槸struct涓殑瀵歸綈涔堬紵 錛?4錛塭xtern c‘ 鏄共浠涔堢殑錛?/p>
錛?5錛夊唴瀛樼鐞嗕綘鎳傚灝戯紵錛堝寘鎷唴瀛樻硠婕忥紝閲庢寚閽堢煡璇嗭紝闈炴硶璋冪敤錛屽唴瀛樻孩鍑虹瓑錛?/p>
錛?6錛塵alloc榪斿洖浠涔堬紵鎬庝箞鐢紵 錛?7錛夊緟緇?#8230;… 涓婃璇翠簡璇村叧浜巆銆乧錛嬶紜鐨勪竴浜涢噸鐐癸紝鐜板湪璇翠竴浜涘叧浜嶮FC涓粡甯歌冪殑涓滆タ錛堟湁浜涗篃涓嶆槸涓撳睘浜嶮FC錛屼絾鎴戜滑鐜板湪緇忓父鍦∕FC涓敤鍒幫紝鍍?
ActiveX 錛孋OM錛屽姩鎬侀摼鎺ュ簱鐨勪笢瑗匡級錛屽叾瀹炲湪絎旇瘯鑰冭瘯涓紝MFC鐨勪笢瑗胯冪殑寰堝皯錛屽崟浣嶉兘娉ㄩ噸c鐨勫熀紜鏄惁鎵庡疄錛岄潰鍚戝璞℃濇兂鏄惁鐞嗚В鐨勬繁鍒匯?/p>
1錛夎璇磎fc涓殑綾葷戶鎵垮浘鐨勫熀鏈鏋訛紝榪欎釜棰樻垜琚冭繃銆?/p>
2錛夎璇碈View綾葷殑瀛愮被閮芥湁浠涔堛?/p>
3錛塂LL鐨勪笁縐嶈皟鐢ㄥ艦寮忋?/p>
4錛夎璇磑npaint錛堬級鍜宱ndraw錛堬級鐨勫叧緋匯?/p>
5錛夎璇碈View綾諱笌CDocument鐨勫叧緋伙紙閲嶈錛夈?/p>
6錛夎SendMessage錛堬級涓嶱ostMessage錛堬級鐨勫尯鍒?/p>
7錛夌畝榪癈OM鎶鏈?/p>
8錛夎璇磋鍐欎竴涓枃浠舵庝箞鏉ュ畬鎴愶紝鍒嗗埆鐢╟錛宑錛嬶紜錛孧FC涓夌搴撳嚱鏁版潵緙栧啓浠g爜銆?/p>
9錛夎璇翠簩榪涘埗鏂囦歡鍜屾枃鏈枃浠朵箣闂村尯鍒紝涓句緥瀛愶紝浼氬悧錛?/p>
10錛?net鐨勬妧鏈紭鐐規槸浣曪紵 鍚屽鐨?閬撻潰璇曢錛屽簲鑱樼殑鑱屼綅鏄悳绱㈠紩鎿庡伐紼嬪笀錛屽悗涓ら亾瓚呯駭闅撅紝錛堝笇鏈涘ぇ瀹跺緇欎竴浜涚畻鍙戯級 4. static鏈変粈涔堢敤閫旓紵錛堣鑷沖皯璇存槑涓ょ錛?br>1.闄愬埗鍙橀噺鐨勪綔鐢ㄥ煙 5銆佸啓鍑轟笅鍒椾唬鐮佺殑杈撳嚭鍐呭 2.瀵逛簬涓涓綣佷嬌鐢ㄧ殑鐭皬鍑芥暟,鍦–璇█涓簲鐢ㄤ粈涔堝疄鐜?鍦–++涓簲鐢ㄤ粈涔堝疄鐜? 鎱ч氾細 1銆佸啓涓涓?#8220;鏍囧噯”瀹忥紝榪欎釜瀹忚緭鍏ヤ袱涓弬鏁板茍榪斿洖杈冨皬鐨勪竴涓?br>.#define Min(X, Y) ((X)>(Y)?(Y):(X))//緇撳熬娌℃湁;
1.姹備笅闈㈠嚱鏁扮殑榪斿洖鍊鹼紙寰蔣錛?br>int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
鍋囧畾x = 9999銆?絳旀錛?
鎬濊礬錛氬皢x杞寲涓?榪涘埗錛岀湅鍚湁鐨?鐨勪釜鏁般?br>2. 浠涔堟槸“寮曠敤”錛熺敵鏄庡拰浣跨敤“寮曠敤”瑕佹敞鎰忓摢浜涢棶棰橈紵
絳旓細
寮曠敤灝辨槸鏌愪釜鐩爣鍙橀噺鐨?#8220;鍒悕”(alias)錛屽搴旂敤鐨勬搷浣滀笌瀵瑰彉閲忕洿鎺ユ搷浣滄晥鏋滃畬鍏ㄧ浉鍚屻傜敵鏄庝竴涓紩鐢ㄧ殑鏃跺欙紝鍒囪瑕佸鍏惰繘琛屽垵濮嬪寲銆傚紩鐢ㄥ0鏄庡畬姣?
鍚庯紝鐩稿綋浜庣洰鏍囧彉閲忓悕鏈変袱涓悕縐幫紝鍗寵鐩爣鍘熷悕縐板拰寮曠敤鍚嶏紝涓嶈兘鍐嶆妸璇ュ紩鐢ㄥ悕浣滀負鍏朵粬鍙橀噺鍚嶇殑鍒悕銆傚0鏄庝竴涓紩鐢紝涓嶆槸鏂板畾涔変簡涓涓彉閲忥紝瀹冨彧琛ㄧず璇ュ紩鐢?
鍚嶆槸鐩爣鍙橀噺鍚嶇殑涓涓埆鍚嶏紝瀹冩湰韜笉鏄竴縐嶆暟鎹被鍨嬶紝鍥犳寮曠敤鏈韓涓嶅崰瀛樺偍鍗曞厓錛岀郴緇熶篃涓嶇粰寮曠敤鍒嗛厤瀛樺偍鍗曞厓銆備笉鑳藉緩绔嬫暟緇勭殑寮曠敤銆?br>3. 灝?#8220;寮曠敤”浣滀負鍑芥暟鍙傛暟鏈夊摢浜涚壒鐐癸紵
錛?錛変紶閫掑紩鐢ㄧ粰鍑芥暟涓庝紶閫掓寚閽堢殑鏁堟灉鏄竴鏍風殑銆傝繖鏃訛紝琚皟鍑芥暟鐨勫艦鍙傚氨鎴愪負鍘熸潵涓昏皟鍑芥暟涓殑瀹炲弬鍙橀噺鎴栧璞$殑涓涓埆鍚嶆潵浣跨敤錛屾墍浠ュ湪琚皟鍑芥暟涓褰㈠弬鍙橀噺鐨勬搷浣滃氨鏄鍏剁浉搴旂殑鐩爣瀵硅薄錛堝湪涓昏皟鍑芥暟涓級鐨勬搷浣溿?br>錛?錛?
浣跨敤寮曠敤浼犻掑嚱鏁扮殑鍙傛暟錛屽湪鍐呭瓨涓茍娌℃湁浜х敓瀹炲弬鐨勫壇鏈紝瀹冩槸鐩存帴瀵瑰疄鍙傛搷浣滐紱鑰屼嬌鐢ㄤ竴鑸彉閲忎紶閫掑嚱鏁扮殑鍙傛暟錛屽綋鍙戠敓鍑芥暟璋冪敤鏃訛紝闇瑕佺粰褰㈠弬鍒嗛厤瀛樺偍鍗?
鍏冿紝褰㈠弬鍙橀噺鏄疄鍙傚彉閲忕殑鍓湰錛涘鏋滀紶閫掔殑鏄璞★紝榪樺皢璋冪敤鎷瘋礉鏋勯犲嚱鏁般傚洜姝わ紝褰撳弬鏁頒紶閫掔殑鏁版嵁杈冨ぇ鏃訛紝鐢ㄥ紩鐢ㄦ瘮鐢ㄤ竴鑸彉閲忎紶閫掑弬鏁扮殑鏁堢巼鍜屾墍鍗犵┖闂撮兘
濂姐?br>錛?錛変嬌鐢ㄦ寚閽堜綔涓哄嚱鏁扮殑鍙傛暟铏界劧涔熻兘杈懼埌涓庝嬌鐢ㄥ紩鐢ㄧ殑鏁堟灉錛屼絾鏄紝鍦ㄨ璋冨嚱鏁頒腑鍚屾牱瑕佺粰褰㈠弬鍒嗛厤瀛樺偍鍗曞厓錛屼笖闇瑕侀噸澶嶄嬌鐢?*鎸囬拡鍙橀噺鍚?
鐨勫艦寮忚繘琛岃繍綆楋紝榪欏緢瀹規槗浜х敓閿欒涓旂▼搴忕殑闃呰鎬ц緝宸紱鍙︿竴鏂歸潰錛屽湪涓昏皟鍑芥暟鐨勮皟鐢ㄧ偣澶勶紝蹇呴』鐢ㄥ彉閲忕殑鍦板潃浣滀負瀹炲弬銆傝屽紩鐢ㄦ洿瀹規槗浣跨敤錛屾洿娓呮櫚銆?br>4. 鍦ㄤ粈涔堟椂鍊欓渶瑕佷嬌鐢?#8220;甯稿紩鐢?#8221;錛熴
濡傛灉鏃㈣鍒╃敤寮曠敤鎻愰珮紼嬪簭鐨勬晥鐜囷紝鍙堣淇濇姢浼犻掔粰鍑芥暟鐨勬暟鎹笉鍦ㄥ嚱鏁頒腑琚敼鍙橈紝灝卞簲浣跨敤甯稿紩鐢ㄣ傚父寮曠敤澹版槑鏂瑰紡錛歝onst 綾誨瀷鏍囪瘑絎?&寮曠敤鍚?鐩爣鍙橀噺鍚嶏紱
渚?
int a ;
const int &ra=a;
ra=1; //閿欒
a=1; //姝g‘
渚?
string foo( );
void bar(string & s);
閭d箞涓嬮潰鐨勮〃杈懼紡灝嗘槸闈炴硶鐨勶細
bar(foo( ));
bar("hello world");
鍘熷洜鍦ㄤ簬foo( )鍜?hello world"涓查兘浼氫駭鐢熶竴涓復鏃跺璞★紝鑰屽湪C++涓紝榪欎簺涓存椂瀵硅薄閮芥槸const綾誨瀷鐨勩傚洜姝や笂闈㈢殑琛ㄨ揪寮忓氨鏄瘯鍥懼皢涓涓猚onst綾誨瀷鐨勫璞¤漿鎹負闈瀋onst綾誨瀷錛岃繖鏄潪娉曠殑銆?br>寮曠敤鍨嬪弬鏁板簲璇ュ湪鑳借瀹氫箟涓篶onst鐨勬儏鍐典笅錛屽敖閲忓畾涔変負const 銆?br>5. 灝?#8220;寮曠敤”浣滀負鍑芥暟榪斿洖鍊肩被鍨嬬殑鏍煎紡銆佸ソ澶勫拰闇瑕侀伒瀹堢殑瑙勫垯?
鏍煎紡錛氱被鍨嬫爣璇嗙 &鍑芥暟鍚嶏紙褰㈠弬鍒楄〃鍙婄被鍨嬭鏄庯級{ //鍑芥暟浣?}
濂藉錛氬湪鍐呭瓨涓笉浜х敓琚繑鍥炲肩殑鍓湰錛涳紙娉ㄦ剰錛氭鏄洜涓鴻繖鐐瑰師鍥狅紝鎵浠ヨ繑鍥炰竴涓眬閮ㄥ彉閲忕殑寮曠敤鏄笉鍙彇鐨勩傚洜涓洪殢鐫璇ュ眬閮ㄥ彉閲忕敓瀛樻湡鐨勭粨鏉燂紝鐩稿簲鐨勫紩鐢ㄤ篃浼氬け鏁堬紝浜х敓runtime error!
娉ㄦ剰浜嬮」錛?br>錛?錛変笉鑳借繑鍥炲眬閮ㄥ彉閲忕殑寮曠敤銆傝繖鏉″彲浠ュ弬鐓ffective C++[1]鐨処tem 31銆備富瑕佸師鍥犳槸灞閮ㄥ彉閲忎細鍦ㄥ嚱鏁拌繑鍥炲悗琚攢姣侊紝鍥犳琚繑鍥炵殑寮曠敤灝辨垚涓轟簡"鏃犳墍鎸?鐨勫紩鐢紝紼嬪簭浼氳繘鍏ユ湭鐭ョ姸鎬併?br>錛?錛?
涓嶈兘榪斿洖鍑芥暟鍐呴儴new鍒嗛厤鐨勫唴瀛樼殑寮曠敤銆傝繖鏉″彲浠ュ弬鐓ffective C++[1]鐨処tem
31銆傝櫧鐒朵笉瀛樺湪灞閮ㄥ彉閲忕殑琚姩閿姣侀棶棰橈紝鍙浜庤繖縐嶆儏鍐碉紙榪斿洖鍑芥暟鍐呴儴new鍒嗛厤鍐呭瓨鐨勫紩鐢級錛屽張闈復鍏跺畠灝村艾灞闈€備緥濡傦紝琚嚱鏁拌繑鍥炵殑寮曠敤鍙槸浣滀負涓
涓復鏃跺彉閲忓嚭鐜幫紝鑰屾病鏈夎璧嬩簣涓涓疄闄呯殑鍙橀噺錛岄偅涔堣繖涓紩鐢ㄦ墍鎸囧悜鐨勭┖闂達紙鐢眓ew鍒嗛厤錛夊氨鏃犳硶閲婃斁錛岄犳垚memory leak銆?br>錛?錛夊彲浠ヨ繑
鍥炵被鎴愬憳鐨勫紩鐢紝浣嗘渶濂芥槸const銆傝繖鏉″師鍒欏彲浠ュ弬鐓ffective C++[1]鐨処tem
30銆備富瑕佸師鍥犳槸褰撳璞$殑灞炴ф槸涓庢煇縐嶄笟鍔¤鍒欙紙business
rule錛夌浉鍏寵仈鐨勬椂鍊欙紝鍏惰祴鍊煎父甯鎬笌鏌愪簺鍏跺畠灞炴ф垨鑰呭璞$殑鐘舵佹湁鍏籌紝鍥犳鏈夊繀瑕佸皢璧嬪兼搷浣滃皝瑁呭湪涓涓笟鍔¤鍒欏綋涓傚鏋滃叾瀹冨璞″彲浠ヨ幏寰楄灞炴х殑闈炲父
閲忓紩鐢紙鎴栨寚閽堬級錛岄偅涔堝璇ュ睘鎬х殑鍗曠函璧嬪煎氨浼氱牬鍧忎笟鍔¤鍒欑殑瀹屾暣鎬с?br>錛?錛夋祦鎿嶄綔絎﹂噸杞借繑鍥炲肩敵鏄庝負“寮曠敤”鐨勪綔鐢細
嫻佹搷浣?
絎?lt;<鍜?gt;>錛岃繖涓や釜鎿嶄綔絎﹀父甯稿笇鏈涜榪炵畫浣跨敤錛屼緥濡傦細cout << "hello" <<
endl;銆鍥犳榪欎袱涓搷浣滅鐨勮繑鍥炲煎簲璇ユ槸涓涓粛鐒舵敮鎸佽繖涓や釜鎿嶄綔絎︾殑嫻佸紩鐢ㄣ傚彲閫夌殑鍏跺畠鏂規鍖呮嫭錛氳繑鍥炰竴涓祦瀵硅薄鍜岃繑鍥炰竴涓祦瀵硅薄鎸囬拡銆備絾鏄浜庤繑鍥?
涓涓祦瀵硅薄錛岀▼搴忓繀欏婚噸鏂幫紙鎷瘋礉錛夋瀯閫犱竴涓柊鐨勬祦瀵硅薄錛屼篃灝辨槸璇達紝榪炵畫鐨勪袱涓?lt;<鎿嶄綔絎﹀疄闄呬笂鏄拡瀵逛笉鍚屽璞$殑錛佽繖鏃犳硶璁╀漢鎺ュ彈銆傚浜庤繑鍥炰竴
涓祦鎸囬拡鍒欎笉鑳借繛緇嬌鐢?lt;<鎿嶄綔絎︺傚洜姝わ紝榪斿洖涓涓祦瀵硅薄寮曠敤鏄儫涓閫夋嫨銆傝繖涓敮涓閫夋嫨寰堝叧閿紝瀹冭鏄庝簡寮曠敤鐨勯噸瑕佹т互鍙婃棤鍙浛浠fэ紝涔熻榪?
灝辨槸C++璇█涓紩鍏ュ紩鐢ㄨ繖涓蹇電殑鍘熷洜鍚с傝祴鍊兼搷浣滅=銆傝繖涓搷浣滅璞℃祦鎿嶄綔絎︿竴鏍鳳紝鏄彲浠ヨ繛緇嬌鐢ㄧ殑錛屼緥濡傦細x = j =
10;鎴栬?x=10)=100;璧嬪兼搷浣滅鐨勮繑鍥炲煎繀欏繪槸涓涓乏鍊鹼紝浠ヤ究鍙互琚戶緇祴鍊箋傚洜姝ゅ紩鐢ㄦ垚浜嗚繖涓搷浣滅鐨勬儫涓榪斿洖鍊奸夋嫨銆?br>渚?
錛僫 nclude <iostream.h>
int &put(int n);
int vals[10];
int error=-1;
void main()
{
put(0)=10; //浠ut(0)鍑芥暟鍊間綔涓哄乏鍊鹼紝絳変環浜巚als[0]=10;
put(9)=20; //浠ut(9)鍑芥暟鍊間綔涓哄乏鍊鹼紝絳変環浜巚als[9]=20;
cout<<vals[0];
cout<<vals[9];
}
int &put(int n)
{
if (n>=0 && n<=9 ) return vals[n];
else { cout<<"subscript error"; return error; }
}
錛?錛?
鍦ㄥ彟澶栫殑涓浜涙搷浣滅涓紝鍗村崈涓囦笉鑳借繑鍥炲紩鐢細+-*/ 鍥涘垯榪愮畻絎︺傚畠浠笉鑳借繑鍥炲紩鐢紝Effective
C++[1]鐨処tem23璇︾粏鐨勮璁轟簡榪欎釜闂銆備富瑕佸師鍥犳槸榪欏洓涓搷浣滅娌℃湁side
effect錛屽洜姝わ紝瀹冧滑蹇呴』鏋勯犱竴涓璞′綔涓鴻繑鍥炲鹼紝鍙夌殑鏂規鍖呮嫭錛氳繑鍥炰竴涓璞°佽繑鍥炰竴涓眬閮ㄥ彉閲忕殑寮曠敤錛岃繑鍥炰竴涓猲ew鍒嗛厤鐨勫璞$殑寮曠敤銆佽繑鍥炰竴
涓潤鎬佸璞″紩鐢ㄣ傛牴鎹墠闈㈡彁鍒扮殑寮曠敤浣滀負榪斿洖鍊肩殑涓変釜瑙勫垯錛岀2銆?涓や釜鏂規閮借鍚﹀喅浜嗐傞潤鎬佸璞$殑寮曠敤鍙堝洜涓?(a+b) ==
(c+d))浼氭案榪滀負true鑰屽鑷撮敊璇傛墍浠ュ彲閫夌殑鍙墿涓嬭繑鍥炰竴涓璞′簡銆?br>6. “寮曠敤”涓庡鎬佺殑鍏崇郴錛?br>寮曠敤鏄櫎鎸囬拡澶栧彟涓涓彲浠ヤ駭鐢熷鎬佹晥鏋滅殑鎵嬫銆傝繖鎰忓懗鐫錛屼竴涓熀綾葷殑寮曠敤鍙互鎸囧悜瀹冪殑媧劇敓綾誨疄渚嬨?br>渚?
Class A; Class B : Class A{...}; B b; A& ref = b;
7. “寮曠敤”涓庢寚閽堢殑鍖哄埆鏄粈涔堬紵
鎸囬拡閫氳繃鏌愪釜鎸囬拡鍙橀噺鎸囧悜涓涓璞″悗錛屽瀹冩墍鎸囧悜鐨勫彉閲忛棿鎺ユ搷浣溿傜▼搴忎腑浣跨敤鎸囬拡錛岀▼搴忕殑鍙鎬у樊錛涜屽紩鐢ㄦ湰韜氨鏄洰鏍囧彉閲忕殑鍒悕錛屽寮曠敤鐨勬搷浣滃氨鏄鐩爣鍙橀噺鐨勬搷浣溿傛澶栵紝灝辨槸涓婇潰鎻愬埌鐨勫鍑芥暟浼爎ef鍜宲ointer鐨勫尯鍒?br>8. 浠涔堟椂鍊欓渶瑕?#8220;寮曠敤”錛?br>嫻佹搷浣滅<<鍜?gt;>銆佽祴鍊兼搷浣滅=鐨勮繑鍥炲箋佹嫹璐濇瀯閫犲嚱鏁扮殑鍙傛暟銆佽祴鍊兼搷浣滅=鐨勫弬鏁般佸叾瀹冩儏鍐甸兘鎺ㄨ崘浣跨敤寮曠敤銆?br>浠ヤ笂 2-8 鍙傝冿細http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx
9. 緇撴瀯涓庤仈鍚堟湁鍜屽尯鍒紵
1. 緇撴瀯鍜岃仈鍚堥兘鏄敱澶氫釜涓嶅悓鐨勬暟鎹被鍨嬫垚鍛樼粍鎴? 浣嗗湪浠諱綍鍚屼竴鏃跺埢, 鑱斿悎涓彧瀛樻斁浜嗕竴涓閫変腑鐨勬垚鍛橈紙鎵鏈夋垚鍛樺叡鐢ㄤ竴鍧楀湴鍧絀洪棿錛? 鑰岀粨鏋勭殑鎵鏈夋垚鍛橀兘瀛樺湪錛堜笉鍚屾垚鍛樼殑瀛樻斁鍦板潃涓嶅悓錛夈?br> 2. 瀵逛簬鑱斿悎鐨勪笉鍚屾垚鍛樿祴鍊? 灝嗕細瀵瑰叾瀹冩垚鍛橀噸鍐? 鍘熸潵鎴愬憳鐨勫煎氨涓嶅瓨鍦ㄤ簡, 鑰屽浜庣粨鏋勭殑涓嶅悓鎴愬憳璧嬪兼槸浜掍笉褰卞搷鐨勩?br>10. 涓嬮潰鍏充簬“鑱斿悎”鐨勯鐩殑杈撳嚭錛?br>a)
錛僫 nclude <stdio.h>
union
{
int i;
char x[2];
}a;
void main()
{
a.x[0] = 10;
a.x[1] = 1;
printf("%d",a.i);
}
絳旀錛?66 (浣庝綅浣庡湴鍧錛岄珮浣嶉珮鍦板潃錛屽唴瀛樺崰鐢ㄦ儏鍐墊槸Ox010A錛?br>b)
main()
{
union{ /*瀹氫箟涓涓仈鍚?/
int i;
struct{ /*鍦ㄨ仈鍚堜腑瀹氫箟涓涓粨鏋?/
char first;
char second;
}half;
}number;
number.i=0x4241; /*鑱斿悎鎴愬憳璧嬪?/
printf("%c%c\n", number.half.first, mumber.half.second);
number.half.first='a'; /*鑱斿悎涓粨鏋勬垚鍛樿祴鍊?/
number.half.second='b';
printf("%x\n", number.i);
getch();
}
絳旀錛?AB (0x41瀵瑰簲'A',鏄綆浣嶏紱Ox42瀵瑰簲'B',鏄珮浣嶏級
6261 (number.i鍜宯umber.half鍏辯敤涓鍧楀湴鍧絀洪棿錛?br>11. 宸茬煡strcpy鐨勫嚱鏁板師鍨嬶細char *strcpy(char *strDest, const char *strSrc)鍏朵腑strDest 鏄洰鐨勫瓧絎︿覆錛宻trSrc 鏄簮瀛楃涓層備笉璋冪敤C++/C 鐨勫瓧絎︿覆搴撳嚱鏁幫紝璇風紪鍐欏嚱鏁?strcpy銆?br>絳旀錛?br>char *strcpy(char *strDest, const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while( (*strDest++ = *strSrc++) != ‘\0’)
;
return tempptr ;
}
12. 宸茬煡String綾誨畾涔夊涓嬶細
class String
{
public:
String(const char *str = NULL); // 閫氱敤鏋勯犲嚱鏁?br>String(const String &another); // 鎷瘋礉鏋勯犲嚱鏁?br>~ String(); // 鏋愭瀯鍑芥暟
String & operater =(const String &rhs); // 璧嬪煎嚱鏁?br>private:
char *m_data; // 鐢ㄤ簬淇濆瓨瀛楃涓?br>};
灝濊瘯鍐欏嚭綾葷殑鎴愬憳鍑芥暟瀹炵幇銆?br>絳旀錛?br>String::String(const char *str)
{
if ( str == NULL ) //strlen鍦ㄥ弬鏁頒負NULL鏃朵細鎶涘紓甯告墠浼氭湁榪欐鍒ゆ柇
{
m_data = new char[1] ;
m_data[0] = '\0' ;
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}
}
String::String(const String &another)
{
m_data = new char[strlen(another.m_data) + 1];
strcpy(m_data,other.m_data);
}
String& String::operator =(const String &rhs)
{
if ( this == &rhs)
return *this ;
delete []m_data; //鍒犻櫎鍘熸潵鐨勬暟鎹紝鏂板紑涓鍧楀唴瀛?br> m_data = new char[strlen(rhs.m_data) + 1];
strcpy(m_data,rhs.m_data);
return *this ;
}
String::~String()
{
delete []m_data ;
}
13. .h澶存枃浠朵腑鐨刬fndef/define/endif 鐨勪綔鐢紵
絳旓細闃叉璇ュご鏂囦歡琚噸澶嶅紩鐢ㄣ?br>14. 錛僫 nclude<file.h> 涓?錛僫 nclude "file.h"鐨勫尯鍒紵
絳旓細鍓嶈呮槸浠嶴tandard Library鐨勮礬寰勫鎵懼拰寮曠敤file.h錛岃屽悗鑰呮槸浠庡綋鍓嶅伐浣滆礬寰勬悳瀵誨茍寮曠敤file.h銆?br>15.鍦–++ 紼嬪簭涓皟鐢ㄨC 緙栬瘧鍣ㄧ紪璇戝悗鐨勫嚱鏁幫紝涓轟粈涔堣鍔爀xtern “C”錛?br>棣栧厛錛屼綔涓篹xtern鏄疌/C++璇█涓〃鏄庡嚱鏁板拰鍏ㄥ眬鍙橀噺浣滅敤鑼冨洿錛堝彲瑙佹э級鐨勫叧閿瓧錛岃鍏抽敭瀛楀憡璇夌紪璇戝櫒錛屽叾澹版槑鐨勫嚱鏁板拰鍙橀噺鍙互鍦ㄦ湰妯″潡鎴栧叾瀹冩ā鍧椾腑浣跨敤銆?br>閫?
甯革紝鍦ㄦā鍧楃殑澶存枃浠朵腑瀵規湰妯″潡鎻愪緵緇欏叾瀹冩ā鍧楀紩鐢ㄧ殑鍑芥暟鍜屽叏灞鍙橀噺浠ュ叧閿瓧extern澹版槑銆備緥濡傦紝濡傛灉妯″潡B嬈插紩鐢ㄨ妯″潡A涓畾涔夌殑鍏ㄥ眬鍙橀噺鍜屽嚱鏁版椂鍙?
闇鍖呭惈妯″潡A鐨勫ご鏂囦歡鍗沖彲銆傝繖鏍鳳紝妯″潡B涓皟鐢ㄦā鍧桝涓殑鍑芥暟鏃訛紝鍦ㄧ紪璇戦樁孌碉紝妯″潡B铏界劧鎵句笉鍒拌鍑芥暟錛屼絾鏄茍涓嶄細鎶ラ敊錛涘畠浼氬湪榪炴帴闃舵涓粠妯″潡A緙栬瘧鐢?
鎴愮殑鐩爣浠g爜涓壘鍒版鍑芥暟
extern "C"鏄繛鎺ョ敵鏄?linkage declaration),琚玡xtern "C"淇グ鐨勫彉閲忓拰鍑芥暟鏄寜鐓璇█鏂瑰紡緙栬瘧鍜岃繛鎺ョ殑,鏉ョ湅鐪婥++涓綾諱技C鐨勫嚱鏁版槸鎬庢牱緙栬瘧鐨勶細
浣滀負涓縐嶉潰鍚戝璞$殑璇█錛孋++鏀寔鍑芥暟閲嶈澆錛岃岃繃紼嬪紡璇█C鍒欎笉鏀寔銆傚嚱鏁拌C++緙栬瘧鍚庡湪絎﹀彿搴撲腑鐨勫悕瀛椾笌C璇█鐨勪笉鍚屻備緥濡傦紝鍋囪鏌愪釜鍑芥暟鐨勫師鍨嬩負錛?br>void foo( int x, int y );
銆銆
璇ュ嚱鏁拌C緙栬瘧鍣ㄧ紪璇戝悗鍦ㄧ鍙峰簱涓殑鍚嶅瓧涓篲foo錛岃孋++緙栬瘧鍣ㄥ垯浼氫駭鐢熷儚_foo_int_int涔嬬被鐨勫悕瀛楋紙涓嶅悓鐨勭紪璇戝櫒鍙兘鐢熸垚鐨勫悕瀛椾笉鍚岋紝浣嗘槸閮介噰鐢ㄤ簡鐩稿悓鐨勬満鍒訛紝鐢熸垚鐨勬柊鍚嶅瓧縐頒負“mangled name”錛夈?br>_foo_int_int
榪欐牱鐨勫悕瀛楀寘鍚簡鍑芥暟鍚嶃佸嚱鏁板弬鏁版暟閲忓強綾誨瀷淇℃伅錛孋++灝辨槸闈犺繖縐嶆満鍒舵潵瀹炵幇鍑芥暟閲嶈澆鐨勩備緥濡傦紝鍦–++涓紝鍑芥暟void foo( int x,
int y )涓巚oid foo( int x, float y )緙栬瘧鐢熸垚鐨勭鍙鋒槸涓嶇浉鍚岀殑錛屽悗鑰呬負_foo_int_float銆?br>鍚屾牱
鍦幫紝C++涓殑鍙橀噺闄ゆ敮鎸佸眬閮ㄥ彉閲忓錛岃繕鏀寔綾繪垚鍛樺彉閲忓拰鍏ㄥ眬鍙橀噺銆傜敤鎴鋒墍緙栧啓紼嬪簭鐨勭被鎴愬憳鍙橀噺鍙兘涓庡叏灞鍙橀噺鍚屽悕錛屾垜浠互"."鏉ュ尯鍒嗐傝屾湰璐ㄤ笂錛岀紪璇?
鍣ㄥ湪榪涜緙栬瘧鏃訛紝涓庡嚱鏁扮殑澶勭悊鐩鎬技錛屼篃涓虹被涓殑鍙橀噺鍙栦簡涓涓嫭涓鏃犱簩鐨勫悕瀛楋紝榪欎釜鍚嶅瓧涓庣敤鎴風▼搴忎腑鍚屽悕鐨勫叏灞鍙橀噺鍚嶅瓧涓嶅悓銆?br>鏈姞extern "C"澹版槑鏃剁殑榪炴帴鏂瑰紡
鍋囪鍦–++涓紝妯″潡A鐨勫ご鏂囦歡濡備笅錛?br>// 妯″潡A澶存枃浠躲moduleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
int foo( int x, int y );
#endif銆銆
鍦ㄦā鍧桞涓紩鐢ㄨ鍑芥暟錛?br>// 妯″潡B瀹炵幇鏂囦歡銆moduleB.cpp
錛僫 nclude "moduleA.h"
foo(2,3);
銆銆
瀹為檯涓婏紝鍦ㄨ繛鎺ラ樁孌碉紝榪炴帴鍣ㄤ細浠庢ā鍧桝鐢熸垚鐨勭洰鏍囨枃浠秏oduleA.obj涓鎵綺foo_int_int榪欐牱鐨勭鍙鳳紒
鍔爀xtern "C"澹版槑鍚庣殑緙栬瘧鍜岃繛鎺ユ柟寮?br>鍔爀xtern "C"澹版槑鍚庯紝妯″潡A鐨勫ご鏂囦歡鍙樹負錛?br>// 妯″潡A澶存枃浠躲moduleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
extern "C" int foo( int x, int y );
#endif銆銆
鍦ㄦā鍧桞鐨勫疄鐜版枃浠朵腑浠嶇劧璋冪敤foo( 2,3 )錛屽叾緇撴灉鏄細
錛?錛夋ā鍧桝緙栬瘧鐢熸垚foo鐨勭洰鏍囦唬鐮佹椂錛屾病鏈夊鍏跺悕瀛楄繘琛岀壒孌婂鐞嗭紝閲囩敤浜咰璇█鐨勬柟寮忥紱
錛?錛夎繛鎺ュ櫒鍦ㄤ負妯″潡B鐨勭洰鏍囦唬鐮佸鎵緁oo(2,3)璋冪敤鏃訛紝瀵繪壘鐨勬槸鏈粡淇敼鐨勭鍙峰悕_foo銆?br>濡傛灉鍦ㄦā鍧桝涓嚱鏁板0鏄庝簡foo涓篹xtern "C"綾誨瀷錛岃屾ā鍧桞涓寘鍚殑鏄痚xtern int foo( int x, int y ) 錛屽垯妯″潡B鎵句笉鍒版ā鍧桝涓殑鍑芥暟錛涘弽涔嬩害鐒躲?br>鎵
浠ワ紝鍙互鐢ㄤ竴鍙ヨ瘽姒傛嫭extern
“C”榪欎釜澹版槑鐨勭湡瀹炵洰鐨勶紙浠諱綍璇█涓殑浠諱綍璇硶鐗規х殑璇炵敓閮戒笉鏄殢鎰忚屼負鐨勶紝鏉ユ簮浜庣湡瀹炰笘鐣岀殑闇姹傞┍鍔ㄣ傛垜浠湪鎬濊冮棶棰樻椂錛屼笉鑳藉彧鍋滅暀鍦ㄨ繖涓璦鏄庝箞
鍋氱殑錛岃繕瑕侀棶涓闂畠涓轟粈涔堣榪欎箞鍋氾紝鍔ㄦ満鏄粈涔堬紝榪欐牱鎴戜滑鍙互鏇存繁鍏ュ湴鐞嗚В璁稿闂錛夛細瀹炵幇C++涓嶤鍙婂叾瀹冭璦鐨勬販鍚堢紪紼嬨傘銆
鏄庣櫧浜咰++涓璭xtern "C"鐨勮绔嬪姩鏈猴紝鎴戜滑涓嬮潰鏉ュ叿浣撳垎鏋恊xtern "C"閫氬父鐨勪嬌鐢ㄦ妧宸э細
extern "C"鐨勬儻鐢ㄦ硶
錛?錛夊湪C++涓紩鐢–璇█涓殑鍑芥暟鍜屽彉閲忥紝鍦ㄥ寘鍚獵璇█澶存枃浠訛紙鍋囪涓篶Example.h錛夋椂錛岄渶榪涜涓嬪垪澶勭悊錛?br>extern "C"
{
錛僫 nclude "cExample.h"
}
鑰屽湪C璇█鐨勫ご鏂囦歡涓紝瀵瑰叾澶栭儴鍑芥暟鍙兘鎸囧畾涓篹xtern綾誨瀷錛孋璇█涓笉鏀寔extern "C"澹版槑錛屽湪.c鏂囦歡涓寘鍚簡extern "C"鏃朵細鍑虹幇緙栬瘧璇硶閿欒銆?br>C++寮曠敤C鍑芥暟渚嬪瓙宸ョ▼涓寘鍚殑涓変釜鏂囦歡鐨勬簮浠g爜濡備笅錛?br>/* c璇█澶存枃浠訛細cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
extern int add(int x,int y);
#endif
/* c璇█瀹炵幇鏂囦歡錛歝Example.c */
錛僫 nclude "cExample.h"
int add( int x, int y )
{
return x + y;
}
// c++瀹炵幇鏂囦歡錛岃皟鐢╝dd錛歝ppFile.cpp
extern "C"
{
錛僫 nclude "cExample.h"
}
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}
濡傛灉C++璋冪敤涓涓狢璇█緙栧啓鐨?DLL鏃訛紝褰撳寘鎷?DLL鐨勫ご鏂囦歡鎴栧0鏄庢帴鍙e嚱鏁版椂錛屽簲鍔爀xtern "C" {銆}銆?br>錛?錛夊湪C涓紩鐢–++璇█涓殑鍑芥暟鍜屽彉閲忔椂錛孋++鐨勫ご鏂囦歡闇娣誨姞extern "C"錛屼絾鏄湪C璇█涓笉鑳界洿鎺ュ紩鐢ㄥ0鏄庝簡extern "C"鐨勮澶存枃浠訛紝搴旇浠呭皢C鏂囦歡涓皢C++涓畾涔夌殑extern "C"鍑芥暟澹版槑涓篹xtern綾誨瀷銆?br>C寮曠敤C++鍑芥暟渚嬪瓙宸ョ▼涓寘鍚殑涓変釜鏂囦歡鐨勬簮浠g爜濡備笅錛?br>//C++澶存枃浠?cppExample.h
#ifndef CPP_EXAMPLE_H
#define CPP_EXAMPLE_H
extern "C" int add( int x, int y );
#endif
//C++瀹炵幇鏂囦歡 cppExample.cpp
錛僫 nclude "cppExample.h"
int add( int x, int y )
{
return x + y;
}
/* C瀹炵幇鏂囦歡 cFile.c
/* 榪欐牱浼氱紪璇戝嚭閿欙細錛僫 nclude "cExample.h" */
extern int add( int x, int y );
int main( int argc, char* argv[] )
{
add( 2, 3 );
return 0;
}
15棰樼洰鐨勮В絳旇鍙傝冦奀++涓璭xtern “C”鍚箟娣卞眰鎺㈢儲銆嬫敞瑙o細
16. 鍏寵仈銆佽仛鍚?Aggregation)浠ュ強緇勫悎(Composition)鐨勫尯鍒紵
娑夊強鍒癠ML涓殑涓浜涙蹇碉細鍏寵仈鏄〃紺轟袱涓被鐨勪竴鑸ц仈緋伙紝姣斿“瀛︾敓”鍜?#8220;鑰佸笀”灝辨槸涓縐嶅叧鑱斿叧緋伙紱鑱氬悎琛ㄧずhas-a鐨勫叧緋伙紝鏄竴縐嶇浉瀵規澗鏁g殑鍏崇郴錛岃仛鍚堢被涓嶉渶瑕佸琚仛鍚堢被璐熻矗錛屽涓嬪浘鎵紺猴紝鐢ㄧ┖鐨勮彵褰㈣〃紺鴻仛鍚堝叧緋伙細
浠庡疄鐜扮殑瑙掑害璁詫紝鑱氬悎鍙互琛ㄧず涓?
class A {...} class B { A* a; .....}
鑰岀粍鍚堣〃紺篶ontains-a鐨勫叧緋伙紝鍏寵仈鎬у己浜庤仛鍚堬細緇勫悎綾諱笌琚粍鍚堢被鏈夌浉鍚岀殑鐢熷懡鍛ㄦ湡錛岀粍鍚堢被瑕佸琚粍鍚堢被璐熻矗錛岄噰鐢ㄥ疄蹇冪殑鑿卞艦琛ㄧず緇勫悎鍏崇郴錛?br>
瀹炵幇鐨勫艦寮忔槸:
class A{...} class B{ A a; ...}
鍙傝冩枃绔狅細http://blog.csdn.net/wfwd/archive/2006/05/30/763753.aspx
http://blog.csdn.net/wfwd/archive/2006/05/30/763760.aspx
17.闈㈠悜瀵硅薄鐨勪笁涓熀鏈壒寰侊紝騫剁畝鍗曞彊榪頒箣錛?br>1. 灝佽錛氬皢瀹㈣浜嬬墿鎶借薄鎴愮被錛屾瘡涓被瀵硅嚜韜殑鏁版嵁鍜屾柟娉曞疄琛宲rotection(private, protected,public)
2.
緇ф壙錛氬箍涔夌殑緇ф壙鏈変笁縐嶅疄鐜板艦寮忥細瀹炵幇緇ф壙錛堟寚浣跨敤鍩虹被鐨勫睘鎬у拰鏂規硶鑰屾棤闇棰濆緙栫爜鐨勮兘鍔涳級銆佸彲瑙嗙戶鎵匡紙瀛愮獥浣撲嬌鐢ㄧ埗紿椾綋鐨勫瑙傚拰瀹炵幇浠g爜錛夈佹帴鍙g戶鎵?
錛堜粎浣跨敤灞炴у拰鏂規硶錛屽疄鐜版粸鍚庡埌瀛愮被瀹炵幇錛夈傚墠涓ょ錛堢被緇ф壙錛夊拰鍚庝竴縐嶏紙瀵硅薄緇勫悎=>鎺ュ彛緇ф壙浠ュ強綰櫄鍑芥暟錛夋瀯鎴愪簡鍔熻兘澶嶇敤鐨勪袱縐嶆柟寮忋?br>3. 澶氭侊細鏄皢鐖跺璞¤緗垚涓哄拰涓涓垨鏇村鐨勪粬鐨勫瓙瀵硅薄鐩哥瓑鐨勬妧鏈紝璧嬪間箣鍚庯紝鐖跺璞″氨鍙互鏍規嵁褰撳墠璧嬪肩粰瀹冪殑瀛愬璞$殑鐗規т互涓嶅悓鐨勬柟寮忚繍浣溿傜畝鍗曠殑璇達紝灝辨槸涓鍙ヨ瘽錛氬厑璁稿皢瀛愮被綾誨瀷鐨勬寚閽堣祴鍊肩粰鐖剁被綾誨瀷鐨勬寚閽堛?br>18. 閲嶈澆錛坥verload)鍜岄噸鍐?overried錛屾湁鐨勪功涔熷彨鍋?#8220;瑕嗙洊”錛夌殑鍖哄埆錛?br>甯歌冪殑棰樼洰銆備粠瀹氫箟涓婃潵璇達細
閲嶈澆錛氭槸鎸囧厑璁稿瓨鍦ㄥ涓悓鍚嶅嚱鏁幫紝鑰岃繖浜涘嚱鏁扮殑鍙傛暟琛ㄤ笉鍚岋紙鎴栬鍙傛暟涓暟涓嶅悓錛屾垨璁稿弬鏁扮被鍨嬩笉鍚岋紝鎴栬涓よ呴兘涓嶅悓錛夈?br>閲嶅啓錛氭槸鎸囧瓙綾婚噸鏂板畾涔夊綾昏櫄鍑芥暟鐨勬柟娉曘?br>浠庡疄鐜板師鐞嗕笂鏉ヨ錛?br>閲?
杞斤細緙栬瘧鍣ㄦ牴鎹嚱鏁頒笉鍚岀殑鍙傛暟琛紝瀵瑰悓鍚嶅嚱鏁扮殑鍚嶇О鍋氫慨楗幫紝鐒跺悗榪欎簺鍚屽悕鍑芥暟灝辨垚浜嗕笉鍚岀殑鍑芥暟錛堣嚦灝戝浜庣紪璇戝櫒鏉ヨ鏄繖鏍風殑錛夈傚錛屾湁涓や釜鍚屽悕鍑?
鏁幫細function func(p:integer):integer;鍜宖unction
func(p:string):integer;銆傞偅涔堢紪璇戝櫒鍋氳繃淇グ鍚庣殑鍑芥暟鍚嶇О鍙兘鏄繖鏍風殑錛歩nt_func銆乻tr_func銆傚浜庤繖涓や釜鍑芥暟鐨?
璋冪敤錛屽湪緙栬瘧鍣ㄩ棿灝卞凡緇忕‘瀹氫簡錛屾槸闈欐佺殑銆備篃灝辨槸璇達紝瀹冧滑鐨勫湴鍧鍦ㄧ紪璇戞湡灝辯粦瀹氫簡錛堟棭緇戝畾錛夛紝鍥犳錛岄噸杞藉拰澶氭佹棤鍏籌紒
閲嶅啓錛氬拰澶氭佺湡姝g浉鍏熾傚綋瀛愮被閲嶆柊瀹氫箟浜嗙埗綾葷殑铏氬嚱鏁板悗錛岀埗綾繪寚閽堟牴鎹祴緇欏畠鐨勪笉鍚岀殑瀛愮被鎸囬拡錛屽姩鎬佺殑璋冪敤灞炰簬瀛愮被鐨勮鍑芥暟錛岃繖鏍風殑鍑芥暟璋冪敤鍦ㄧ紪璇戞湡闂存槸鏃犳硶紜畾鐨勶紙璋冪敤鐨勫瓙綾葷殑铏氬嚱鏁扮殑鍦板潃鏃犳硶緇欏嚭錛夈傚洜姝わ紝榪欐牱鐨勫嚱鏁板湴鍧鏄湪榪愯鏈熺粦瀹氱殑錛堟櫄緇戝畾錛夈?br>19. 澶氭佺殑浣滅敤錛?br>涓昏鏄袱涓細1. 闅愯棌瀹炵幇緇嗚妭錛屼嬌寰椾唬鐮佽兘澶熸ā鍧楀寲錛涙墿灞曚唬鐮佹ā鍧楋紝瀹炵幇浠g爜閲嶇敤錛?. 鎺ュ彛閲嶇敤錛氫負浜嗙被鍦ㄧ戶鎵垮拰媧劇敓鐨勬椂鍊欙紝淇濊瘉浣跨敤瀹舵棌涓換涓綾葷殑瀹炰緥鐨勬煇涓灞炴ф椂鐨勬紜皟鐢ㄣ?br>20. Ado涓嶢do.net鐨勭浉鍚屼笌涓嶅悓錛?br>闄?
浜?#8220;鑳藉璁╁簲鐢ㄧ▼搴忓鐞嗗瓨鍌ㄤ簬DBMS 涓殑鏁版嵁“榪欎竴鍩烘湰鐩鎬技鐐瑰錛屼袱鑰呮病鏈夊お澶氬叡鍚屼箣澶勩備絾鏄疉do浣跨敤OLE DB 鎺ュ彛騫跺熀浜庡井杞殑COM
鎶鏈紝鑰孉DO.NET 鎷ユ湁鑷繁鐨凙DO.NET 鎺ュ彛騫朵笖鍩轟簬寰蔣鐨?NET 浣撶郴鏋舵瀯銆備紬鎵鍛ㄧ煡.NET 浣撶郴涓嶅悓浜嶤OM
浣撶郴錛孉DO.NET 鎺ュ彛涔熷氨瀹屽叏涓嶅悓浜嶢DO鍜孫LE DB 鎺ュ彛錛岃繖涔熷氨鏄ADO.NET 鍜孉DO鏄袱縐嶆暟鎹闂柟寮忋侫DO.net
鎻愪緵瀵筙ML 鐨勬敮鎸併?br>21. New delete 涓巑alloc free 鐨勮仈緋諱笌鍖哄埆?
絳旀錛氶兘鏄湪鍫?heap)涓婅繘琛屽姩鎬佺殑鍐呭瓨鎿嶄綔銆傜敤malloc鍑芥暟闇瑕佹寚瀹氬唴瀛樺垎閰嶇殑瀛楄妭鏁板茍涓斾笉鑳藉垵濮嬪寲瀵硅薄錛宯ew 浼氳嚜鍔ㄨ皟鐢ㄥ璞$殑鏋勯犲嚱鏁般俤elete 浼氳皟鐢ㄥ璞$殑destructor錛岃宖ree 涓嶄細璋冪敤瀵硅薄鐨刣estructor.
22. #define DOUBLE(x) x+x 錛宨 = 5*DOUBLE(5)錛?i 鏄灝戯紵
絳旀錛歩 涓?0銆?br>23. 鏈夊摢鍑犵鎯呭喌鍙兘鐢╥ntialization list 鑰屼笉鑳界敤assignment?
絳旀錛氬綋綾諱腑鍚湁const銆乺eference 鎴愬憳鍙橀噺錛涘熀綾葷殑鏋勯犲嚱鏁伴兘闇瑕佸垵濮嬪寲琛ㄣ?br>24. C++鏄笉鏄被鍨嬪畨鍏ㄧ殑錛?br>絳旀錛氫笉鏄備袱涓笉鍚岀被鍨嬬殑鎸囬拡涔嬮棿鍙互寮哄埗杞崲錛堢敤reinterpret cast)銆侰#鏄被鍨嬪畨鍏ㄧ殑銆?br>25. main 鍑芥暟鎵ц浠ュ墠錛岃繕浼氭墽琛屼粈涔堜唬鐮侊紵
絳旀錛氬叏灞瀵硅薄鐨勬瀯閫犲嚱鏁頒細鍦╩ain 鍑芥暟涔嬪墠鎵ц銆?br>26. 鎻忚堪鍐呭瓨鍒嗛厤鏂瑰紡浠ュ強瀹冧滑鐨勫尯鍒?
1錛変粠闈欐佸瓨鍌ㄥ尯鍩熷垎閰嶃傚唴瀛樺湪紼嬪簭緙栬瘧鐨勬椂鍊欏氨宸茬粡鍒嗛厤濂斤紝榪欏潡鍐呭瓨鍦ㄧ▼搴忕殑鏁翠釜榪愯鏈熼棿閮藉瓨鍦ㄣ備緥濡傚叏灞鍙橀噺錛宻tatic 鍙橀噺銆?br>2錛夊湪鏍堜笂鍒涘緩銆傚湪鎵ц鍑芥暟鏃訛紝鍑芥暟鍐呭眬閮ㄥ彉閲忕殑瀛樺偍鍗曞厓閮藉彲浠ュ湪鏍堜笂鍒涘緩錛屽嚱鏁版墽琛岀粨鏉熸椂榪欎簺瀛樺偍鍗曞厓鑷姩琚噴鏀俱傛爤鍐呭瓨鍒嗛厤榪愮畻鍐呯疆浜庡鐞嗗櫒鐨勬寚浠ら泦銆?br>3錛?浠庡爢涓婂垎閰嶏紝浜︾О鍔ㄦ佸唴瀛樺垎閰嶃傜▼搴忓湪榪愯鐨勬椂鍊欑敤malloc 鎴杗ew 鐢寵浠繪剰澶氬皯鐨勫唴瀛橈紝紼嬪簭鍛樿嚜宸辮礋璐e湪浣曟椂鐢╢ree 鎴杁elete 閲婃斁鍐呭瓨銆傚姩鎬佸唴瀛樼殑鐢熷瓨鏈熺敱紼嬪簭鍛樺喅瀹氾紝浣跨敤闈炲父鐏墊椿錛屼絾闂涔熸渶澶氥?
27.struct 鍜?class 鐨勫尯鍒?br>絳旀錛歴truct 鐨勬垚鍛橀粯璁ゆ槸鍏湁鐨勶紝鑰岀被鐨勬垚鍛橀粯璁ゆ槸縐佹湁鐨勩俿truct 鍜?class 鍦ㄥ叾浠栨柟闈㈡槸鍔熻兘鐩稿綋鐨勩?br>浠?
鎰熸儏涓婅錛屽ぇ澶氭暟鐨勫紑鍙戣呮劅鍒扮被鍜岀粨鏋勬湁寰堝ぇ鐨勫樊鍒傛劅瑙変笂緇撴瀯浠呬粎璞′竴鍫嗙己涔忓皝瑁呭拰鍔熻兘鐨勫紑鏀劇殑鍐呭瓨浣嶏紝鑰岀被灝辮薄媧葷殑騫朵笖鍙潬鐨勭ぞ浼氭垚鍛橈紝瀹冩湁鏅鴻兘鏈?
鍔★紝鏈夌墷鍥虹殑灝佽灞忛殰鍜屼竴涓壇濂藉畾涔夌殑鎺ュ彛銆傛棦鐒跺ぇ澶氭暟浜洪兘榪欎箞璁や負錛岄偅涔堝彧鏈夊湪浣犵殑綾繪湁寰堝皯鐨勬柟娉曞茍涓旀湁鍏湁鏁版嵁錛堣繖縐嶄簨鎯呭湪鑹ソ璁捐鐨勭郴緇熶腑鏄瓨鍦?
鐨?錛夋椂錛屼綘涔熻搴旇浣跨敤 struct 鍏抽敭瀛楋紝鍚﹀垯錛屼綘搴旇浣跨敤 class 鍏抽敭瀛椼?
28.褰撲竴涓被A 涓病鏈夌敓鍛戒換浣曟垚鍛樺彉閲忎笌鎴愬憳鍑芥暟,榪欐椂sizeof(A)鐨勫兼槸澶氬皯錛屽鏋滀笉鏄浂錛岃瑙i噴涓涓嬬紪璇戝櫒涓轟粈涔堟病鏈夎瀹冧負闆躲傦紙Autodesk錛?br>絳旀錛氳偗瀹氫笉鏄浂銆備婦涓弽渚嬶紝濡傛灉鏄浂鐨勮瘽錛屽0鏄庝竴涓猚lass A[10]瀵硅薄鏁扮粍錛岃屾瘡涓涓璞″崰鐢ㄧ殑絀洪棿鏄浂錛岃繖鏃跺氨娌″姙娉曞尯鍒咥[0],A[1]…浜嗐?br>29. 鍦?086 姹囩紪涓嬶紝閫昏緫鍦板潃鍜岀墿鐞嗗湴鍧鏄庢牱杞崲鐨勶紵錛圛ntel錛?br>絳旀錛氶氱敤瀵勫瓨鍣ㄧ粰鍑虹殑鍦板潃錛屾槸孌靛唴鍋忕Щ鍦板潃錛岀浉搴旀瀵勫瓨鍣ㄥ湴鍧*10H+閫氱敤瀵勫瓨鍣ㄥ唴鍦板潃錛屽氨寰楀埌浜嗙湡姝h璁塊棶鐨勫湴鍧銆?br>30. 姣旇緝C++涓殑4縐嶇被鍨嬭漿鎹㈡柟寮忥紵
璇峰弬鑰冿細http://blog.csdn.net/wfwd/archive/2006/05/30/763785.aspx錛岄噸鐐規槸static_cast, dynamic_cast鍜宺einterpret_cast鐨勫尯鍒拰搴旂敤銆?br>31.鍒嗗埆鍐欏嚭BOOL,int,float,鎸囬拡綾誨瀷鐨勫彉閲廰 涓?#8220;闆?#8221;鐨勬瘮杈冭鍙ャ?br>絳旀錛?br>BOOL : if ( !a ) or if(a)
int : if ( a == 0)
float : const EXPRESSION EXP = 0.000001
if ( a < EXP && a >-EXP)
pointer : if ( a != NULL) or if(a == NULL)
32.璇瘋鍑篶onst涓?define 鐩告瘮錛屾湁浣曚紭鐐癸紵
絳旀錛?錛?const 甯擱噺鏈夋暟鎹被鍨嬶紝鑰屽畯甯擱噺娌℃湁鏁版嵁綾誨瀷銆傜紪璇戝櫒鍙互瀵瑰墠鑰呰繘琛岀被鍨嬪畨鍏ㄦ鏌ャ傝屽鍚庤呭彧榪涜瀛楃鏇挎崲錛屾病鏈夌被鍨嬪畨鍏ㄦ鏌ワ紝騫朵笖鍦ㄥ瓧絎︽浛鎹㈠彲鑳戒細浜х敓鎰忔枡涓嶅埌鐨勯敊璇?br> 2錛?鏈変簺闆嗘垚鍖栫殑璋冭瘯宸ュ叿鍙互瀵筩onst 甯擱噺榪涜璋冭瘯錛屼絾鏄笉鑳藉瀹忓父閲忚繘琛岃皟璇曘?br>33.綆榪版暟緇勪笌鎸囬拡鐨勫尯鍒紵
鏁扮粍瑕佷箞鍦ㄩ潤鎬佸瓨鍌ㄥ尯琚垱寤猴紙濡傚叏灞鏁扮粍錛夛紝瑕佷箞鍦ㄦ爤涓婅鍒涘緩銆傛寚閽堝彲浠ラ殢鏃舵寚鍚戜換鎰忕被鍨嬬殑鍐呭瓨鍧椼?br>(1)淇敼鍐呭涓婄殑宸埆
char a[] = “hello”;
a[0] = ‘X’;
char *p = “world”; // 娉ㄦ剰p 鎸囧悜甯擱噺瀛楃涓?br>p[0] = ‘X’; // 緙栬瘧鍣ㄤ笉鑳藉彂鐜拌閿欒錛岃繍琛屾椂閿欒
(2)
鐢ㄨ繍綆楃sizeof 鍙互璁$畻鍑烘暟緇勭殑瀹歸噺錛堝瓧鑺傛暟錛夈俿izeof(p),p 涓烘寚閽堝緱鍒扮殑鏄竴涓寚閽堝彉閲忕殑瀛楄妭鏁幫紝鑰屼笉鏄痯
鎵鎸囩殑鍐呭瓨瀹歸噺銆侰++/C
璇█娌℃湁鍔炴硶鐭ラ亾鎸囬拡鎵鎸囩殑鍐呭瓨瀹歸噺錛岄櫎闈炲湪鐢寵鍐呭瓨鏃惰浣忓畠銆傛敞鎰忓綋鏁扮粍浣滀負鍑芥暟鐨勫弬鏁拌繘琛屼紶閫掓椂錛岃鏁扮粍鑷姩閫鍖栦負鍚岀被鍨嬬殑鎸囬拡銆?br>char a[] = "hello world";
char *p = a;
cout<< sizeof(a) << endl; // 12 瀛楄妭
cout<< sizeof(p) << endl; // 4 瀛楄妭
璁$畻鏁扮粍鍜屾寚閽堢殑鍐呭瓨瀹歸噺
void Func(char a[100])
{
cout<< sizeof(a) << endl; // 4 瀛楄妭鑰屼笉鏄?00 瀛楄妭
}
34.綾繪垚鍛樺嚱鏁扮殑閲嶈澆銆佽鐩栧拰闅愯棌鍖哄埆錛?br>絳旀錛?br>a.鎴愬憳鍑芥暟琚噸杞界殑鐗瑰緛錛?br>錛?錛夌浉鍚岀殑鑼冨洿錛堝湪鍚屼竴涓被涓級錛?br>錛?錛夊嚱鏁板悕瀛楃浉鍚岋紱
錛?錛夊弬鏁頒笉鍚岋紱
錛?錛塿irtual 鍏抽敭瀛楀彲鏈夊彲鏃犮?br>b.瑕嗙洊鏄寚媧劇敓綾誨嚱鏁拌鐩栧熀綾誨嚱鏁幫紝鐗瑰緛鏄細
錛?錛変笉鍚岀殑鑼冨洿錛堝垎鍒綅浜庢淳鐢熺被涓庡熀綾伙級錛?br>錛?錛夊嚱鏁板悕瀛楃浉鍚岋紱
錛?錛夊弬鏁扮浉鍚岋紱
錛?錛夊熀綾誨嚱鏁板繀欏繪湁virtual 鍏抽敭瀛椼?br>c.“闅愯棌”鏄寚媧劇敓綾葷殑鍑芥暟灞忚斀浜嗕笌鍏跺悓鍚嶇殑鍩虹被鍑芥暟錛岃鍒欏涓嬶細
錛?錛夊鏋滄淳鐢熺被鐨勫嚱鏁頒笌鍩虹被鐨勫嚱鏁板悓鍚嶏紝浣嗘槸鍙傛暟涓嶅悓銆傛鏃訛紝涓嶈鏈夋棤virtual鍏抽敭瀛楋紝鍩虹被鐨勫嚱鏁板皢琚殣钘忥紙娉ㄦ剰鍒笌閲嶈澆娣鋒穯錛夈?br>錛?錛夊鏋滄淳鐢熺被鐨勫嚱鏁頒笌鍩虹被鐨勫嚱鏁板悓鍚嶏紝騫朵笖鍙傛暟涔熺浉鍚岋紝浣嗘槸鍩虹被鍑芥暟娌℃湁virtual 鍏抽敭瀛椼傛鏃訛紝鍩虹被鐨勫嚱鏁拌闅愯棌錛堟敞鎰忓埆涓庤鐩栨販娣嗭級
35.
There are two int variables: a and b, don’t use “if”, “? :”, “switch”or
other judgement statements, find out the biggest one of the two numbers.
絳旀錛? ( a + b ) + abs( a - b ) ) / 2
36. 濡備綍鎵撳嵃鍑哄綋鍓嶆簮鏂囦歡鐨勬枃浠跺悕浠ュ強婧愭枃浠剁殑褰撳墠琛屽彿錛?br>絳旀錛?br>cout << __FILE__ ;
cout<<__LINE__ ;
__FILE__鍜宊_LINE__鏄郴緇熼瀹氫箟瀹忥紝榪欑瀹忓茍涓嶆槸鍦ㄦ煇涓枃浠朵腑瀹氫箟鐨勶紝鑰屾槸鐢辯紪璇戝櫒瀹氫箟鐨勩?br>37. main 涓誨嚱鏁版墽琛屽畬姣曞悗錛屾槸鍚﹀彲鑳戒細鍐嶆墽琛屼竴孌典唬鐮侊紝緇欏嚭璇存槑錛?br>絳旀錛氬彲浠ワ紝鍙互鐢╛onexit 娉ㄥ唽涓涓嚱鏁幫紝瀹冧細鍦╩ain 涔嬪悗鎵цint fn1(void), fn2(void), fn3(void), fn4 (void);
void main( void )
{
String str("zhanglin");
_onexit( fn1 );
_onexit( fn2 );
_onexit( fn3 );
_onexit( fn4 );
printf( "This is executed first.\n" );
}
int fn1()
{
printf( "next.\n" );
return 0;
}
int fn2()
{
printf( "executed " );
return 0;
}
int fn3()
{
printf( "is " );
return 0;
}
int fn4()
{
printf( "This " );
return 0;
}
The
_onexit function is passed the address of a function (func) to be
called when the program terminates normally. Successive calls to
_onexit create a register of functions that are executed in LIFO
(last-in-first-out) order. The functions passed to _onexit cannot take
parameters.
38. 濡備綍鍒ゆ柇涓孌電▼搴忔槸鐢盋 緙栬瘧紼嬪簭榪樻槸鐢盋++緙栬瘧紼嬪簭緙栬瘧鐨勶紵
絳旀錛?br>#ifdef __cplusplus
cout<<"c++";
#else
cout<<"c";
#endif
39.鏂囦歡涓湁涓緇勬暣鏁幫紝瑕佹眰鎺掑簭鍚庤緭鍑哄埌鍙︿竴涓枃浠朵腑
絳旀錛?br>錛僫 nclude<iostream>
錛僫 nclude<fstream>
using namespace std;
void Order(vector<int>& data) //bubble sort
{
int count = data.size() ;
int tag = false ; // 璁劇疆鏄惁闇瑕佺戶緇啋娉$殑鏍囧織浣?br>for ( int i = 0 ; i < count ; i++)
{
for ( int j = 0 ; j < count - i - 1 ; j++)
{
if ( data[j] > data[j+1])
{
tag = true ;
int temp = data[j] ;
data[j] = data[j+1] ;
data[j+1] = temp ;
}
}
if ( !tag )
break ;
}
}
void main( void )
{
vector<int>data;
ifstream in("c:\\data.txt");
if ( !in)
{
cout<<"file error!";
exit(1);
}
int temp;
while (!in.eof())
{
in>>temp;
data.push_back(temp);
}
in.close(); //鍏抽棴杈撳叆鏂囦歡嫻?br>Order(data);
ofstream out("c:\\result.txt");
if ( !out)
{
cout<<"file error!";
exit(1);
}
for ( i = 0 ; i < data.size() ; i++)
out<<data<<" ";
out.close(); //鍏抽棴杈撳嚭鏂囦歡嫻?br>}
40. 閾捐〃棰橈細涓涓摼琛ㄧ殑緇撶偣緇撴瀯
struct Node
{
int data ;
Node *next ;
};
typedef struct Node Node ;
(1)宸茬煡閾捐〃鐨勫ご緇撶偣head,鍐欎竴涓嚱鏁版妸榪欎釜閾捐〃閫嗗簭 ( Intel)
Node * ReverseList(Node *head) //閾捐〃閫嗗簭
{
if ( head == NULL || head->next == NULL )
return head;
Node *p1 = head ;
Node *p2 = p1->next ;
Node *p3 = p2->next ;
p1->next = NULL ;
while ( p3 != NULL )
{
p2->next = p1 ;
p1 = p2 ;
p2 = p3 ;
p3 = p3->next ;
}
p2->next = p1 ;
head = p2 ;
return head ;
}
(2)宸茬煡涓や釜閾捐〃head1 鍜宧ead2 鍚勮嚜鏈夊簭錛岃鎶婂畠浠悎騫舵垚涓涓摼琛ㄤ緷鐒舵湁搴忋?淇濈暀鎵鏈夌粨鐐癸紝鍗充究澶у皬鐩稿悓錛?br>Node * Merge(Node *head1 , Node *head2)
{
if ( head1 == NULL)
return head2 ;
if ( head2 == NULL)
return head1 ;
Node *head = NULL ;
Node *p1 = NULL;
Node *p2 = NULL;
if ( head1->data < head2->data )
{
head = head1 ;
p1 = head1->next;
p2 = head2 ;
}
else
{
head = head2 ;
p2 = head2->next ;
p1 = head1 ;
}
Node *pcurrent = head ;
while ( p1 != NULL && p2 != NULL)
{
if ( p1->data <= p2->data )
{
pcurrent->next = p1 ;
pcurrent = p1 ;
p1 = p1->next ;
}
else
{
pcurrent->next = p2 ;
pcurrent = p2 ;
p2 = p2->next ;
}
}
if ( p1 != NULL )
pcurrent->next = p1 ;
if ( p2 != NULL )
pcurrent->next = p2 ;
return head ;
}
(3)宸茬煡涓や釜閾捐〃head1 鍜宧ead2 鍚勮嚜鏈夊簭錛岃鎶婂畠浠悎騫舵垚涓涓摼琛ㄤ緷鐒舵湁搴忥紝榪欐瑕佹眰鐢ㄩ掑綊鏂規硶榪涜銆?(Autodesk)
絳旀錛?br>Node * MergeRecursive(Node *head1 , Node *head2)
{
if ( head1 == NULL )
return head2 ;
if ( head2 == NULL)
return head1 ;
Node *head = NULL ;
if ( head1->data < head2->data )
{
head = head1 ;
head->next = MergeRecursive(head1->next,head2);
}
else
{
head = head2 ;
head->next = MergeRecursive(head1,head2->next);
}
return head ;
}
41. 鍒嗘瀽涓涓嬭繖孌電▼搴忕殑杈撳嚭 (Autodesk)
class B
{
public:
B()
{
cout<<"default constructor"<<endl;
}
~B()
{
cout<<"destructed"<<endl;
}
B(int i):data(i) //B(int) works as a converter ( int -> instance of B)
{
cout<<"constructed by parameter " << data <<endl;
}
private:
int data;
};
B Play( B b)
{
return b ;
}
(1) results:
int main(int argc, char* argv[]) constructed by parameter 5
{ destructed B(5)褰㈠弬鏋愭瀯
B t1 = Play(5); B t2 = Play(t1); 銆 destructed t1褰㈠弬鏋愭瀯
return 0;銆銆銆銆銆銆銆銆銆銆銆銆 destructed t2銆娉ㄦ剰欏哄簭錛?br>} destructed t1
(2) results:
int main(int argc, char* argv[]) constructed by parameter 5
{ destructed B(5)褰㈠弬鏋愭瀯
B t1 = Play(5); B t2 = Play(10); 銆 constructed by parameter 10
return 0;銆銆銆銆銆銆銆銆銆銆銆銆 destructed B(10)褰㈠弬鏋愭瀯
} destructed t2銆娉ㄦ剰欏哄簭錛?br> destructed t1
42. 鍐欎竴涓嚱鏁版壘鍑轟竴涓暣鏁版暟緇勪腑錛岀浜屽ぇ鐨勬暟 錛坢icrosoft錛?br>絳旀錛?br>const int MINNUMBER = -32767 ;
int find_sec_max( int data[] , int count)
{
int maxnumber = data[0] ;
int sec_max = MINNUMBER ;
for ( int i = 1 ; i < count ; i++)
{
if ( data > maxnumber )
{
sec_max = maxnumber ;
maxnumber = data ;
}
else
{
if ( data > sec_max )
sec_max = data ;
}
}
return sec_max ;
}
43. 鍐欎竴涓湪涓涓瓧絎︿覆(n)涓鎵句竴涓瓙涓?m)絎竴涓綅緗殑鍑芥暟銆?br>KMP綆楁硶鏁堢巼鏈濂斤紝鏃墮棿澶嶆潅搴︽槸錛?n+m)銆?br>44. 澶氶噸緇ф壙鐨勫唴瀛樺垎閰嶉棶棰橈細
姣斿鏈塩lass A : public class B, public class C {}
閭d箞A鐨勫唴瀛樼粨鏋勫ぇ鑷存槸鎬庝箞鏍風殑錛?br>榪欎釜鏄痗ompiler-dependent鐨? 涓嶅悓鐨勫疄鐜板叾緇嗚妭鍙兘涓嶅悓銆?br>濡傛灉涓嶈冭檻鏈夎櫄鍑芥暟銆佽櫄緇ф壙鐨勮瘽灝辯浉褰撶畝鍗曪紱鍚﹀垯鐨勮瘽錛岀浉褰撳鏉傘?br>鍙互鍙傝冦婃繁鍏ユ帰绱++瀵硅薄妯″瀷銆嬶紝鎴栬咃細
http://blog.csdn.net/wfwd/archive/2006/05/30/763797.aspx
45. 濡備綍鍒ゆ柇涓涓崟閾捐〃鏄湁鐜殑錛燂紙娉ㄦ剰涓嶈兘鐢ㄦ爣蹇椾綅錛屾渶澶氬彧鑳界敤涓や釜棰濆鎸囬拡錛?br> struct node { char val; node* next;}
bool check(const node* head) {} //return false : 鏃犵幆錛泃rue: 鏈夌幆
涓縐峅錛坣錛夌殑鍔炴硶灝辨槸錛堟悶涓や釜鎸囬拡錛屼竴涓瘡嬈¢掑涓姝ワ紝涓涓瘡嬈¢掑涓ゆ錛屽鏋滄湁鐜殑璇濅袱鑰呭繀鐒墮噸鍚堬紝鍙嶄箣浜︾劧錛夛細
bool check(const node* head)
{
if(head==NULL) return false;
node *low=head, *fast=head->next;
while(fast!=NULL && fast->next!=NULL)
{
low=low->next;
fast=fast->next->next;
if(low==fast) return true;
}
return false;
}
鏈漢寰堝急錛岃繖鍑犱釜棰樹篃鎼炰笉瀹氾紝鐗規潵姹傛晳錛?br>1錛夎鏂囦歡file1.txt鐨勫唴瀹癸紙渚嬪錛夛細
12
34
56
杈撳嚭鍒癴ile2.txt錛?br>56
34
12
錛堥嗗簭錛?br>2錛夎緭鍑哄拰涓轟竴涓粰瀹氭暣鏁扮殑鎵鏈夌粍鍚?br>渚嬪n=5
5=1+4錛?=2+3錛堢浉鍔犵殑鏁頒笉鑳介噸澶嶏級
鍒欒緭鍑?br>1錛?錛?錛?銆?br>鏈涢珮鎵嬭祼鏁欙紒錛?br>
絎竴棰?娉ㄦ剰鍙闀挎暟緇勭殑搴旂敤.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int MAX = 10;
int *a = (int *)malloc(MAX * sizeof(int));
int *b;
FILE *fp1;
FILE *fp2;
fp1 = fopen("a.txt","r");
if(fp1 == NULL)
{printf("error1");
exit(-1);
}
fp2 = fopen("b.txt","w");
if(fp2 == NULL)
{printf("error2");
exit(-1);
}
int i = 0;
int j = 0;
while(fscanf(fp1,"%d",&a[i]) != EOF)
{
i++;
j++;
if(i >= MAX)
{
MAX = 2 * MAX;
b = (int*)realloc(a,MAX * sizeof(int));
if(b == NULL)
{
printf("error3");
exit(-1);
}
a = b;
}
}
for(;--j >= 0;)
fprintf(fp2,"%d\n",a[j]);
fclose(fp1);
fclose(fp2);
return 0;
}
絎簩棰?
#include <stdio.h>
int main(void)
{
unsigned long int i,j,k;
printf("please input the number\n");
scanf("%d",&i);
if( i % 2 == 0)
j = i / 2;
else
j = i / 2 + 1;
printf("The result is \n");
for(k = 0; k < j; k++)
printf("%d = %d + %d\n",i,k,i - k);
return 0;
}
#include <stdio.h>
void main()
{
unsigned long int a,i=1;
scanf("%d",&a);
if(a%2==0)
{
for(i=1;i<a/2;i++)
printf("%d",a,a-i);
}
else
for(i=1;i<=a/2;i++)
printf(" %d, %d",i,a-i);
}
鍏勫紵,榪欐牱鐨勯鐩嫢鏄仛涓嶅嚭鏉ュ疄鍦ㄦ槸鏈変簺涓嶅簲璇? 緇欎綘涓涓掕鍙嶅悜杈撳嚭瀛楃涓茬殑渚嬪瓙,鍙皳鏄弽搴忕殑緇忓吀渚嬬▼.
void inverse(char *p)
{
if( *p = = '\0' )
return;
inverse( p+1 );
printf( "%c", *p );
}
int main(int argc, char *argv[])
{
inverse("abc\0");
return 0;
}
鍊熺浜嗘ゼ涓婄殑“閫掕鍙嶅悜杈撳嚭”
#include <stdio.h>
void test(FILE *fread, FILE *fwrite)
{
char buf[1024] = {0};
if (!fgets(buf, sizeof(buf), fread))
return;
test( fread, fwrite );
fputs(buf, fwrite);
}
int main(int argc, char *argv[])
{
FILE *fr = NULL;
FILE *fw = NULL;
fr = fopen("data", "rb");
fw = fopen("dataout", "wb");
test(fr, fw);
fclose(fr);
fclose(fw);
return 0;
}
鍦ㄥ榻愪負4鐨勬儏鍐典笅
struct BBB
{
long num錛?br>char *name;
short int data;
char ha;
short ba[5];
}*p;
p=0x1000000;
p+0x200=____;
(Ulong)p+0x200=____;
(char*)p+0x200=____;
甯屾湜鍚勪綅杈句漢緇欏嚭絳旀鍜屽師鍥狅紝璋㈣阿鎷?br>瑙g瓟錛氬亣璁懼湪32浣岰PU涓婏紝
sizeof(long) = 4 bytes
sizeof(char *) = 4 bytes
sizeof(short int) = sizeof(short) = 2 bytes
sizeof(char) = 1 bytes
鐢變簬鏄?瀛楄妭瀵歸綈錛?br>sizeof(struct BBB) = sizeof(*p)
= 4 + 4 + 2 + 1 + 1/*琛ラ綈*/ + 2*5 + 2/*琛ラ綈*/ = 24 bytes (緇廌ev-C++楠岃瘉)
p=0x1000000;
p+0x200=____;
= 0x1000000 + 0x200*24
(Ulong)p+0x200=____;
= 0x1000000 + 0x200
(char*)p+0x200=____;
= 0x1000000 + 0x200*4
浣犲彲浠ュ弬鑰冧竴涓嬫寚閽堣繍綆楃殑緇嗚妭
鍐?
涓孌電▼搴忥紝鎵懼嚭鏁扮粍涓k澶у皬鐨勬暟錛岃緭鍑烘暟鎵鍦ㄧ殑浣嶇疆銆備緥濡倇2錛?錛?錛?錛?}涓紝絎竴澶х殑鏁版槸7錛屼綅緗湪4銆傜浜屽ぇ銆佺涓夊ぇ鐨勬暟閮芥槸4錛屼綅緗湪1銆?
3闅忎究杈撳嚭鍝竴涓潎鍙傚嚱鏁版帴鍙d負錛歩nt find_orderk(const int* narry,const int n,const int
k)
瑕佹眰綆楁硶澶嶆潅搴︿笉鑳芥槸O(n^2錛?br>璋㈣阿錛?br>鍙互鍏堢敤蹇熸帓搴忚繘琛屾帓搴忥紝鍏朵腑鐢ㄥ彟澶栦竴涓繘琛屽湴鍧鏌ユ壘
浠g爜濡備笅錛屽湪VC++6.0榪愯閫氳繃銆傜粰鍒嗗惂^-^
//蹇熸帓搴?br>
#include<iostream>
usingnamespacestd;
intPartition (int*L,intlow,int high)
{
inttemp = L[low];
intpt = L[low];
while (low < high)
{
while (low < high && L[high] >= pt)
--high;
L[low] = L[high];
while (low < high && L[low] <= pt)
++low;
L[low] = temp;
}
L[low] = temp;
returnlow;
}
voidQSort (int*L,intlow,int high)
{
if (low < high)
{
intpl = Partition (L,low,high);
QSort (L,low,pl - 1);
QSort (L,pl + 1,high);
}
}
intmain ()
{
intnarry[100],addr[100];
intsum = 1,t;
cout << "Input number:" << endl;
cin >> t;
while (t != -1)
{
narry[sum] = t;
addr[sum - 1] = t;
sum++;
cin >> t;
}
sum -= 1;
QSort (narry,1,sum);
for (int i = 1; i <= sum;i++)
cout << narry[i] << '\t';
cout << endl;
intk;
cout << "Please input place you want:" << endl;
cin >> k;
intaa = 1;
intkk = 0;
for (;;)
{
if (aa == k)
break;
if (narry[kk] != narry[kk + 1])
{
aa += 1;
kk++;
}
}
cout << "The NO." << k << "number is:" << narry[sum - kk] << endl;
cout << "And it's place is:" ;
for (i = 0;i < sum;i++)
{
if (addr[i] == narry[sum - kk])
cout << i << '\t';
}
return0;
}
1銆佹壘閿?br>Void test1()
{
char string[10];
char* str1="0123456789";
strcpy(string, str1);// 婧㈠嚭錛屽簲璇ュ寘鎷竴涓瓨鏀?\0'鐨勫瓧絎tring[11]
}
Void test2()
{
char string[10], str1[10];
for(I=0; I<10;I++)
{
str1[i] ='a';
}
strcpy(string, str1);// I錛宨娌℃湁澹版槑銆?br>}
Void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)// 鏀規垚<10,瀛楃婧㈠嚭錛屽皢strlen鏀逛負sizeof涔熷彲浠?br>{
strcpy(string, str1);
}
}
2.
void g(int**);
int main()
{
int line[10],i;
int *p=line; //p鏄湴鍧鐨勫湴鍧
for (i=0;i<10;i++)
{
*p=i;
g(&p);//鏁扮粍瀵瑰簲鐨勫煎姞1
}
for(i=0;i<10;i++)
printf("%d\n",line[i]);
return 0;
}
void g(int**p)
{
(**p)++;
(*p)++;// 鏃犳晥
}
杈撳嚭錛?br>1
2
3
4
5
6
7
8
9
10
3. 鍐欏嚭紼嬪簭榪愯緇撴灉
int sum(int a)
{
auto int c=0;
static int b=3;
c+=1;
b+=2;
return(a+b+c);
}
void main()
{
int I;
int a=2;
for(I=0;I<5;I++)
{
printf("%d,", sum(a));
}
}
// static浼氫繚瀛樹笂嬈$粨鏋滐紝璁頒綇榪欎竴鐐癸紝鍓╀笅鐨勮嚜宸卞啓
杈撳嚭錛?,10,12,14,16,
4.
int func(int a)
{
int b;
switch(a)
{
case 1: 30;
case 2: 20;
case 3: 16;
default: 0
}
return b;
}
鍒檉unc(1)=?
// b瀹氫箟鍚庡氨娌℃湁璧嬪箋?br>
5:
int a[3];
a[0]=0; a[1]=1; a[2]=2;
int *p, *q;
p=a;
q=&a[2];
鍒檃[q-p]=a[2]
瑙i噴錛氭寚閽堜竴嬈$Щ鍔ㄤ竴涓猧nt浣嗚鏁頒負1
浠婂ぉ鏃╀笂鐨勯潰璇曢9閬擄紝姣旇緝闅撅紝鍚戠墰浜鴻鏁欙紝鍥藉唴鐨勪竴鐗涘叕鍙革紝鍧愯惤鍦ㄥ寳浜寳鍥涚幆鏌愬ぇ鍘︼細
1銆佺嚎褰㈣〃a銆乥涓轟袱涓湁搴忓崌搴忕殑綰垮艦琛紝緙栧啓涓紼嬪簭錛屼嬌涓や釜鏈夊簭綰垮艦琛ㄥ悎騫舵垚涓涓湁搴忓崌搴忕嚎褰㈣〃h錛?br>絳旀鍦?璇峰寲澶у 涓ラ攼鏁忋婃暟鎹粨鏋勭浜岀増銆嬬浜岀珷渚嬮錛屾暟鎹粨鏋勫綋涓紝榪欎釜鍙仛錛氫袱璺綊騫舵帓搴?br>Linklist *unio(Linklist *p,Linklist *q){
linklist *R,*pa,*qa,*ra;
pa=p;
qa=q;
R=ra=p;
while(pa->next!=NULL&&qa->next!=NULL){
if(pa->data>qa->data){
ra->next=qa;
qa=qa->next;
}
else{
ra->next=pa;
pa=pa->next;
}
}
if(pa->next!=NULL)
ra->next=pa;
if(qa->next!=NULL)
ra->next==qa;
return R;
}
2銆佽繍鐢ㄥ洓鑹插畾鐞嗭紝涓篘涓眬鍩熶婦琛岄厤鑹詫紝棰滆壊涓?銆?銆?銆?鍥涚錛屽彟鏈夋暟緇刟dj[][N]錛屽adj[i][j]=1鍒欒〃紺篿鍖哄煙涓巎鍖哄煙鐩擱偦錛屾暟緇刢olor[N]錛屽color[i]=1,琛ㄧずi鍖哄煙鐨勯鑹蹭負1鍙烽鑹層?br>鍥涜壊濉厖
3銆佺敤閫掑綊綆楁硶鍒ゆ柇鏁扮粍a[N]鏄惁涓轟竴涓掑鏁扮粍銆?br>閫掑綊鐨勬柟娉曪紝璁板綍褰撳墠鏈澶х殑錛屽茍涓斿垽鏂綋鍓嶇殑鏄惁姣旇繖涓繕澶э紝澶у垯緇х畫錛屽惁鍒欒繑鍥瀎alse緇撴潫錛?br>bool fun( int a[], int n )
{
if( n= =1 )
return true;
if( n= =2 )
return a[n-1] >= a[n-2];
return fun( a,n-1) && ( a[n-1] >= a[n-2] );
}
4銆佺紪鍐欑畻娉曪紝浠?0浜夸釜嫻偣鏁板綋涓紝閫夊嚭鍏朵腑鏈澶х殑10000涓?br>鐢ㄥ閮ㄦ帓搴忥紝鍦ㄣ婃暟鎹粨鏋勩嬩功涓婃湁
銆婅綆楁柟娉曞璁恒嬪湪鎵懼埌絎琻澶х殑鏁扮殑綆楁硶涓婂姞宸?br>5銆佺紪鍐欎竴unix紼嬪簭錛岄槻姝㈠兊灝歌繘紼嬬殑鍑虹幇.
1.緇欎袱涓暟緇勫拰浠栦滑鐨勫ぇ灝忥紝榪樻湁涓鍔ㄦ佸紑杈熺殑鍐呭瓨錛屾眰浜ら泦錛屾妸浜ら泦鏀懼埌鍔ㄦ佸唴瀛榙ongtai錛屽茍涓旇繑鍥炰氦闆嗕釜鏁?br>long jiaoji(long* a[],long b[],long* alength,long blength,long* dongtai[])
2.鍗曡繛琛ㄧ殑寤虹珛錛屾妸'a'--'z'26涓瓧姣嶆彃鍏ュ埌榪炶〃涓紝騫朵笖鍊掑彊錛岃繕瑕佹墦鍗幫紒
鏂規硶1錛?br>typedef struct val
{ int date_1;
struct val *next;
}*p;
void main(void)
{ char c;
for(c=122;c>=97;c--)
{ p.date=c;
p=p->next;
}
p.next=NULL;
}
}
鏂規硶2錛?br>node *p = NULL;
node *q = NULL;
node *head = (node*)malloc(sizeof(node));
head->data = ' ';head->next=NULL;
node *first = (node*)malloc(sizeof(node));
first->data = 'a';first->next=NULL;head->next = first;
p = first;
int longth = 'z' - 'b';
int i=0;
while ( i<=longth )
{
node *temp = (node*)malloc(sizeof(node));
temp->data = 'b'+i;temp->next=NULL;q=temp;
head->next = temp; temp->next=p;p=q;
i++;
}
print(head);
3.鍙曠殑棰樼洰緇堜簬鏉ヤ簡
璞℃悳绱㈢殑杈撳叆淇℃伅鏄竴涓瓧絎︿覆錛岀粺璁?00涓囪緭鍏ヤ俊鎭腑鐨勬渶鐑棬鐨勫墠鍗佹潯錛屾垜浠瘡嬈¤緭鍏ョ殑涓涓瓧絎︿覆涓轟笉瓚呰繃255byte,鍐呭瓨浣跨敤鍙湁1G,
璇鋒弿榪版濇兂錛屽啓鍑虹畻鍙戯紙c璇█錛夛紝絀洪棿鍜屾椂闂村鏉傚害錛?br>4.鍥藉唴鐨勪竴浜涘笘鍚э紝濡俠aidu,鏈夊嚑鍗佷竾涓富棰橈紝鍋囪姣忎竴涓富棰橀兘鏈変笂浜跨殑璺熷笘瀛愶紝鎬庝箞鏍瘋璁¤繖涓郴緇熼熷害鏈濂斤紝璇鋒弿榪版濇兂錛屽啓鍑虹畻鍙戯紙c璇█錛夛紝絀洪棿鍜屾椂闂村鏉傚害錛?br>
#include string.h
main(void)
{ char *src="hello,world";
char *dest=NULL;
dest=(char *)malloc(strlen(src));
int len=strlen(str);
char *d=dest;
char *s=src[len];
while(len--!=0)
d++=s--;
printf("%s",dest);
}
鎵懼嚭閿欒錛侊紒
#include "string.h"
#include "stdio.h"
#include "malloc.h"
main(void)
{
char *src="hello,world";
char *dest=NULL;
dest=(char *)malloc(sizeof(char)*(strlen(src)+1));
int len=strlen(src);
char *d=dest;
char *s=src+len-1;
while(len--!=0)
*d++=*s--;
*d='\0';
printf("%s",dest);
}
1. 綆榪頒竴涓狶inux椹卞姩紼嬪簭鐨勪富瑕佹祦紼嬩笌鍔熻兘銆?br>
2. 璇峰垪涓句竴涓蔣浠朵腑鏃墮棿鎹㈢┖闂存垨鑰呯┖闂存崲鏃墮棿鐨勪緥瀛愩?br>void swap(int a,int b)
{
int c; c=a;a=b;b=a;
}
--->絀轟紭
void swap(int a,int b)
{
a=a+b;b=a-b;a=a-b;
}
6. 璇烽棶涓涓嬬▼搴忓皢杈撳嚭浠涔堢粨鏋滐紵
char *RetMenory(void)
{
char p[] = “hellow world”;
return p;
}
void Test(void)
{
char *str = NULL;
str = RetMemory();
printf(str);
}
RetMenory鎵ц瀹屾瘯錛宲璧勬簮琚洖鏀訛紝鎸囧悜鏈煡鍦板潃銆傝繑鍥炲湴鍧錛宻tr鐨勫唴瀹瑰簲鏄笉鍙嫻嬬殑, 鎵撳嵃鐨勫簲璇ユ槸str鐨勫湴鍧
鍐欎竴涓嚱鏁?瀹冪殑鍘熷艦鏄痠nt continumax(char *outputstr,char *intputstr)
鍔熻兘錛?br>鍦ㄥ瓧絎︿覆涓壘鍑鴻繛緇渶闀跨殑鏁板瓧涓詫紝騫舵妸榪欎釜涓茬殑闀垮害榪斿洖錛屽茍鎶婅繖涓渶闀挎暟瀛椾覆浠樼粰鍏朵腑涓涓嚱鏁板弬鏁皁utputstr鎵鎸囧唴瀛樸備緥濡傦細"abcd12345ed125ss123456789"鐨勯鍦板潃浼犵粰intputstr鍚庯紝鍑芥暟灝嗚繑鍥?br>9錛宱utputstr鎵鎸囩殑鍊間負123456789
int continumax(char *outputstr, char *inputstr)
{
char *in = inputstr, *out = outputstr, *temp, *final;
int count = 0, maxlen = 0;
while( *in != '\0' )
{
if( *in > 47 && *in < 58 )
{
for(temp = in; *in > 47 && *in < 58 ; in++ )
count++;
}
else
in++;
if( maxlen < count )
{
maxlen = count;
count = 0;
final = temp;
}
}
for(int i = 0; i < maxlen; i++)
{
*out = *final;
out++;
final++;
}
*out = '\0';
return maxlen;
}
涓嶇敤搴撳嚱鏁?鐢–璇█瀹炵幇灝嗕竴鏁村瀷鏁板瓧杞寲涓哄瓧絎︿覆
鏂規硶1錛?br>int getlen(char *s){
int n;
for(n = 0; *s != '\0'; s++)
n++;
return n;
}
void reverse(char s[])
{
int c,i,j;
for(i = 0,j = getlen(s) - 1; i < j; i++,j--){
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
void itoa(int n,char s[])
{
int i,sign;
if((sign = n) < 0)
n = -n;
i = 0;
do{/*浠ュ弽搴忕敓鎴愭暟瀛?/
s[i++] = n%10 + '0';/*get next number*/
}while((n /= 10) > 0);/*delete the number*/
if(sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
鏂規硶2:
#include <iostream>
using namespace std;
void itochar(int num);
void itochar(int num)
{
int i = 0;
int j ;
char stra[10];
char strb[10];
while ( num )
{
stra[i++]=num%10+48;
num=num/10;
}
stra[i] = '\0';
for( j=0; j < i; j++)
{
strb[j] = stra[i-j-1];
}
strb[j] = '\0';
cout<<strb<<endl;
}
int main()
{
int num;
cin>>num;
itochar(num);
return 0;
}
鍓嶅嚑澶╅潰璇曪紝鏈変竴棰樻兂涓嶆槑鐧?璇鋒暀澶у錛?br>typedef struct
{
int a:2;
int b:2;
int c:1;
}test;
test t;
t.a = 1;
t.b = 3;
t.c = 1;
printf("%d",t.a);
printf("%d",t.b);
printf("%d",t.c);
璋㈣阿!
t.a涓?1,杈撳嚭灝辨槸1
t.b涓?1錛岃緭鍑哄氨鏄紞1
t.c涓?錛岃緭鍑轟篃鏄?1
3涓兘鏄湁絎﹀彿鏁癷nt鍢涖?br>榪欐槸浣嶆墿灞曢棶棰?
01
11
1
緙栬瘧鍣ㄨ繘琛岀鍙鋒墿灞?br>
姹傜粍鍚堟暟錛?姹俷涓暟錛?....n錛変腑k涓暟鐨勭粍鍚?...
濡傦細combination(5,3)
瑕佹眰杈撳嚭錛?43錛?42錛?41錛?32錛?31錛?21錛?32錛?31錛?21錛?21錛?br>#include<stdio.h>
int pop(int *);
int push(int );
void combination(int ,int );
int stack[3]={0};
top=-1;
int main()
{
int n,m;
printf("Input two numbers:\n");
while( (2!=scanf("%d%*c%d",&n,&m)) )
{
fflush(stdin);
printf("Input error! Again:\n");
}
combination(n,m);
printf("\n");
}
void combination(int m,int n)
{
int temp=m;
push(temp);
while(1)
{
if(1==temp)
{
if(pop(&temp)&&stack[0]==n) //褰撴爤搴曞厓绱犲脊鍑?amp;&涓哄彲鑳藉彇鐨勬渶灝忓鹼紝寰幆閫鍑?br>break;
}
else if( push(--temp))
{
printf("%d%d%d ",stack[0],stack[1],stack[2]);//§ä¨ì¤@?
pop(&temp);
}
}
}
int push(int i)
{
stack[++top]=i;
if(top<2)
return 0;
else
return 1;
}
int pop(int *i)
{
*i=stack[top--];
if(top>=0)
return 0;
else
return 1;
}
1銆佺敤鎸囬拡鐨勬柟娉曪紝灝嗗瓧絎︿覆“ABCD1234efgh”鍓嶅悗瀵硅皟鏄劇ず
#include <stdio.h>
#include <string.h>
#include <dos.h>
int main()
{
char str[] = "ABCD1234efgh";
int length = strlen(str);
char * p1 = str;
char * p2 = str + length - 1;
while(p1 < p2)
{
char c = *p1;
*p1 = *p2;
*p2 = c;
++p1;
--p2;
}
printf("str now is %s\n",str);
system("pause");
return 0;
}
2銆佹湁涓鍒嗘暟搴忓垪錛?/2,1/4,1/6,1/8……錛岀敤鍑芥暟璋冪敤鐨勬柟娉曪紝姹傛鏁板垪鍓?0欏圭殑鍜?br>#include <stdio.h>
double getValue()
{
double result = 0;
int i = 2;
while(i < 42)
{
result += 1.0 / i;//涓瀹氳浣跨敤1.0鍋氶櫎鏁幫紝涓嶈兘鐢?錛屽惁鍒欑粨鏋滃皢鑷姩杞寲鎴愭暣鏁幫紝鍗?.000000
i += 2;
}
return result;
}
int main()
{
printf("result is %f\n", getValue());
system("pause");
return 0;
}
using namespace std;
#define null 1000
int main()
{
int arr[1000];
for (int i=0;i<1000;++i)
arr[i]=i;
int j=0;
int count=0;
while(count<999)
{
while(arr[j%1000]==null)
j=(++j)%1000;
j=(++j)%1000;
while(arr[j%1000]==null)
j=(++j)%1000;
j=(++j)%1000;
while(arr[j%1000]==null)
j=(++j)%1000;
arr[j]=null;
++count;
}
while(arr[j]==null)
j=(++j)%1000;
cout<<j<<endl;
return 0;
}鏂規硶2錛氶摼琛?br>#include<iostream>
using namespace std;
#define null 0
struct node
{
int data;
node* next;
};
int main()
{
node* head=new node;
head->data=0;
head->next=null;
node* p=head;
for(int i=1;i<1000;i++)
{
node* tmp=new node;
tmp->data=i;
tmp->next=null;
head->next=tmp;
head=head->next;
}
head->next=p;
while(p!=p->next)
{
p->next->next=p->next->next->next;
p=p->next->next;
}
cout<<p->data;
return 0;
}
鏂規硶3錛氶氱敤綆楁硶
#include <stdio.h>
#define MAXLINE 1000 //鍏冪礌涓暟
/*
MAXLINE 鍏冪礌涓暟
a[] 鍏冪礌鏁扮粍
R[] 鎸囬拡鍦?br>suffix 涓嬫爣
index 榪斿洖鏈鍚庣殑涓嬫爣搴忓彿
values 榪斿洖鏈鍚庣殑涓嬫爣瀵瑰簲鐨勫?br>start 浠庣鍑犱釜寮濮?br>K 闂撮殧
*/
int find_n(int a[],int R[],int K,int& index,int& values,int s=0) {
int suffix;
int front_node,current_node;
suffix=0;
if(s==0) {
current_node=0;
front_node=MAXLINE-1;
}
else {
current_node=s;
front_node=s-1;
}
while(R[front_node]!=front_node) {
printf("%d\n",a[current_node]);
R[front_node]=R[current_node];
if(K==1) {
current_node=R[front_node];
continue;
}
for(int i=0;i<K;i++){
front_node=R[front_node];
}
current_node=R[front_node];
}
index=front_node;
values=a[front_node];
return 0;
}
int main(void) {
int a[MAXLINE],R[MAXLINE],suffix,index,values,start,i,K;
suffix=index=values=start=0;
K=2;
for(i=0;i<MAXLINE;i++) {
a[i]=i;
R[i]=i+1;
}
R[i-1]=0;
find_n(a,R,K,index,values,2);
printf("the value is %d,%d\n",index,values);
return 0;
}
璇曢錛?
void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<10; i++)
{
str1[i] = 'a';
}
strcpy( string, str1 );
}
瑙?
絳旓細瀵硅瘯棰?錛屽鏋滈潰璇曡呮寚鍑哄瓧絎︽暟緇剆tr1涓嶈兘鍦ㄦ暟緇勫唴緇撴潫鍙互緇?鍒嗭紱濡傛灉闈㈣瘯鑰呮寚鍑簊trcpy(string,
str1)璋冪敤浣垮緱浠巗tr1鍐呭瓨璧峰鍒跺埌string鍐呭瓨璧鋒墍澶嶅埗鐨勫瓧鑺傛暟鍏鋒湁涓嶇‘瀹氭у彲浠ョ粰7鍒嗭紝鍦ㄦ鍩虹涓婃寚鍑哄簱鍑芥暟strcpy宸ヤ綔鏂瑰紡鐨勭粰10
鍒嗭紱
str1涓嶈兘鍦ㄦ暟緇勫唴緇撴潫:鍥犱負str1鐨勫瓨鍌ㄤ負錛歿a,a,a,a,a,a,a,a,a,a},娌℃湁'\0'(瀛楃涓茬粨鏉熺)錛屾墍浠ヤ笉鑳界粨鏉?br>strcpy( char *s1,char *s2)浠栫殑宸ヤ綔鍘熺悊鏄紝鎵弿s2鎸囧悜鐨勫唴瀛橈紝閫愪釜瀛楃浠樺埌s1鎵鎸囧悜鐨勫唴瀛橈紝鐩村埌紕板埌'\0',鍥犱負str1緇撳熬娌℃湁'\0'錛屾墍浠ュ叿鏈変笉紜畾鎬э紝涓嶇煡閬撲粬鍚庨潰榪樹細浠樹粈涔堜笢涓溿?br>姝g‘搴斿涓?br>void test2()
{
char string[10], str1[10];
int i;
for(i=0; i<9; i++)
{
str1[i] = 'a'+i; //鎶奱bcdefghi璧嬪肩粰瀛楃鏁扮粍
}
str[i]='\0';//鍔犱笂緇撴潫絎?br>strcpy( string, str1 );
}
絎簩涓猚ode棰樻槸瀹炵幇strcmp
int StrCmp(const char *str1, const char *str2)
鍋氭槸鍋氬浜嗭紝娌℃湁鎶勬悶錛屾瘮杈冧貢
int StrCmp(const char *str1, const char *str2)
{
assert(str1 && srt2);
while (*str1 && *str2 && *str1 == *str2) {
str1++, str2++;
}
if (*str1 && *str2)
return (*str1-*str2);
elseif (*str1 && *str2==0)
return 1;
elseif (*str1 = = 0 && *str2)
return -1;
else
return 0;
}
int StrCmp(const char *str1, const char *str2)
{
//鐪佺暐鍒ゆ柇絀烘寚閽?鑷繁淇濊瘉)
while(*str1 && *str1++ = = *str2++);
return *str1-*str2;
}
絎笁涓猚ode棰樻槸瀹炵幇瀛愪覆瀹氫綅
int FindSubStr(const char *MainStr, const char *SubStr)
鍋氭槸鍋氬浜嗭紝娌℃湁鎶勬悶錛屾瘮杈冧貢
int MyStrstr(const char* MainStr, const char* SubStr)
{
const char *p;
const char *q;
const char * u = MainStr;
//assert((MainStr!=NULL)&&( SubStr!=NULL));//鐢ㄦ柇璦瀵硅緭鍏ヨ繘琛屽垽鏂?br>while(*MainStr) //鍐呴儴榪涜閫掑
{
p = MainStr;
q = SubStr;
while(*q && *p && *p++ == *q++);
if(!*q )
{
return MainStr - u +1 ;//MainStr鎸囧悜褰撳墠璧峰浣嶏紝u鎸囧悜
}
MainStr ++;
}
return -1;
}
鍒嗘瀽錛?br>int arr[] = {6,7,8,9,10};
int *ptr = arr;
*(ptr++)+=123;
printf(“ %d %d ”, *ptr, *(++ptr));
杈撳嚭錛? 8
榪囩▼錛氬浜?(ptr++)+=123;鍏堝仛鍔犳硶6+123錛岀劧鍚?+錛屾寚閽堟寚鍚?錛涘浜巔rintf(“ %d %d ”, *ptr, *(++ptr));浠庡悗寰鍓嶆墽琛岋紝鎸囬拡鍏?+錛屾寚鍚?錛岀劧鍚庤緭鍑?錛岀揣鎺ョ潃鍐嶈緭鍑?
鍗庝負鍏ㄥ瀹屾暣璇曢
楂樼駭棰?br>6銆佸凡鐭ヤ竴涓崟鍚戦摼琛ㄧ殑澶達紝璇峰啓鍑哄垹闄ゅ叾鏌愪竴涓粨鐐圭殑綆楁硶錛岃姹傦紝鍏堟壘鍒版緇撶偣錛岀劧鍚庡垹闄ゃ?br>slnodetype *Delete(slnodetype *Head,int key){}涓璱f(Head->number==key)
{
Head=Pointer->next;
free(Pointer);
break;
}
Back = Pointer;
Pointer=Pointer->next;
if(Pointer->number==key)
{
Back->next=Pointer->next;
free(Pointer);
break;
}
void delete(Node* p)
{
if(Head = Node)
while(p)
}
鏈変竴涓?6浣嶇殑鏁存暟錛屾瘡4浣嶄負涓涓暟錛屽啓鍑芥暟姹備粬浠殑鍜屻?br>瑙i噴錛?br>鏁存暟1101010110110111
鍜?1101+0101+1011+0111
鎰熻搴旇涓嶉毦錛屽綋鏃跺棰樼悊瑙g殑涓嶆槸寰堟竻妤氾紝鎵浠ュ啓浜嗕竴涓嚱鏁幫紝涔熶笉鐭ラ亾瀵逛笉瀵廣?br>鐤戦棶錛?br>鏃㈢劧鏄?6浣嶇殑鏁存暟錛?101010110110111鏄?榪涘埗鐨勶紝閭d箞鍑芥暟鍙傛暟鎬庝箞瀹氫箟鍛紝璇峰ぇ铏炬寚鏁欍?br>絳旀錛氱敤鍗佽繘鍒跺仛鍙傛暟錛岃綆楁椂鎸変簩榪涘埗鑰冭檻銆?br>/* n灝辨槸16浣嶇殑鏁幫紝鍑芥暟榪斿洖瀹冪殑鍥涗釜閮ㄥ垎涔嬪拰 */
char SumOfQuaters(unsigned short n)
{
char c = 0;
int i = 4;
do
{
c += n & 15;
n = n >> 4;
} while (--i);
return c;
}
鏈?,2,....涓鐩村埌n鐨勬棤搴忔暟緇?姹傛帓搴忕畻娉?騫朵笖瑕佹眰鏃墮棿澶嶆潅搴︿負O(n),絀洪棿澶嶆潅搴(1),浣跨敤浜ゆ崲,鑰屼笖涓嬈″彧鑳戒氦鎹袱涓暟.錛堝崕涓猴級
#include<iostream.h>
int main()
{
int a[] = {10,6,9,5,2,8,4,7,1,3};
int len = sizeof(a) / sizeof(int);
int temp;
for(int i = 0; i < len; )
{
temp = a[a[i] - 1];
a[a[i] - 1] = a[i];
a[i] = temp;
if ( a[i] == i + 1)
i++;
}
for (int j = 0; j < len; j++)
cout<<a[j]<<",";
return 0;
}
錛堟収閫氾級
1 鍐欏嚭紼嬪簭鎶婁竴涓摼琛ㄤ腑鐨勬帴鐐歸『搴忓掓帓
typedef struct linknode
{
int data;
struct linknode *next;
}node;
//灝嗕竴涓摼琛ㄩ嗙疆
node *reverse(node *head)
{
node *p,*q,*r;
p=head;
q=p->next;
while(q!=NULL)
{
r=q->next;
q->next=p;
p=q;
q=r;
}
head->next=NULL;
head=p;
return head;
}
2 鍐欏嚭紼嬪簭鍒犻櫎閾捐〃涓殑鎵鏈夋帴鐐?br>void del_all(node *head)
{
node *p;
while(head!=NULL)
{
p=head->next;
free(head);
head=p;
}
cout<<"閲婃斁絀洪棿鎴愬姛!"<<endl;
}
3涓や釜瀛楃涓詫紝s,t;鎶妕瀛楃涓叉彃鍏ュ埌s瀛楃涓蹭腑錛宻瀛楃涓叉湁瓚沖鐨勭┖闂村瓨鏀総瀛楃涓?br>void insert(char *s, char *t, int i)
{
char *q = t;
char *p =s;
if(q == NULL)return;
while(*p!='\0')
{
p++;
}
while(*q!=0)
{
*p=*q;
p++;
q++;
}
*p = '\0';
}
鍒嗘瀽涓嬮潰鐨勪唬鐮侊細
char *a = "hello";
char *b = "hello";
if(a= =b)
printf("YES");
else
printf("NO");
榪欎釜綆鍗曠殑闈㈣瘯棰樼洰,鎴戦夎緭鍑?no(瀵規瘮鐨勫簲璇ユ槸鎸囬拡鍦板潃鍚?,鍙湪VC鏄痀ES 鍦–鏄疦O
lz鐨勫憿錛屾槸涓涓父閲忓瓧絎︿覆銆備綅浜庨潤鎬佸瓨鍌ㄥ尯錛屽畠鍦ㄧ▼搴忕敓鍛芥湡鍐呮亽瀹氫笉鍙樸傚鏋滅紪璇戝櫒浼樺寲鐨勮瘽錛屼細鏈夊彲鑳絘鍜宐鍚屾椂鎸囧悜鍚屼竴涓猦ello鐨勩傚垯鍦板潃鐩稿悓銆傚鏋滅紪璇戝櫒娌℃湁浼樺寲錛岄偅涔堝氨鏄袱涓笉鍚岀殑鍦板潃錛屽垯涓嶅悓
2.璁劇疆鍙橀噺鐨勫瓨鍌ㄥ煙
7. 寮曠敤涓庢寚閽堟湁浠涔堝尯鍒紵
1) 寮曠敤蹇呴』琚垵濮嬪寲錛屾寚閽堜笉蹇呫?br>2) 寮曠敤鍒濆鍖栦互鍚庝笉鑳借鏀瑰彉錛屾寚閽堝彲浠ユ敼鍙樻墍鎸囩殑瀵硅薄銆?br>2) 涓嶅瓨鍦ㄦ寚鍚戠┖鍊肩殑寮曠敤錛屼絾鏄瓨鍦ㄦ寚鍚戠┖鍊肩殑鎸囬拡銆?br>
8. 鎻忚堪瀹炴椂緋葷粺鐨勫熀鏈壒鎬?br>鍦ㄧ壒瀹氭椂闂村唴瀹屾垚鐗瑰畾鐨勪換鍔★紝瀹炴椂鎬т笌鍙潬鎬?br>9. 鍏ㄥ眬鍙橀噺鍜屽眬閮ㄥ彉閲忓湪鍐呭瓨涓槸鍚︽湁鍖哄埆錛熷鏋滄湁錛屾槸浠涔堝尯鍒紵
鍏ㄥ眬鍙橀噺鍌ㄥ瓨鍦ㄩ潤鎬佹暟鎹簱錛屽眬閮ㄥ彉閲忓湪鍫嗘爤
10. 浠涔堟槸騫寵 浜屽弶鏍戯紵
宸﹀彸瀛愭爲閮芥槸騫寵 浜屽弶鏍?涓斿乏鍙沖瓙鏍戠殑娣卞害宸肩殑緇濆鍊間笉澶т簬1
11. 鍫嗘爤婧㈠嚭涓鑸槸鐢變粈涔堝師鍥犲鑷寸殑錛?br>娌℃湁鍥炴敹鍨冨溇璧勬簮
12. 浠涔堝嚱鏁頒笉鑳藉0鏄庝負铏氬嚱鏁幫紵
constructor
13. 鍐掓場鎺掑簭綆楁硶鐨勬椂闂村鏉傚害鏄粈涔堬紵
O(n^2)
14. 鍐欏嚭float x 涓?#8220;闆跺?#8221;姣旇緝鐨刬f璇彞銆?br>if(x>0.000001&&x<-0.000001)
16. Internet閲囩敤鍝緗戠粶鍗忚錛熻鍗忚鐨勪富瑕佸眰嬈$粨鏋勶紵
tcp/ip 搴旂敤灞?浼犺緭灞?緗戠粶灞?鏁版嵁閾捐礬灞?鐗╃悊灞?br>17. Internet鐗╃悊鍦板潃鍜孖P鍦板潃杞崲閲囩敤浠涔堝崗璁紵
ARP (Address Resolution Protocol)錛堝湴鍧瑙f瀽鍗旇錛?br>18.IP鍦板潃鐨勭紪鐮佸垎涓哄摢淇╅儴鍒嗭紵
IP鍦板潃鐢變袱閮ㄥ垎緇勬垚錛岀綉緇滃彿鍜屼富鏈哄彿銆備笉榪囨槸瑕佸拰“瀛愮綉鎺╃爜”鎸変綅涓庝笂涔嬪悗鎵嶈兘鍖哄垎鍝簺鏄綉緇滀綅鍝簺鏄富鏈轟綅銆?br>
2.鐢ㄦ埛杈撳叆M,N鍊鹼紝浠?鑷砃寮濮嬮『搴忓驚鐜暟鏁幫紝姣忔暟鍒癕杈撳嚭璇ユ暟鍊鹼紝鐩磋嚦鍏ㄩ儴杈撳嚭銆傚啓鍑篊紼嬪簭銆?br>寰幆閾捐〃錛岀敤鍙栦綑鎿嶄綔鍋?br>3.涓嶈兘鍋歴witch()鐨勫弬鏁扮被鍨嬫槸錛?br>switch鐨勫弬鏁頒笉鑳戒負瀹炲瀷銆?br>
鑿偤
1銆佸眬閮ㄥ彉閲忚兘鍚﹀拰鍏ㄥ眬鍙橀噺閲嶅悕錛?br>絳旓細鑳斤紝灞閮ㄤ細灞忚斀鍏ㄥ眬銆傝鐢ㄥ叏灞鍙橀噺錛岄渶瑕佷嬌鐢?::"
灞閮ㄥ彉閲忓彲浠ヤ笌鍏ㄥ眬鍙橀噺鍚屽悕錛屽湪鍑芥暟鍐呭紩鐢ㄨ繖涓彉閲忔椂錛屼細鐢ㄥ埌鍚屽悕鐨勫眬閮ㄥ彉閲忥紝鑰屼笉浼氱敤鍒板叏灞鍙橀噺銆傚浜庢湁浜涚紪璇戝櫒鑰岃█錛屽湪鍚屼竴涓嚱鏁板唴鍙互瀹氫箟澶氫釜鍚屽悕鐨勫眬閮ㄥ彉閲忥紝姣斿鍦ㄤ袱涓驚鐜綋鍐呴兘瀹氫箟涓涓悓鍚嶇殑灞閮ㄥ彉閲忥紝鑰岄偅涓眬閮ㄥ彉閲忕殑浣滅敤鍩熷氨鍦ㄩ偅涓驚鐜綋鍐?br>2銆佸浣曞紩鐢ㄤ竴涓凡緇忓畾涔夎繃鐨勫叏灞鍙橀噺錛?br>絳旓細extern
鍙互鐢ㄥ紩鐢ㄥご鏂囦歡鐨勬柟寮忥紝涔熷彲浠ョ敤extern鍏抽敭瀛楋紝濡傛灉鐢ㄥ紩鐢ㄥご鏂囦歡鏂瑰紡鏉ュ紩鐢ㄦ煇涓湪澶存枃浠朵腑澹版槑鐨勫叏灞鍙樼悊錛屽亣瀹氫綘灝嗛偅涓彉鍐欓敊浜嗭紝閭d箞鍦ㄧ紪璇戞湡闂翠細鎶ラ敊錛屽鏋滀綘鐢╡xtern鏂瑰紡寮曠敤鏃訛紝鍋囧畾浣犵姱浜嗗悓鏍風殑閿欒錛岄偅涔堝湪緙栬瘧鏈熼棿涓嶄細鎶ラ敊錛岃屽湪榪炴帴鏈熼棿鎶ラ敊
3銆佸叏灞鍙橀噺鍙笉鍙互瀹氫箟鍦ㄥ彲琚涓?C鏂囦歡鍖呭惈鐨勫ご鏂囦歡涓紵涓轟粈涔堬紵
絳旓細鍙互錛屽湪涓嶅悓鐨凜鏂囦歡涓互static褰㈠紡鏉ュ0鏄庡悓鍚嶅叏灞鍙橀噺銆?br>鍙互鍦ㄤ笉鍚岀殑C鏂囦歡涓0鏄庡悓鍚嶇殑鍏ㄥ眬鍙橀噺錛屽墠鎻愭槸鍏朵腑鍙兘鏈変竴涓狢鏂囦歡涓姝ゅ彉閲忚祴鍒濆鹼紝姝ゆ椂榪炴帴涓嶄細鍑洪敊
4銆佽鍙or( 錛? 錛?鏈変粈涔堥棶棰橈紵瀹冩槸浠涔堟剰鎬濓紵
絳旓細鍜寃hile(1)鐩稿悓銆?br>5銆乨o……while鍜寃hile……do鏈変粈涔堝尯鍒紵
絳旓細鍓嶄竴涓驚鐜竴閬嶅啀鍒ゆ柇錛屽悗涓涓垽鏂互鍚庡啀寰幆
6銆佽鍐欏嚭涓嬪垪浠g爜鐨勮緭鍑哄唴瀹?br>#include<stdio.h>
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b錛宑錛宒錛?d錛?d錛?d"錛宐錛宑錛宒錛?
return 0;
}
絳旓細10錛?2錛?20
1銆乻tatic鍏ㄥ眬鍙橀噺涓庢櫘閫氱殑鍏ㄥ眬鍙橀噺鏈変粈涔堝尯鍒紵static灞閮ㄥ彉閲忓拰鏅氬眬閮ㄥ彉閲忔湁浠涔堝尯鍒紵static鍑芥暟涓庢櫘閫氬嚱鏁版湁浠涔堝尯鍒紵
鍏?
灞鍙橀噺(澶栭儴鍙橀噺)鐨勮鏄庝箣鍓嶅啀鍐犱互static 灝辨瀯鎴愪簡闈欐佺殑鍏ㄥ眬鍙橀噺銆傚叏灞鍙橀噺鏈韓灝辨槸闈欐佸瓨鍌ㄦ柟寮忥紝 闈欐佸叏灞鍙橀噺褰撶劧涔熸槸闈欐佸瓨鍌ㄦ柟寮忋?
榪欎袱鑰呭湪瀛樺偍鏂瑰紡涓婂茍鏃犱笉鍚屻傝繖涓よ呯殑鍖哄埆铏藉湪浜庨潪闈欐佸叏灞鍙橀噺鐨勪綔鐢ㄥ煙鏄暣涓簮紼嬪簭錛?
褰撲竴涓簮紼嬪簭鐢卞涓簮鏂囦歡緇勬垚鏃訛紝闈為潤鎬佺殑鍏ㄥ眬鍙橀噺鍦ㄥ悇涓簮鏂囦歡涓兘鏄湁鏁堢殑銆?鑰岄潤鎬佸叏灞鍙橀噺鍒欓檺鍒朵簡鍏朵綔鐢ㄥ煙錛?鍗沖彧鍦ㄥ畾涔夎鍙橀噺鐨勬簮鏂囦歡鍐呮湁鏁堬紝
鍦ㄥ悓涓婧愮▼搴忕殑鍏跺畠婧愭枃浠朵腑涓嶈兘浣跨敤瀹冦傜敱浜庨潤鎬佸叏灞鍙橀噺鐨勪綔鐢ㄥ煙灞闄愪簬涓涓簮鏂囦歡鍐咃紝鍙兘涓鴻婧愭枃浠跺唴鐨勫嚱鏁板叕鐢紝
鍥犳鍙互閬垮厤鍦ㄥ叾瀹冩簮鏂囦歡涓紩璧烽敊璇?br>浠庝互涓婂垎鏋愬彲浠ョ湅鍑猴紝 鎶婂眬閮ㄥ彉閲忔敼鍙樹負闈欐佸彉閲忓悗鏄敼鍙樹簡瀹冪殑瀛樺偍鏂瑰紡鍗蟲敼鍙樹簡瀹冪殑鐢熷瓨鏈熴傛妸鍏ㄥ眬鍙橀噺鏀瑰彉涓洪潤鎬佸彉閲忓悗鏄敼鍙樹簡瀹冪殑浣滅敤鍩燂紝 闄愬埗浜嗗畠鐨勪嬌鐢ㄨ寖鍥淬?br>static鍑芥暟涓庢櫘閫氬嚱鏁頒綔鐢ㄥ煙涓嶅悓銆備粎鍦ㄦ湰鏂囦歡銆傚彧鍦ㄥ綋鍓嶆簮鏂囦歡涓嬌鐢ㄧ殑鍑芥暟搴旇璇存槑涓哄唴閮ㄥ嚱鏁?static)錛屽唴閮ㄥ嚱鏁板簲璇ュ湪褰撳墠婧愭枃浠朵腑璇存槑鍜屽畾涔夈傚浜庡彲鍦ㄥ綋鍓嶆簮鏂囦歡浠ュ浣跨敤鐨勫嚱鏁幫紝搴旇鍦ㄤ竴涓ご鏂囦歡涓鏄庯紝瑕佷嬌鐢ㄨ繖浜涘嚱鏁扮殑婧愭枃浠惰鍖呭惈榪欎釜澶存枃浠?br>
static鍏ㄥ眬鍙橀噺涓庢櫘閫氱殑鍏ㄥ眬鍙橀噺鏈変粈涔堝尯鍒細static鍏ㄥ眬鍙橀噺鍙垵浣垮寲涓嬈★紝闃叉鍦ㄥ叾浠栨枃浠跺崟鍏冧腑琚紩鐢?
static灞閮ㄥ彉閲忓拰鏅氬眬閮ㄥ彉閲忔湁浠涔堝尯鍒細static灞閮ㄥ彉閲忓彧琚垵濮嬪寲涓嬈★紝涓嬩竴嬈′緷鎹笂涓嬈$粨鏋滃鹼紱
static鍑芥暟涓庢櫘閫氬嚱鏁版湁浠涔堝尯鍒細static鍑芥暟鍦ㄥ唴瀛樹腑鍙湁涓浠斤紝鏅氬嚱鏁板湪姣忎釜琚皟鐢ㄤ腑緇存寔涓浠芥嫹璐?br>2銆佺▼搴忕殑灞閮ㄥ彉閲忓瓨鍦ㄤ簬錛堝爢鏍堬級涓紝鍏ㄥ眬鍙橀噺瀛樺湪浜庯紙闈欐佸尯 錛変腑錛屽姩鎬佺敵璇鋒暟鎹瓨鍦ㄤ簬錛?鍫嗭級涓?br>3銆佽鏈変互涓嬭鏄庡拰瀹氫箟錛?br>typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
鍒欒鍙?printf("%d",sizeof(struct date)+sizeof(max));鐨勬墽琛岀粨鏋滄槸錛歘__52____
絳旓細DATE鏄竴涓猽nion, 鍙橀噺鍏敤絀洪棿. 閲岄潰鏈澶х殑鍙橀噺綾誨瀷鏄痠nt[5], 鍗犵敤20涓瓧鑺? 鎵浠ュ畠鐨勫ぇ灝忔槸20
data鏄竴涓猻truct, 姣忎釜鍙橀噺鍒嗗紑鍗犵敤絀洪棿. 渚濇涓篿nt4 + DATE20 + double8 = 32.
鎵浠ョ粨鏋滄槸 20 + 32 = 52.
褰撶劧...鍦ㄦ煇浜?6浣嶇紪杈戝櫒涓? int鍙兘鏄?瀛楄妭,閭d箞緇撴灉鏄?int2 + DATE10 + double8 = 20
4銆侀槦鍒楀拰鏍堟湁浠涔堝尯鍒紵
闃熷垪鍏堣繘鍏堝嚭錛屾爤鍚庤繘鍏堝嚭
#include<stdio.h>
int inc(int a)
{
return(++a);
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%d\n",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
絳旓細110
7銆佽鎵懼嚭涓嬮潰浠g爜涓殑鎵浠ラ敊璇?br>璇存槑錛氫互涓嬩唬鐮佹槸鎶婁竴涓瓧絎︿覆鍊掑簭錛屽“abcd”鍊掑簭鍚庡彉涓?#8220;dcba”
1銆?include"string.h"
2銆乵ain()
3銆亄
4銆?char*src="hello,world";
5銆?char* dest=NULL;
6銆?int len=strlen(src);
7銆?dest=(char*)malloc(len);
8銆?char* d=dest;
9銆?char* s=src[len];
10銆?while(len--!=0)
11銆?d++=s--;
12銆?printf("%s",dest);
13銆?return 0;
14銆亇
絳旓細
鏂規硶1錛?br>int main(){
char* src = "hello,world";
int len = strlen(src);
char* dest = (char*)malloc(len+1);//瑕佷負\0鍒嗛厤涓涓┖闂?br>char* d = dest;
char* s = &src[len-1];//鎸囧悜鏈鍚庝竴涓瓧絎?br>while( len-- != 0 )
*d++=*s--;
*d = 0;//灝鵑儴瑕佸姞\0
printf("%s\n",dest);
free(dest);// 浣跨敤瀹岋紝搴斿綋閲婃斁絀洪棿錛屼互鍏嶉犳垚鍐呭瓨姹囨硠闇?br>return 0;
}
鏂規硶2錛?br>#include <stdio.h>
#include <string.h>
main()
{
char str[]="hello,world";
int len=strlen(str);
char t;
for(int i=0; i<len/2; i++)
{
t=str[i];
str[i]=str[len-i-1]; str[len-i-1]=t;
}
printf("%s",str);
return 0;
}
1.-1,2,7,28,,126璇烽棶28鍜?26涓棿閭d釜鏁版槸浠涔堬紵涓轟粈涔堬紵
絎竴棰樼殑絳旀搴旇鏄?^3-1=63
瑙勫緥鏄痭^3-1(褰搉涓哄伓鏁?錛?錛?)
n^3+1(褰搉涓哄鏁?錛?錛?)
絳旀錛?3
2.鐢ㄤ袱涓爤瀹炵幇涓涓槦鍒楃殑鍔熻兘錛熻姹傜粰鍑虹畻娉曞拰鎬濊礬錛?br>璁?涓爤涓篈,B, 涓寮濮嬪潎涓虹┖.
鍏ラ槦:
灝嗘柊鍏冪礌push鍏ユ爤A;
鍑洪槦:
(1)鍒ゆ柇鏍圔鏄惁涓虹┖錛?br>(2)濡傛灉涓嶄負絀猴紝鍒欏皢鏍圓涓墍鏈夊厓绱犱緷嬈op鍑哄茍push鍒版爤B錛?br>(3)灝嗘爤B鐨勬爤欏跺厓绱爌op鍑猴紱
榪欐牱瀹炵幇鐨勯槦鍒楀叆闃熷拰鍑洪槦鐨勫鉤鎽婂鏉傚害閮借繕鏄疧(1), 姣斾笂闈㈢殑鍑犵鏂規硶瑕佸ソ銆?.鍦╟璇█搴撳嚱鏁頒腑灝嗕竴涓瓧絎﹁漿鎹㈡垚鏁村瀷鐨勫嚱鏁版槸atool()鍚楋紝榪欎釜鍑芥暟鐨勫師鍨嬫槸浠涔堬紵
鍑芥暟鍚? atol
鍔?鑳? 鎶婂瓧絎︿覆杞崲鎴愰暱鏁村瀷鏁?
鐢?娉? long atol(const char *nptr);
紼嬪簭渚?
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
long l;
char *str = "98765432";
l = atol(lstr);
printf("string = %s integer = %ld\n", str, l);
return(0);
}
c鐢ㄥ畯瀹氫箟錛宑++鐢╥nline
3.鐩存帴閾炬帴涓や釜淇′護鐐圭殑涓緇勯摼璺О浣滀粈涔?
PPP鐐瑰埌鐐硅繛鎺?br>4.鎺ュ叆緗戠敤鐨勬槸浠涔堟帴鍙?
5.voip閮界敤浜嗛偅浜涘崗璁?
6.杞歡嫻嬭瘯閮芥湁閭d簺縐嶇被?
榛戠洅錛氶拡瀵圭郴緇熷姛鑳界殑嫻嬭瘯 鐧藉悎錛氭祴璇曞嚱鏁板姛鑳斤紝鍚勫嚱鏁版帴鍙?br>7.紜畾妯″潡鐨勫姛鑳藉拰妯″潡鐨勬帴鍙f槸鍦ㄨ蔣浠惰璁$殑閭d釜闃熸瀹屾垚鐨?
姒傝璁捐闃舵
8.enum string
{
x1,
x2,
x3=10,
x4,
x5,
}x;
闂畑= 0x801005錛?x8010f4 ;
9.unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
璇烽棶p1+5= ;
p2+5= ;
涓?閫夋嫨棰?
1.Ethternet閾炬帴鍒癐nternet鐢ㄥ埌浠ヤ笅閭d釜鍗忚?
A.HDLC;B.ARP;C.UDP;D.TCP;E.ID
2.灞炰簬緗戠粶灞傚崗璁殑鏄?
A.TCP;B.IP;C.ICMP;D.X.25
3.Windows娑堟伅璋冨害鏈哄埗鏄?
A.鎸囦護闃熷垪;B.鎸囦護鍫嗘爤;C.娑堟伅闃熷垪;D.娑堟伅鍫嗘爤;
4.unsigned short hash(unsigned short key)
{
return (key>>)%256
}
璇烽棶hash(16),hash(256)鐨勫煎垎鍒槸:
A.1.16;B.8.32;C.4.16;D.1.32
鍥?鎵鵑敊棰?
1.璇烽棶涓嬮潰紼嬪簭鏈変粈涔堥敊璇?
int a[60][250][1000],i,j,k;
for(k=0;k<=1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;
鎶婂驚鐜鍙ュ唴澶栨崲涓涓?br>2.#define Max_CB 500
void LmiQueryCSmd(Struct MSgCB * pmsg)
{
unsigned char ucCmdNum;
......
for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++)
{
......;
}
姝誨驚鐜?br>3.浠ヤ笅鏄眰涓涓暟鐨勫鉤鏂圭殑紼嬪簭,璇鋒壘鍑洪敊璇?
#define SQUARE(a)((a)*(a))
int a=5;
int b;
b=SQUARE(a++);
4.typedef unsigned char BYTE
int examply_fun(BYTE gt_len; BYTE *gt_code)
{
BYTE *gt_buf;
gt_buf=(BYTE *)MALLOC(Max_GT_Length);
......
if(gt_len>Max_GT_Length)
{
return GT_Length_ERROR;
}
.......
}
浜?闂瓟棰?
1.IP Phone鐨勫師鐞嗘槸浠涔?
IPV6
2.TCP/IP閫氫俊寤虹珛鐨勮繃紼嬫庢牱錛岀鍙f湁浠涔堜綔鐢紵
涓夋鎻℃墜錛岀‘瀹氭槸鍝釜搴旂敤紼嬪簭浣跨敤璇ュ崗璁?br>3.1鍙蜂俊浠ゅ拰7鍙蜂俊浠ゆ湁浠涔堝尯鍒紝鎴戝浗鏌愬墠騫挎硾浣跨敤鐨勬槸閭d竴縐嶏紵
4.鍒椾婦5縐嶄互涓婄殑鐢佃瘽鏂頒笟鍔★紵
寰蔣浜氭床鎶鏈腑蹇冪殑闈㈣瘯棰橈紒錛侊紒
1錛庤繘紼嬪拰綰跨▼鐨勫樊鍒?br>綰跨▼鏄寚榪涚▼鍐呯殑涓涓墽琛屽崟鍏?涔熸槸榪涚▼鍐呯殑鍙皟搴﹀疄浣?
涓庤繘紼嬬殑鍖哄埆:
(1)璋冨害錛氱嚎紼嬩綔涓鴻皟搴﹀拰鍒嗛厤鐨勫熀鏈崟浣嶏紝榪涚▼浣滀負鎷ユ湁璧勬簮鐨勫熀鏈崟浣?br>(2)騫跺彂鎬э細涓嶄粎榪涚▼涔嬮棿鍙互騫跺彂鎵ц錛屽悓涓涓繘紼嬬殑澶氫釜綰跨▼涔嬮棿涔熷彲騫跺彂鎵ц
(3)鎷ユ湁璧勬簮錛氳繘紼嬫槸鎷ユ湁璧勬簮鐨勪竴涓嫭绔嬪崟浣嶏紝綰跨▼涓嶆嫢鏈夌郴緇熻祫婧愶紝浣嗗彲浠ヨ闂毝灞炰簬榪涚▼鐨勮祫婧?
(4)緋葷粺寮閿錛氬湪鍒涘緩鎴栨挙娑堣繘紼嬫椂錛岀敱浜庣郴緇熼兘瑕佷負涔嬪垎閰嶅拰鍥炴敹璧勬簮錛屽鑷寸郴緇熺殑寮閿鏄庢樉澶т簬鍒涘緩鎴栨挙娑堢嚎紼嬫椂鐨勫紑閿銆?br>2.嫻嬭瘯鏂規硶
浜哄伐嫻嬭瘯錛氫釜浜哄鏌ャ佹娊鏌ュ拰浼氬
鏈哄櫒嫻嬭瘯錛氶粦鐩掓祴璇曞拰鐧界洅嫻嬭瘯
2錛嶩eap涓巗tack鐨勫樊鍒?br>Heap鏄爢錛宻tack鏄爤銆?br>Stack鐨勭┖闂寸敱鎿嶄綔緋葷粺鑷姩鍒嗛厤/閲婃斁錛孒eap涓婄殑絀洪棿鎵嬪姩鍒嗛厤/閲婃斁銆?br>Stack絀洪棿鏈夐檺錛孒eap鏄緢澶х殑鑷敱瀛樺偍鍖?br>C涓殑malloc鍑芥暟鍒嗛厤鐨勫唴瀛樼┖闂村嵆鍦ㄥ爢涓?C++涓搴旂殑鏄痭ew鎿嶄綔絎︺?br>紼嬪簭鍦ㄧ紪璇戞湡瀵瑰彉閲忓拰鍑芥暟鍒嗛厤鍐呭瓨閮藉湪鏍堜笂榪涜,涓旂▼搴忚繍琛岃繃紼嬩腑鍑芥暟璋冪敤鏃跺弬鏁扮殑浼犻掍篃鍦ㄦ爤涓婅繘琛?br>3錛嶹indows涓嬬殑鍐呭瓨鏄浣曠鐞嗙殑錛?br>4錛庝粙緇?Net鍜?Net鐨勫畨鍏ㄦс?br>5錛庡鎴風濡備綍璁塊棶.Net緇勪歡瀹炵幇Web Service錛?br>6錛嶤/C++緙栬瘧鍣ㄤ腑铏氳〃鏄浣曞畬鎴愮殑錛?br>7錛庤皥璋圕OM鐨勭嚎紼嬫ā鍨嬨傜劧鍚庤璁鴻繘紼嬪唴/澶栫粍浠剁殑宸埆銆?br>8錛庤皥璋圛A32涓嬬殑鍒嗛〉鏈哄埗
灝忛〉(4K)涓ょ駭鍒嗛〉妯″紡錛屽ぇ欏?4M)涓綰?br>9錛庣粰涓や釜鍙橀噺錛屽浣曟壘鍑轟竴涓甫鐜崟閾捐〃涓槸浠涔堝湴鏂瑰嚭鐜扮幆鐨勶紵
涓涓掑涓錛屼竴涓掑浜岋紝浠栦滑鎸囧悜鍚屼竴涓帴鐐規椂灝辨槸鐜嚭鐜扮殑鍦版柟
10錛庡湪IA32涓竴鍏辨湁澶氬皯縐嶅姙娉曚粠鐢ㄦ埛鎬佽煩鍒板唴鏍告侊紵
閫氳繃璋冪敤闂紝浠巖ing3鍒皉ing0錛屼腑鏂粠ring3鍒皉ing0錛岃繘鍏m86絳夌瓑
11錛庡鏋滃彧鎯寵紼嬪簭鏈変竴涓疄渚嬭繍琛岋紝涓嶈兘榪愯涓や釜銆傚儚winamp涓鏍鳳紝鍙兘寮涓涓獥鍙o紝鎬庢牱瀹炵幇錛?br>鐢ㄥ唴瀛樻槧灝勬垨鍏ㄥ眬鍘熷瓙錛堜簰鏂ュ彉閲忥級銆佹煡鎵劇獥鍙e彞鏌?.
FindWindow錛屼簰鏂ワ紝鍐欐爣蹇楀埌鏂囦歡鎴栨敞鍐岃〃,鍏變韓鍐呭瓨銆?銆
12錛庡浣曟埅鍙栭敭鐩樼殑鍝嶅簲錛岃鎵鏈夌殑‘a’鍙樻垚‘b’錛?br>閿洏閽╁瓙SetWindowsHookEx
銆13錛嶢partment鍦–OM涓湁浠涔堢敤錛熶負浠涔堣寮曞叆錛?br>銆14錛庡瓨鍌ㄨ繃紼嬫槸浠涔堬紵鏈変粈涔堢敤錛熸湁浠涔堜紭鐐癸紵
鎴戠殑鐞嗚В灝辨槸涓鍫唖ql鐨勯泦鍚堬紝鍙互寤虹珛闈炲父澶嶆潅鐨勬煡璇紝緙栬瘧榪愯錛屾墍浠ヨ繍琛屼竴嬈″悗錛屼互鍚庡啀榪愯閫熷害姣斿崟鐙墽琛孲QL蹇緢澶?br>銆15錛嶵emplate鏈変粈涔堢壒鐐癸紵浠涔堟椂鍊欑敤錛?br>16錛庤皥璋圵indows DNA緇撴瀯鐨勭壒鐐瑰拰浼樼偣銆?br>
緗戠粶緙栫▼涓璁″茍鍙戞湇鍔″櫒錛屼嬌鐢ㄥ榪涚▼ 涓?澶氱嚎紼?錛岃闂湁浠涔堝尯鍒紵
1錛岃繘紼嬶細瀛愯繘紼嬫槸鐖惰繘紼嬬殑澶嶅埗鍝併傚瓙榪涚▼鑾峰緱鐖惰繘紼嬫暟鎹┖闂淬佸爢鍜屾爤鐨勫鍒跺搧銆?br>2錛岀嚎紼嬶細鐩稿涓庤繘紼嬭岃█錛岀嚎紼嬫槸涓涓洿鍔犳帴榪戜笌鎵ц浣撶殑姒傚康錛屽畠鍙互涓庡悓榪涚▼鐨勫叾浠栫嚎紼嬪叡浜暟鎹紝浣嗘嫢鏈夎嚜宸辯殑鏍堢┖闂達紝鎷ユ湁鐙珛鐨勬墽琛屽簭鍒椼?br>涓よ呴兘鍙互鎻愰珮紼嬪簭鐨勫茍鍙戝害錛屾彁楂樼▼搴忚繍琛屾晥鐜囧拰鍝嶅簲鏃墮棿銆?br>綰跨▼鍜岃繘紼嬪湪浣跨敤涓婂悇鏈変紭緙虹偣錛氱嚎紼嬫墽琛屽紑閿灝忥紝浣嗕笉鍒╀簬璧勬簮綆$悊鍜屼繚鎶わ紱鑰岃繘紼嬫鐩稿弽銆傚悓鏃訛紝綰跨▼閫傚悎浜庡湪SMP鏈哄櫒涓婅繍琛岋紝鑰岃繘紼嬪垯鍙互璺ㄦ満鍣ㄨ縼縐匯?br>
鎬濈
1. 鐢ㄥ畯瀹氫箟鍐欏嚭swap錛坸錛寉錛?br>#define swap(x, y)\
x = x + y;\
y = x - y;\
x = x - y;
2.鏁扮粍a[N]錛屽瓨鏀句簡1鑷砃-1涓暟錛屽叾涓煇涓暟閲嶅涓嬈°傚啓涓涓嚱鏁幫紝鎵懼嚭琚噸澶嶇殑鏁板瓧.鏃墮棿澶嶆潅搴﹀繀欏諱負o錛圢錛夊嚱鏁板師鍨嬶細
int do_dup(int a[],int N)
3 涓璇彞瀹炵幇x鏄惁涓?鐨勮嫢騫叉騫傜殑鍒ゆ柇
int i = 512;
cout << boolalpha << ((i & (i - 1)) ? false : true) << endl;
4.unsigned int intvert(unsigned int x,int p,int n)瀹炵幇瀵箈鐨勮繘琛岃漿鎹?p涓鴻搗濮嬭漿鍖栦綅,n涓洪渶瑕佽漿鎹㈢殑闀垮害,鍋囪璧峰鐐瑰湪鍙寵竟.濡倄=0b0001 0001,p=4,n=3杞崲鍚巟=0b0110 0001
unsigned int intvert(unsigned int x,int p,int n){
unsigned int _t = 0;
unsigned int _a = 1;
for(int i = 0; i < n; ++i){
_t |= _a;
_a = _a << 1;
}
_t = _t << p;
x ^= _t;
return x;
}
浠涔堟槸棰勭紪璇?br>浣曟椂闇瑕侀緙栬瘧錛?br>錛戙佹繪槸浣跨敤涓嶇粡甯告敼鍔ㄧ殑澶у瀷浠g爜浣撱?
錛掋佺▼搴忕敱澶氫釜妯″潡緇勬垚錛屾墍鏈夋ā鍧楅兘浣跨敤涓緇勬爣鍑嗙殑鍖呭惈鏂囦歡鍜岀浉鍚岀殑緙栬瘧閫夐」銆傚湪榪欑鎯呭喌涓嬶紝鍙互灝嗘墍鏈夊寘鍚枃浠墮緙栬瘧涓轟竴涓緙栬瘧澶淬?br>char * const p;
char const * p
const char *p
涓婅堪涓変釜鏈変粈涔堝尯鍒紵
char * const p; //甯擱噺鎸囬拡錛宲鐨勫間笉鍙互淇敼
char const * p錛?/鎸囧悜甯擱噺鐨勬寚閽堬紝鎸囧悜鐨勫父閲忓間笉鍙互鏀?br>const char *p錛?//鍜宑har const *p
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char *str5 = "abc";
const char *str6 = "abc";
char *str7 = "abc";
char *str8 = "abc";
cout << ( str1 == str2 ) << endl;
cout << ( str3 == str4 ) << endl;
cout << ( str5 == str6 ) << endl;
cout << ( str7 == str8 ) << endl;
緇撴灉鏄細0 0 1 1
瑙g瓟錛歴tr1,str2,str3,str4鏄暟緇勫彉閲忥紝瀹冧滑鏈夊悇鑷殑鍐呭瓨絀洪棿錛?br>鑰宻tr5,str6,str7,str8鏄寚閽堬紝瀹冧滑鎸囧悜鐩稿悓鐨勫父閲忓尯鍩熴?br>
12. 浠ヤ笅浠g爜涓殑涓や釜sizeof鐢ㄦ硶鏈夐棶棰樺悧錛焄C鏄揮
void UpperCase( char str[] ) // 灝?str 涓殑灝忓啓瀛楁瘝杞崲鎴愬ぇ鍐欏瓧姣?br>{
for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
if( 'a'<=str[i] && str[i]<='z' )
str[i] -= ('a'-'A' );
}
char str[] = "aBcDe";
cout << "str瀛楃闀垮害涓? " << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;
絳旓細
鍑芥暟鍐呯殑sizeof鏈夐棶棰樸傛牴鎹娉曪紝sizeof濡傜敤浜庢暟緇勶紝鍙兘嫻嬪嚭闈欐佹暟緇勭殑澶у皬錛屾棤娉曟嫻嬪姩鎬佸垎閰嶇殑鎴栧閮ㄦ暟緇勫ぇ灝忋傚嚱鏁板鐨剆tr鏄竴涓潤鎬?
瀹氫箟鐨勬暟緇勶紝鍥犳鍏跺ぇ灝忎負6錛屽嚱鏁板唴鐨剆tr瀹為檯鍙槸涓涓寚鍚戝瓧絎︿覆鐨勬寚閽堬紝娌℃湁浠諱綍棰濆鐨勪笌鏁扮粍鐩稿叧鐨勪俊鎭紝鍥犳sizeof浣滅敤浜庝笂鍙皢鍏跺綋鎸囬拡鐪嬶紝
涓涓寚閽堜負4涓瓧鑺傦紝鍥犳榪斿洖4銆?br>
涓涓?2浣嶇殑鏈哄櫒,璇ユ満鍣ㄧ殑鎸囬拡鏄灝戜綅
鎸囬拡鏄灝戜綅鍙鐪嬪湴鍧鎬葷嚎鐨勪綅鏁板氨琛屼簡銆?0386浠ュ悗鐨勬満瀛愰兘鏄?2鐨勬暟鎹葷嚎銆傛墍浠ユ寚閽堢殑浣嶆暟灝辨槸4涓瓧鑺備簡銆?br>
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
杈撳嚭錛?,5
*(a+1錛夊氨鏄痑[1]錛?(ptr-1)灝辨槸a[4],鎵ц緇撴灉鏄?錛?
&a+1涓嶆槸棣栧湴鍧+1錛岀郴緇熶細璁や負鍔犱竴涓猘鏁扮粍鐨勫亸縐伙紝鏄亸縐諱簡涓涓暟緇勭殑澶у皬錛堟湰渚嬫槸5涓猧nt錛?br>int *ptr=(int *)(&a+1);
鍒檖tr瀹為檯鏄?amp;(a[5]),涔熷氨鏄痑+5
鍘熷洜濡備笅錛?br>&a鏄暟緇勬寚閽堬紝鍏剁被鍨嬩負 int (*)[5];
鑰屾寚閽堝姞1瑕佹牴鎹寚閽堢被鍨嬪姞涓婁竴瀹氱殑鍊鹼紝
涓嶅悓綾誨瀷鐨勬寚閽?1涔嬪悗澧炲姞鐨勫ぇ灝忎笉鍚?br>a鏄暱搴︿負5鐨刬nt鏁扮粍鎸囬拡錛屾墍浠ヨ鍔?5*sizeof(int)
鎵浠tr瀹為檯鏄痑[5]
浣嗘槸prt涓?&a+1)綾誨瀷鏄笉涓鏍風殑(榪欑偣寰堥噸瑕?
鎵浠rt-1鍙細鍑忓幓sizeof(int*)
a,&a鐨勫湴鍧鏄竴鏍風殑錛屼絾鎰忔濅笉涓鏍鳳紝a鏄暟緇勯鍦板潃錛屼篃灝辨槸a[0]鐨勫湴鍧錛?amp;a鏄璞★紙鏁扮粍錛夐鍦板潃錛宎+1鏄暟緇勪笅涓鍏冪礌鐨勫湴鍧錛屽嵆a[1],&a+1鏄笅涓涓璞$殑鍦板潃錛屽嵆a[5].
1.璇烽棶浠ヤ笅浠g爜鏈変粈涔堥棶棰橈細
int main()
{
char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}
娌℃湁涓簊tr鍒嗛厤鍐呭瓨絀洪棿錛屽皢浼氬彂鐢熷紓甯?br>闂鍑哄湪灝嗕竴涓瓧絎︿覆澶嶅埗榪涗竴涓瓧絎﹀彉閲忔寚閽堟墍鎸囧湴鍧銆傝櫧鐒跺彲浠ユ紜緭鍑虹粨鏋滐紝浣嗗洜涓鴻秺鐣岃繘琛屽唴鍦ㄨ鍐欒屽鑷寸▼搴忓穿婧冦?br>
char* s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s);
鏈変粈涔堥敊錛?br>"AAA"鏄瓧絎︿覆甯擱噺銆俿鏄寚閽堬紝鎸囧悜榪欎釜瀛楃涓插父閲忥紝鎵浠ュ0鏄巗鐨勬椂鍊欏氨鏈夐棶棰樸?br>cosnt char* s="AAA";
鐒跺悗鍙堝洜涓烘槸甯擱噺錛屾墍浠ュ鏄痵[0]鐨勮祴鍊兼搷浣滄槸涓嶅悎娉曠殑銆?/p>
2銆佸祵鍏ュ紡緋葷粺涓粡甯歌鐢ㄥ埌鏃犻檺寰幆錛屼綘鎬庝箞鐢–緙栧啓姝誨驚鐜?br>while(1){}鎴栬協or(;;)
3銆佸叧閿瓧static鐨勪綔鐢ㄦ槸浠涔堬紵
瀹氫箟闈欐佸彉閲?br>4銆佸叧閿瓧const鏈変粈涔堝惈鎰忥紵
琛ㄧず甯擱噺涓嶅彲浠ヤ慨鏀圭殑鍙橀噺銆?br>5銆佸叧閿瓧volatile鏈変粈涔堝惈鎰忥紵騫朵婦鍑轟笁涓笉鍚岀殑渚嬪瓙錛?br>鎻愮ず緙栬瘧鍣ㄥ璞$殑鍊煎彲鑳藉湪緙栬瘧鍣ㄦ湭鐩戞祴鍒扮殑鎯呭喌涓嬫敼鍙樸?br>
int (*s[10])(int) 琛ㄧず鐨勬槸浠涔堝晩
int (*s[10])(int) 鍑芥暟鎸囬拡鏁扮粍錛屾瘡涓寚閽堟寚鍚戜竴涓猧nt func(int param)鐨勫嚱鏁般?br>
1.鏈変互涓嬭〃杈懼紡錛?br>int a=248; b=4;int const c=21;const int *d=&a;
int *const e=&b;int const *f const =&a;
璇烽棶涓嬪垪琛ㄨ揪寮忓摢浜涗細琚紪璇戝櫒紱佹錛熶負浠涔堬紵
*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;
*c 榪欐槸涓粈涔堜笢涓滐紝紱佹
*d 璇翠簡鏄痗onst錛?紱佹
e = &a 璇翠簡鏄痗onst 紱佹
const *f const =&a; 紱佹
2.浜ゆ崲涓や釜鍙橀噺鐨勫鹼紝涓嶄嬌鐢ㄧ涓変釜鍙橀噺銆傚嵆a=3,b=5,浜ゆ崲涔嬪悗a=5,b=3;
鏈変袱縐嶈В娉? 涓縐嶇敤綆楁湳綆楁硶, 涓縐嶇敤^(寮傛垨)
a = a + b;
b = a - b;
a = a - b;
or
a = a^b;// 鍙兘瀵筰nt,char..
b = a^b;
a = a^b;
or
a ^= b ^= a;
3.c鍜宑++涓殑struct鏈変粈涔堜笉鍚岋紵
c鍜宑++涓璼truct鐨勪富瑕佸尯鍒槸c涓殑struct涓嶅彲浠ュ惈鏈夋垚鍛樺嚱鏁幫紝鑰宑++涓殑struct鍙互銆俢++涓璼truct鍜宑lass鐨勪富瑕佸尯鍒湪浜庨粯璁ょ殑瀛樺彇鏉冮檺涓嶅悓錛宻truct榛樿涓簆ublic錛岃宑lass榛樿涓簆rivate
4.#include <stdio.h>
#include <stdlib.h>
void getmemory(char *p)
{
p=(char *) malloc(100);
strcpy(p,"hello world");
}
int main( )
{
char *str=NULL;
getmemory(str);
printf("%s/n",str);
free(str);
return 0;
}
紼嬪簭宕╂簝錛実etmemory涓殑malloc 涓嶈兘榪斿洖鍔ㄦ佸唴瀛橈紝 free錛堬級瀵箂tr鎿嶄綔寰堝嵄闄?br>5.char szstr[10];
strcpy(szstr,"0123456789");
浜х敓浠涔堢粨鏋滐紵涓轟粈涔堬紵
闀垮害涓嶄竴鏍鳳紝浼氶犳垚闈炴硶鐨凮S
6.鍒椾婦鍑犵榪涚▼鐨勫悓姝ユ満鍒訛紝騫舵瘮杈冨叾浼樼己鐐廣?br>鍘熷瓙鎿嶄綔
淇″彿閲忔満鍒?br>鑷棆閿?br>綆$▼錛屼細鍚堬紝鍒嗗竷寮忕郴緇?br>
7.榪涚▼涔嬮棿閫氫俊鐨勯斿緞
鍏變韓瀛樺偍緋葷粺
娑堟伅浼犻掔郴緇?br>綆¢亾錛氫互鏂囦歡緋葷粺涓哄熀紜
11.榪涚▼姝婚攣鐨勫師鍥?br>璧勬簮绔炰簤鍙婅繘紼嬫帹榪涢『搴忛潪娉?br>12.姝婚攣鐨?涓繀瑕佹潯浠?br>浜掓枼銆佽姹備繚鎸併佷笉鍙墺澶恒佺幆璺?br>13.姝婚攣鐨勫鐞?br>楦甸笩絳栫暐銆侀闃茬瓥鐣ャ侀伩鍏嶇瓥鐣ャ佹嫻嬩笌瑙i櫎姝婚攣
15. 鎿嶄綔緋葷粺涓繘紼嬭皟搴︾瓥鐣ユ湁鍝嚑縐嶏紵
FCFS(鍏堟潵鍏堟湇鍔?錛屼紭鍏堢駭錛屾椂闂寸墖杞漿錛屽綰у弽棣?br>8.綾葷殑闈欐佹垚鍛樺拰闈為潤鎬佹垚鍛樻湁浣曞尯鍒紵
綾葷殑闈欐佹垚鍛樻瘡涓被鍙湁涓涓紝闈為潤鎬佹垚鍛樻瘡涓璞′竴涓?br>9.綰櫄鍑芥暟濡備綍瀹氫箟錛熶嬌鐢ㄦ椂搴旀敞鎰忎粈涔堬紵
virtual void f()=0;
鏄帴鍙o紝瀛愮被蹇呴』瑕佸疄鐜?br>10.鏁扮粍鍜岄摼琛ㄧ殑鍖哄埆
鏁扮粍錛氭暟鎹『搴忓瓨鍌紝鍥哄畾澶у皬
榪炶〃錛氭暟鎹彲浠ラ殢鏈哄瓨鍌紝澶у皬鍙姩鎬佹敼鍙?br>
12.ISO鐨勪竷灞傛ā鍨嬫槸浠涔堬紵tcp/udp鏄睘浜庡摢涓灞傦紵tcp/udp鏈変綍浼樼己鐐癸紵
搴旂敤灞?br>琛ㄧず灞?br>浼氳瘽灞?br>榪愯緭灞?br>緗戠粶灞?br>鐗╃悊閾捐礬灞?br>鐗╃悊灞?br>tcp /udp灞炰簬榪愯緭灞?br>TCP 鏈嶅姟鎻愪緵浜嗘暟鎹祦浼犺緭銆佸彲闈犳с佹湁鏁堟祦鎺у埗銆佸叏鍙屽伐鎿嶄綔鍜屽璺鐢ㄦ妧鏈瓑銆?br>涓?TCP 涓嶅悓錛?UDP 騫朵笉鎻愪緵瀵?IP 鍗忚鐨勫彲闈犳満鍒躲佹祦鎺у埗浠ュ強閿欒鎭㈠鍔熻兘絳夈傜敱浜?UDP 姣旇緝綆鍗曪紝 UDP 澶村寘鍚緢灝戠殑瀛楄妭錛屾瘮 TCP 璐熻澆娑堣楀皯銆?br>tcp: 鎻愪緵紼沖畾鐨勪紶杈撴湇鍔★紝鏈夋祦閲忔帶鍒訛紝緙虹偣鏄寘澶村ぇ錛屽啑浣欐т笉濂?br>udp: 涓嶆彁渚涚ǔ瀹氱殑鏈嶅姟錛屽寘澶村皬錛屽紑閿灝?
1錛?void *)ptr 鍜?(*(void**))ptr鐨勭粨鏋滄槸鍚︾浉鍚岋紵鍏朵腑ptr涓哄悓涓涓寚閽?br>.(void *)ptr 鍜?(*(void**))ptr鍊兼槸鐩稿悓鐨?br>2錛歩nt main()
{
int x=3;
printf("%d",x);
return 1;
}
闂嚱鏁版棦鐒朵笉浼氳鍏跺畠鍑芥暟璋冪敤錛屼負浠涔堣榪斿洖1錛?br>mian涓紝c鏍囧噯璁や負0琛ㄧず鎴愬姛錛岄潪0琛ㄧず閿欒銆傚叿浣撶殑鍊兼槸鏌愪腑鍏蜂綋鍑洪敊淇℃伅
1錛岃瀵圭粷瀵瑰湴鍧0x100000璧嬪鹼紝鎴戜滑鍙互鐢?br>(unsigned int*)0x100000 = 1234;
閭d箞瑕佹槸鎯寵紼嬪簭璺寵漿鍒扮粷瀵瑰湴鍧鏄?x100000鍘繪墽琛岋紝搴旇鎬庝箞鍋氾紵
*((void (*)( ))0x100000 ) ( );
棣栧厛瑕佸皢0x100000寮哄埗杞崲鎴愬嚱鏁版寚閽?鍗?
(void (*)())0x100000
鐒跺悗鍐嶈皟鐢ㄥ畠:
*((void (*)())0x100000)();
鐢╰ypedef鍙互鐪嬪緱鏇寸洿瑙備簺:
typedef void(*)() voidFuncPtr;
*((voidFuncPtr)0x100000)();
2錛屽凡鐭ヤ竴涓暟緇則able錛岀敤涓涓畯瀹氫箟錛屾眰鍑烘暟鎹殑鍏冪礌涓暟
#define NTBL
#define NTBL (sizeof(table)/sizeof(table[0]))
闈㈣瘯棰? 綰跨▼涓庤繘紼嬬殑鍖哄埆鍜岃仈緋? 綰跨▼鏄惁鍏鋒湁鐩稿悓鐨勫爢鏍? dll鏄惁鏈夌嫭绔嬬殑鍫嗘爤?
榪涚▼鏄鐨勶紝鍙槸涓浜涜祫婧愮殑闆嗗悎錛岀湡姝g殑紼嬪簭鎵ц閮芥槸綰跨▼鏉ュ畬鎴愮殑錛岀▼搴忓惎鍔ㄧ殑鏃跺欐搷浣滅郴緇熷氨甯綘鍒涘緩浜嗕竴涓富綰跨▼銆?br>
姣忎釜綰跨▼鏈夎嚜宸辯殑鍫嗘爤銆?br>DLL
涓湁娌℃湁鐙珛鐨勫爢鏍堬紝榪欎釜闂涓嶅ソ鍥炵瓟錛屾垨鑰呰榪欎釜闂鏈韓鏄惁鏈夐棶棰樸傚洜涓篋LL涓殑浠g爜鏄鏌愪簺綰跨▼鎵鎵ц錛屽彧鏈夌嚎紼嬫嫢鏈夊爢鏍堬紝濡傛灉DLL涓殑浠g爜鏄?
EXE涓殑綰跨▼鎵璋冪敤錛岄偅涔堣繖涓椂鍊欐槸涓嶆槸璇磋繖涓狣LL娌℃湁鑷繁鐙珛鐨勫爢鏍堬紵濡傛灉DLL涓殑浠g爜鏄敱DLL鑷繁鍒涘緩鐨勭嚎紼嬫墍鎵ц錛岄偅涔堟槸涓嶆槸璇碊LL鏈夌嫭
绔嬬殑鍫嗘爤錛?br>
浠ヤ笂璁茬殑鏄爢鏍堬紝濡傛灉瀵逛簬鍫嗘潵璇達紝姣忎釜DLL鏈夎嚜宸辯殑鍫嗭紝鎵浠ュ鏋滄槸浠嶥LL涓姩鎬佸垎閰嶇殑鍐呭瓨錛屾渶濂芥槸浠嶥LL涓垹闄わ紝濡傛灉浣犱粠DLL涓垎閰嶅唴瀛橈紝鐒跺悗鍦‥XE涓紝鎴栬呭彟澶栦竴涓狣LL涓垹闄わ紝寰堟湁鍙兘瀵艱嚧紼嬪簭宕╂簝
unsigned short A = 10;
printf("~A = %u\n", ~A);
char c=128;
printf("c=%d\n",c);
杈撳嚭澶氬皯錛熷茍鍒嗘瀽榪囩▼
絎竴棰橈紝锝濧 錛?xfffffff5,int鍊?涓猴紞11錛屼絾杈撳嚭鐨勬槸uint銆傛墍浠ヨ緭鍑?294967285
絎簩棰橈紝c錛?x10,杈撳嚭鐨勬槸int錛屾渶楂樹綅涓?錛屾槸璐熸暟錛屾墍浠ュ畠鐨勫煎氨鏄?x00鐨勮ˉ鐮佸氨鏄?28錛屾墍浠ヨ緭鍑猴紞128銆?br>榪欎袱閬撻閮芥槸鍦ㄨ冨療浜岃繘鍒跺悜int鎴杣int杞崲鏃剁殑鏈楂樹綅澶勭悊銆?br>
鍒嗘瀽涓嬮潰鐨勭▼搴忥細
void GetMemory(char **p,int num)
{
*p=(char *)malloc(num);
}
int main()
{
char *str=NULL;
GetMemory(&str,100);
strcpy(str,"hello");
free(str);
if(str!=NULL)
{
strcpy(str,"world");
}
printf("\n str is %s",str);
getchar();
}
闂緭鍑虹粨鏋滄槸浠涔堬紵甯屾湜澶у鑳借璇村師鍥狅紝鍏堣阿璋簡
杈撳嚭str is world銆?br>free 鍙槸閲婃斁鐨剆tr鎸囧悜鐨勫唴瀛樼┖闂?瀹冩湰韜殑鍊艱繕鏄瓨鍦ㄧ殑.
鎵浠ree涔嬪悗錛屾湁涓涓ソ鐨勪範鎯氨鏄皢str=NULL.
姝ゆ椂str鎸囧悜絀洪棿鐨勫唴瀛樺凡琚洖鏀?濡傛灉杈撳嚭璇彞涔嬪墠榪樺瓨鍦ㄥ垎閰嶇┖闂寸殑鎿嶄綔鐨勮瘽,榪欐瀛樺偍絀洪棿鏄彲鑳借閲嶆柊鍒嗛厤緇欏叾浠栧彉閲忕殑,
灝界榪欐紼嬪簭紜疄鏄瓨鍦ㄥぇ澶х殑闂錛堜笂闈㈠悇浣嶅凡緇忚寰楀緢娓呮浜嗭級錛屼絾鏄氬父浼氭墦鍗板嚭world鏉ャ?br>榪欐槸鍥犱負錛岃繘紼嬩腑鐨勫唴瀛樼鐞嗕竴鑸笉鏄敱鎿嶄綔緋葷粺瀹屾垚鐨勶紝鑰屾槸鐢卞簱鍑芥暟鑷繁瀹屾垚鐨勩?br>褰?
浣爉alloc涓鍧楀唴瀛樼殑鏃跺欙紝綆$悊搴撳悜鎿嶄綔緋葷粺鐢寵涓鍧楃┖闂達紙鍙兘浼氭瘮浣犵敵璇風殑澶т竴浜涳級錛岀劧鍚庡湪榪欏潡絀洪棿涓褰曚竴浜涚鐞嗕俊鎭紙涓鑸槸鍦ㄤ綘鐢寵鐨勫唴瀛樺墠闈?
涓鐐癸級錛屽茍灝嗗彲鐢ㄥ唴瀛樼殑鍦板潃榪斿洖銆備絾鏄噴鏀懼唴瀛樼殑鏃跺欙紝綆$悊搴撻氬父閮戒笉浼氬皢鍐呭瓨榪樼粰鎿嶄綔緋葷粺錛屽洜姝や綘鏄彲浠ョ戶緇闂繖鍧楀湴鍧鐨勶紝鍙笉榪囥傘傘傘傘傘傘傘傛ゼ
涓婇兘璇磋繃浜嗭紝鏈濂藉埆榪欎箞騫層?br>
char a[10],strlen(a)涓轟粈涔堢瓑浜?5錛熻繍琛岀殑緇撴灉
#include "stdio.h"
#include "string.h"
void main()
{
char aa[10];
printf("%d",strlen(aa));
}
sizeof()鍜屽垵涓嶅垵濮嬪寲錛屾病鏈夊叧緋伙紱
strlen()鍜屽垵濮嬪寲鏈夊叧銆?br>
char (*str)[20];/*str鏄竴涓暟緇勬寚閽堬紝鍗蟲寚鍚戞暟緇勭殑鎸囬拡錛?/
char *str[20];/*str鏄竴涓寚閽堟暟緇勶紝鍏跺厓绱犱負鎸囬拡鍨嬫暟鎹紟*/
long a=0x801010;
a+5=?
0x801010鐢ㄤ簩榪涘埗琛ㄧず涓猴細“1000 0000 0001 0000 0001 0000”錛屽崄榪涘埗鐨勫間負8392720錛屽啀鍔犱笂5灝辨槸8392725緗?br>
1)緇欏畾緇撴瀯struct A
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
};闂畇izeof(A) = ?
緇欏畾緇撴瀯struct A
{
char t:4; 4浣?br>char k:4; 4浣?br>unsigned short i:8; 8浣?
unsigned long m; // 鍋忕Щ2瀛楄妭淇濊瘉4瀛楄妭瀵歸綈
}; // 鍏?瀛楄妭
2)涓嬮潰鐨勫嚱鏁板疄鐜板湪涓涓暟涓婂姞涓涓暟錛屾湁浠涔堥敊璇紵璇鋒敼姝c?br>int add_n ( int n )
{
static int i = 100;
i += n;
return i;
}
褰撲綘絎簩嬈¤皟鐢ㄦ椂寰椾笉鍒版紜殑緇撴灉錛岄毦閬撲綘鍐欎釜鍑芥暟灝辨槸涓轟簡璋冪敤涓嬈★紵闂灝卞嚭鍦?static涓婏紵
// 甯繖鍒嗘瀽涓涓?br>#include<iostream.h>
#include <string.h>
#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct AA
{
int b1:5;
int b2:2;
}AA;
void main()
{
AA aa;
char cc[100];
strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz");
memcpy(&aa,cc,sizeof(AA));
cout << aa.b1 <<endl;
cout << aa.b2 <<endl;
}
絳旀鏄?-16鍜岋紤
棣栧厛sizeof(AA)鐨勫ぇ灝忎負4,b1鍜宐2鍒嗗埆鍗?bit鍜?bit.
緇忚繃strcpy鍜宮emcpy鍚?aa鐨?涓瓧鑺傛墍瀛樻斁鐨勫兼槸:
0,1,2,3鐨凙SC鐮侊紝鍗?0110000,00110001,00110010,00110011
鎵浠ワ紝鏈鍚庝竴姝ワ細鏄劇ず鐨勬槸榪欙紨涓瓧鑺傜殑鍓嶏紩浣嶏紝鍜屼箣鍚庣殑錛掍綅
鍒嗗埆涓猴細10000,鍜?1
鍥犱負int鏄湁姝h礋涔嬪垎銆銆鎵浠ワ細絳旀鏄?16鍜岋紤
姹傚嚱鏁拌繑鍥炲鹼紝杈撳叆x=9999;
int func 錛?x 錛?br>{
int countx = 0;
while ( x )
{
countx ++;
x = x&(x-1);
}
return countx;
}
緇撴灉鍛紵
鐭ラ亾浜嗚繖鏄粺璁?999鐨勪簩榪涘埗鏁板間腑鏈夊灝戜釜1鐨勫嚱鏁幫紝涓旀湁
9999錛?×1024錛?12錛?56錛?5
9×1024涓惈鏈?鐨勪釜鏁頒負2錛?br>512涓惈鏈?鐨勪釜鏁頒負1錛?br>256涓惈鏈?鐨勪釜鏁頒負1錛?br>15涓惈鏈?鐨勪釜鏁頒負4錛?br>鏁呭叡鏈?鐨勪釜鏁頒負8錛岀粨鏋滀負8銆?br>1000 - 1 = 0111錛屾濂芥槸鍘熸暟鍙栧弽銆傝繖灝辨槸鍘熺悊銆?br>鐢ㄨ繖縐嶆柟娉曟潵姹?鐨勪釜鏁版槸寰堟晥鐜囧緢楂樼殑銆?br>涓嶅繀鍘諱竴涓竴涓湴縐諱綅銆傚驚鐜鏁版渶灝戙?br>
int a,b,c 璇峰啓鍑芥暟瀹炵幇C=a+b ,涓嶅彲浠ユ敼鍙樻暟鎹被鍨?濡傚皢c鏀逛負long int,鍏抽敭鏄浣曞鐞嗘孩鍑洪棶棰?br>bool add (int a, int b,int *c)
{
*c=a+b;
return (a>0 && b>0 &&(*c<a || *c<b) || (a<0 && b<0 &&(*c>a || *c>b)));
}
鍒嗘瀽錛?br>struct bit
{ int a:3;
int b:2;
int c:3;
};
int main()
{
bit s;
char *c=(char*)&s;
cout<<sizeof(bit)<<endl;
*c=0x99;
cout << s.a <<endl <<s.b<<endl<<s.c<<endl;
int a=-1;
printf("%x",a);
return 0;
}
杈撳嚭涓轟粈涔堟槸
4
1
-1
-4
ffffffff
鍥犱負0x99鍦ㄥ唴瀛樹腑琛ㄧず涓?100 11 001 , a = 001, b = 11, c = 100
褰揷涓烘湁絎﹀悎鏁版椂, c = 100, 鏈楂?涓鴻〃紺篶涓鴻礋鏁幫紝璐熸暟鍦ㄨ綆楁満鐢ㄨˉ鐮佽〃紺猴紝鎵浠 = -4;鍚岀悊
b = -1;
褰揷涓烘湁絎﹀悎鏁版椂, c = 100,鍗?c = 4,鍚岀悊 b = 3
浣嶅煙 錛?
鏈?
浜涗俊鎭湪瀛樺偍鏃訛紝騫朵笉闇瑕佸崰鐢ㄤ竴涓畬鏁寸殑瀛楄妭錛?鑰屽彧闇鍗犲嚑涓垨涓涓簩榪涘埗浣嶃備緥濡傚湪瀛樻斁涓涓紑鍏抽噺鏃訛紝鍙湁0鍜? 涓ょ鐘舵侊紝
鐢ㄤ竴浣嶄簩榪涗綅鍗沖彲銆備負浜嗚妭鐪佸瓨鍌ㄧ┖闂達紝騫朵嬌澶勭悊綆渚匡紝錛h璦鍙堟彁渚涗簡涓縐嶆暟鎹粨鏋勶紝縐頒負“浣嶅煙”鎴?#8220;浣嶆”銆傛墍璋?#8220;浣嶅煙”鏄妸涓涓瓧鑺備腑鐨勪簩榪涗綅鍒掑垎涓哄嚑
涓笉鍚岀殑鍖哄煙錛?騫惰鏄庢瘡涓尯鍩熺殑浣嶆暟銆傛瘡涓煙鏈変竴涓煙鍚嶏紝鍏佽鍦ㄧ▼搴忎腑鎸夊煙鍚嶈繘琛屾搷浣溿?
榪欐牱灝卞彲浠ユ妸鍑犱釜涓嶅悓鐨勫璞$敤涓涓瓧鑺傜殑浜岃繘鍒朵綅鍩熸潵琛ㄧず銆備竴銆佷綅鍩熺殑瀹氫箟鍜屼綅鍩熷彉閲忕殑璇存槑浣嶅煙瀹氫箟涓庣粨鏋勫畾涔夌浉浠匡紝鍏跺艦寮忎負錛?
struct 浣嶅煙緇撴瀯鍚?
{ 浣嶅煙鍒楄〃 };
鍏朵腑浣嶅煙鍒楄〃鐨勫艦寮忎負錛?綾誨瀷璇存槑絎?浣嶅煙鍚嶏細浣嶅煙闀垮害
渚嬪錛?
struct bs
{
int a:8;
int b:2;
int c:6;
};
浣嶅煙鍙橀噺鐨勮鏄庝笌緇撴瀯鍙橀噺璇存槑鐨勬柟寮忕浉鍚屻?鍙噰鐢ㄥ厛瀹氫箟鍚庤鏄庯紝鍚屾椂瀹氫箟璇存槑鎴栬呯洿鎺ヨ鏄庤繖涓夌鏂瑰紡銆備緥濡傦細
struct bs
{
int a:8;
int b:2;
int c:6;
}data;
璇存槑data涓篵s鍙橀噺錛屽叡鍗犱袱涓瓧鑺傘傚叾涓綅鍩焌鍗?浣嶏紝浣嶅煙b鍗?浣嶏紝浣嶅煙c鍗?浣嶃傚浜庝綅鍩熺殑瀹氫箟灝氭湁浠ヤ笅鍑犵偣璇存槑錛?
1. 涓涓綅鍩熷繀欏誨瓨鍌ㄥ湪鍚屼竴涓瓧鑺備腑錛屼笉鑳借法涓や釜瀛楄妭銆傚涓涓瓧鑺傛墍鍓╃┖闂翠笉澶熷瓨鏀懼彟涓浣嶅煙鏃訛紝搴斾粠涓嬩竴鍗曞厓璧峰瓨鏀捐浣嶅煙銆備篃鍙互鏈夋剰浣挎煇浣嶅煙浠庝笅涓鍗曞厓寮濮嬨備緥濡傦細
struct bs
{
unsigned a:4
unsigned :0 /*絀哄煙*/
unsigned b:4 /*浠庝笅涓鍗曞厓寮濮嬪瓨鏀?/
unsigned c:4
}
鍦ㄨ繖涓綅鍩熷畾涔変腑錛宎鍗犵涓瀛楄妭鐨?浣嶏紝鍚?浣嶅~0琛ㄧず涓嶄嬌鐢紝b浠庣浜屽瓧鑺傚紑濮嬶紝鍗犵敤4浣嶏紝c鍗犵敤4浣嶃?
2. 鐢變簬浣嶅煙涓嶅厑璁歌法涓や釜瀛楄妭錛屽洜姝や綅鍩熺殑闀垮害涓嶈兘澶т簬涓涓瓧鑺傜殑闀垮害錛屼篃灝辨槸璇翠笉鑳借秴榪?浣嶄簩榪涗綅銆?
3. 浣嶅煙鍙互鏃犱綅鍩熷悕錛岃繖鏃跺畠鍙敤鏉ヤ綔濉厖鎴栬皟鏁翠綅緗傛棤鍚嶇殑浣嶅煙鏄笉鑳戒嬌鐢ㄧ殑銆備緥濡傦細
struct k
{
int a:1
int :2 /*璇?浣嶄笉鑳戒嬌鐢?/
int b:3
int c:2
};
浠庝互涓婂垎鏋愬彲浠ョ湅鍑猴紝浣嶅煙鍦ㄦ湰璐ㄤ笂灝辨槸涓縐嶇粨鏋勭被鍨嬶紝 涓嶈繃鍏舵垚鍛樻槸鎸変簩榪涗綅鍒嗛厤鐨勩?
浜屻佷綅鍩熺殑浣跨敤浣嶅煙鐨勪嬌鐢ㄥ拰緇撴瀯鎴愬憳鐨勪嬌鐢ㄧ浉鍚岋紝鍏朵竴鑸艦寮忎負錛?浣嶅煙鍙橀噺鍚?#8226;浣嶅煙鍚?浣嶅煙鍏佽鐢ㄥ悇縐嶆牸寮忚緭鍑恒?
main(){
struct bs
{
unsigned a:1;
unsigned b:3;
unsigned c:4;
} bit,*pbit;
bit.a=1;
bit.b=7;
bit.c=15;
pri
鏀歸敊錛?br>#include <stdio.h>
int main(void) {
int **p;
int arr[100];
p = &arr;
return 0;
}
瑙g瓟錛?br>鎼為敊浜?鏄寚閽堢被鍨嬩笉鍚?
int **p; //浜岀駭鎸囬拡
&arr; //寰楀埌鐨勬槸鎸囧悜絎竴緇翠負100鐨勬暟緇勭殑鎸囬拡
#include <stdio.h>
int main(void) {
int **p, *q;
int arr[100];
q = arr;
p = &q;
return 0;
}
涓嬮潰榪欎釜紼嬪簭鎵ц鍚庝細鏈変粈涔堥敊璇垨鑰呮晥鏋?
#define MAX 255
int main()
{
unsigned char A[MAX],i;//i琚畾涔変負unsigned char
for (i=0;i<=MAX;i++)
A[i]=i;
}
瑙g瓟錛氭寰幆鍔犳暟緇勮秺鐣岃闂紙C/C++涓嶈繘琛屾暟緇勮秺鐣屾鏌ワ級
MAX=255
鏁扮粍A鐨勪笅鏍囪寖鍥翠負:0..MAX-1,榪欐槸鍏朵竴..
鍏朵簩.褰搃寰幆鍒?55鏃?寰幆鍐呮墽琛?
A[255]=255;
榪欏彞鏈韓娌℃湁闂..浣嗘槸榪斿洖for (i=0;i<=MAX;i++)璇彞鏃?
鐢變簬unsigned char鐨勫彇鍊艱寖鍥村湪(0..255),i++浠ュ悗i鍙堜負0浜?.鏃犻檺寰幆涓嬪幓.
struct name1{
char str;
short x;
int num;
}
struct name2{
char str;
int num;
short x;
}
sizeof(struct name1)=8,sizeof(struct name2)=12
鍦ㄧ浜屼釜緇撴瀯涓紝涓轟繚璇乶um鎸夊洓涓瓧鑺傚榻愶紝char鍚庡繀欏葷暀鍑?瀛楄妭鐨勭┖闂達紱鍚屾椂涓轟繚璇佹暣涓粨鏋勭殑鑷劧瀵歸綈錛堣繖閲屾槸4瀛楄妭瀵歸綈錛夛紝鍦▁鍚庤繕瑕佽ˉ榻?涓瓧鑺傦紝榪欐牱灝辨槸12瀛楄妭銆?br>
intel錛?br>A.c 鍜孊.c涓や釜c鏂囦歡涓嬌鐢ㄤ簡涓や釜鐩稿悓鍚嶅瓧鐨剆tatic鍙橀噺,緙栬瘧鐨勬椂鍊欎細涓嶄細鏈夐棶棰?榪欎袱涓猻tatic鍙橀噺浼氫繚瀛樺埌鍝噷錛堟爤榪樻槸鍫嗘垨鑰呭叾浠栫殑錛?
static鐨勫叏灞鍙橀噺錛岃〃鏄庤繖涓彉閲忎粎鍦ㄦ湰妯″潡涓湁鎰忎箟錛屼笉浼氬獎鍝嶅叾浠栨ā鍧椼?br>浠栦滑閮芥斁鍦ㄦ暟鎹尯錛屼絾鏄紪璇戝櫒瀵逛粬浠殑鍛藉悕鏄笉鍚岀殑銆?br>濡傛灉瑕佷嬌鍙橀噺鍦ㄥ叾浠栨ā鍧椾篃鏈夋剰涔夌殑璇濓紝闇瑕佷嬌鐢╡xtern鍏抽敭瀛椼?br>
struct s1
{
int i: 8;
int j: 4;
int a: 3;
double b;
};
struct s2
{
int i: 8;
int j: 4;
double b;
int a:3;
};
printf("sizeof(s1)= %d\n", sizeof(s1));
printf("sizeof(s2)= %d\n", sizeof(s2));
result: 16, 24
絎竴涓猻truct s1
{
int i: 8;
int j: 4;
int a: 3;
double b;
};
鐞?
璁轟笂鏄繖鏍風殑錛岄鍏堟槸i鍦ㄧ浉瀵?鐨勪綅緗紝鍗?浣嶄竴涓瓧鑺傦紝鐒跺悗錛宩灝卞湪鐩稿涓涓瓧鑺傜殑浣嶇疆錛岀敱浜庝竴涓綅緗殑瀛楄妭鏁版槸4浣嶇殑鍊嶆暟錛屽洜姝や笉鐢ㄥ榻愶紝灝辨斁鍦ㄩ偅閲?
浜嗭紝鐒跺悗鏄痑錛岃鍦?浣嶇殑鍊嶆暟鍏崇郴鐨勪綅緗笂錛屽洜姝よ縐諱竴浣嶏紝鍦?5浣嶇殑浣嶇疆涓婃斁涓嬶紝鐩墠鎬誨叡鏄?8浣嶏紝鎶樼畻榪囨潵鏄?瀛楄妭2浣嶇殑鏍峰瓙錛岀敱浜巇ouble鏄?
瀛楄妭鐨勶紝鍥犳瑕佸湪鐩稿0瑕佹槸8涓瓧鑺傜殑浣嶇疆涓婃斁涓嬶紝鍥犳浠?8浣嶅紑濮嬪埌8涓瓧鑺備箣闂寸殑浣嶇疆琚拷鐣ワ紝鐩存帴鏀懼湪8瀛楄妭鐨勪綅緗簡錛屽洜姝わ紝鎬誨叡鏄?6瀛楄妭銆?br>
絎簩涓渶鍚庝細瀵圭収鏄笉鏄粨鏋勪綋鍐呮渶澶ф暟鎹殑鍊嶆暟錛屼笉鏄殑璇濓紝浼氳ˉ鎴愭槸鏈澶ф暟鎹殑鍊嶆暟