锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久成人精品一区二区三区,国产精品一二一区,一本一本a久久http://m.shnenglu.com/softko/娣¤杽鍚嶅埄,淇韓鍏繪?/description>zh-cnTue, 30 Sep 2025 02:19:26 GMTTue, 30 Sep 2025 02:19:26 GMT60鏁扮粍涓庢寚閽堢殑鍖哄埆 http://m.shnenglu.com/softko/archive/2013/02/19/197934.htmleircQeircQTue, 19 Feb 2013 05:33:00 GMThttp://m.shnenglu.com/softko/archive/2013/02/19/197934.htmlhttp://m.shnenglu.com/softko/comments/197934.htmlhttp://m.shnenglu.com/softko/archive/2013/02/19/197934.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/197934.htmlhttp://m.shnenglu.com/softko/services/trackbacks/197934.html

C璇█涓浜庝笅闈㈢殑涓ょ鎯呭喌錛屾槸鍚︾浉鍚屽憿錛?/p>

char a[] = "abcdefg"錛?--------------1

char *p = "abcdefg";-----------------2

鍦ㄨ皥鍒拌繖浜涘尯鍒椂錛屽簲璇ュ厛璋堜竴涓嬭綆楁満涓鍙橀噺鏄浣曞瓨鍌ㄧ殑銆備粠緙栬瘧鍘熺悊涓垜浠煡閬擄紝瀵逛簬鎵鏈夌殑鍙橀噺浠栭兘浼氬獎灝勫埌涓涓鍙瘋〃涓備負浜嗙畝鍖栵紝榪欓噷緇欏嚭涓縐嶆渶綆鍗曠殑渚夸簬鐞嗚В鐨勭鍙瘋〃錛?/p>

a

0xffaa

p

0xffcc

琛? 涓涓畝鍗曠殑絎﹀彿琛ㄧず渚?/p>

浠ヤ笂琛ㄦ牸涓璦浠h〃涓涓彉閲忥紝0xffaa鍒欎負鍙橀噺a鐨勫唴瀹圭殑瀛樺偍鍦板潃錛沺浠h〃鍙︿竴涓彉閲忥紝0xffcc涓哄彉閲弍鐨勫唴瀹圭殑瀛樺偍鍦板潃銆傚浜庢暟緇勫瀷鐨勫彉閲忓拰鎸囬拡鍨嬬殑鍙橀噺錛屽叾鍦板潃浠h〃鐨勫惈涔変笉鍚屻?/p>

瀵逛簬鏁扮粍a:

榪欎釜0xffaa鍦板潃灝辨槸鍏跺瓨鏀炬暟緇勫唴瀹圭殑棣栧湴鍧浜嗐傚浜巃[i]鐨勫紩鐢ㄦ楠ゅ涓嬶細

姝ラ涓銆佸彇鍑篿鐨勫鹼紝灝嗕粬涓?xffaa鐩稿姞錛?/p>

姝ラ浜屻佸彇鍑轟負(0xffaa+i)涓殑鍐呭銆?/p>

瀵逛簬鎸囬拡p:

榪欎釜0xffcc鍦板潃灝辨槸涓瓨鏀劇殑涓嶆槸瀛楃涓茬殑鍐呭錛岃屾槸涓涓湴鍧錛岃繖涓湴鍧鎵嶆槸瀛楃涓茬殑棣栧湴鍧錛屽p[i]鎴栬呯敤鎸囬拡琛ㄧず*(p+i)鐨勫簲鐢ㄦ楠ゅ涓嬶細

姝ラ涓銆佸彇鍑?xffcc鍦板潃涓殑鍐呭錛屼緥濡備負0xffdf;

姝ラ浜屻佸彇鍑哄湴鍧0xffdf涓殑鍐呭銆?/p>

鏁扮粍鍜屾寚閽堢殑瀵規瘮濡備笅鍥撅細

涓嬮潰鏄湪VC6.0涓嬩綔鐨勪竴涓瘯楠岋紝閫氳繃榪欎釜璇曢獙澶у鍙互鐪嬪埌錛岃櫧鐒跺悓榪嘯]鍜岄氳繃*寮曠敤閮戒竴鏍鳳紝浣嗗湪鍐呴儴澶勭悊鐨勬柟娉曟槸涓嶄竴鏍風殑銆?/p>

#include "stdafx.h"

#include "stdio.h"

int main(int argc, char* argv[])

{

     int a[3]={1,2,3};

     int *p =a;

     printf("a:%d,&a:%d,a[0]:%d,*a:%d,p:%d,&p:%d,*p:%d,p[0]:%d",a,&a,

a[0],*a,p,&p,*p,p[0]);

     return 0;

}

杈撳嚭緇撴灉錛?/p>

a:1310580,&a:1310580,a[0]:1,*a:1,p:1310580,&p:1310576,*p:1,p[0]:1銆?/p>

鐢變笂闈㈢殑鍒嗘瀽鍙煡錛屽鏋滃湪涓涓枃浠朵腑瀹氫箟浜嗕竴涓暟緇刬nt maychar[100],閭d箞涓嬮潰鐨勫0鏄庡氨鏄畬鍏ㄩ敊璇殑銆?/p>

extern int *maychar;

榪欐牱鐨勮瘽錛屽湪寮曠敤鏃朵粬灝變細鎸夌収鎸囬拡鐨勬柟娉曟潵寮曠敤鏁扮粍銆傛紜殑澹版槑搴旇鏄痚xter int maychar[];榪欓噷鏁扮粍鐨勫ぇ灝忓茍涓嶉噸瑕併備笅闈㈠皢鎸囬拡涓庢暟緇勭殑鍖哄埆鐢ㄨ〃鏍肩殑褰㈠紡鍒楀嚭濡備笅錛?/p>

鎸囬拡

鏁扮粍

淇濆瓨鏁版嵁鐨勫湴鍧

淇濆瓨鏁版嵁

闂存帴璁塊棶鏁版嵁

鐩存帴璁塊棶

閫氬父鐢ㄤ簬鍔ㄦ佹暟鎹粨鏋?/p>

閫氬父鐢ㄤ簬瀛樺偍鍥哄畾鏁扮洰鏁版嵁綾誨瀷鐩稿悓鐨勫厓绱?/p>

鐩稿叧鎿嶄綔malloc(),free()絳?/p>

闅愬紡鍒嗛厤鍜屽垹闄?/p>

鍚屽父鎸囧悜鍖垮悕鏁版嵁

鑷韓鍗充負鏁版嵁鍚?/p>

琛? 鎸囬拡涓庢暟緇勭殑鍖哄埆

榪樿鎻愰啋涓鐐圭殑灝辨槸錛?/p>

char a[] = "abcdefg"錛?--------------鏁扮粍鍐呭鑳戒慨鏀?瀛楃鏁扮粍)

char *p = "abcdefg";-----------------鍐呭涓嶈兘淇敼錛堝瓧絎︿覆甯擱噺錛?/p>

鍦ˋNSI C涓紝鍒濆鍖栨寚閽堟槸鎵鍒涘緩鐨勫瓧絎︿覆鏃跺父閲忥紝琚畾涔変負鍙錛屽鏋滆瘯鍥鵑氳繃鎸囬拡淇敼榪欎釜瀛楃涓茬殑鍊鹼紝紼嬪簭灝變細鍑虹幇涓哄畾涔夌殑琛屼負銆?/p>

eircQ 2013-02-19 13:33 鍙戣〃璇勮
]]>
鏂扮殑涓騫達紝鏂扮殑涓澶╋紝鏂扮殑姘旇薄銆傦紥錛愶紤錛掞紝鎴戞潵涔熴?/title><link>http://m.shnenglu.com/softko/archive/2012/01/20/164390.html</link><dc:creator>eircQ</dc:creator><author>eircQ</author><pubDate>Thu, 19 Jan 2012 17:38:00 GMT</pubDate><guid>http://m.shnenglu.com/softko/archive/2012/01/20/164390.html</guid><wfw:comment>http://m.shnenglu.com/softko/comments/164390.html</wfw:comment><comments>http://m.shnenglu.com/softko/archive/2012/01/20/164390.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/softko/comments/commentRss/164390.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/softko/services/trackbacks/164390.html</trackback:ping><description><![CDATA[<br />      鍙互璇?012鏄漿鎶樼殑涓騫淬?br /><br />      鎴戜篃寮濮嬫濊冭嚜宸便?br />      鍏徃鍦ㄨ漿鍨嬶紝鎴戜篃鍦ㄨ漿鍙樸?br />      <br />      2012騫寸殑鐩爣錛?br />      涓.鎺у埗鑷繁銆?br />銆銆鍋氳嚜宸卞鑷繁鎸佺畫鍙楃泭鐨勪簨鎯呫?br />銆銆<br />銆銆浜?涓嶆柇鍦板涔犮傚涔犲墠浜虹殑緇忛獙錛岄伩鍏嶅墠浜虹殑閿欒銆?br />      鐪嬩功錛堝涔犳妧鑳斤紝瀛︿範鍘嗗彶錛夛紝瑙傚療鍛ㄥ洿鐨勪漢錛屾濊冦?br /><br />      涓?璁よ瘑鑷繁銆傚姫鍔涘幓鍋氬ソ鑷繁銆傚緩璁捐嚜宸辯殑鍘熷垯銆傦紙姣忓ぉ鎬濊冿級<br />      <br />      鍥?鏇村姞嬋鎯呭湴鍘葷儹鐖辯敓媧伙紝鍘昏瀺鍏ュ埌鐢熸椿錛屽伐浣滀腑銆傜湡璇氬寰呮瘡涓涓漢銆?br /><br /><br /><br /><img src ="http://m.shnenglu.com/softko/aggbug/164390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/softko/" target="_blank">eircQ</a> 2012-01-20 01:38 <a href="http://m.shnenglu.com/softko/archive/2012/01/20/164390.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍚勭鎺掑簭綆楁硶浠嬬粛http://m.shnenglu.com/softko/archive/2011/06/17/148828.htmleircQeircQFri, 17 Jun 2011 00:09:00 GMThttp://m.shnenglu.com/softko/archive/2011/06/17/148828.htmlhttp://m.shnenglu.com/softko/comments/148828.htmlhttp://m.shnenglu.com/softko/archive/2011/06/17/148828.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/148828.htmlhttp://m.shnenglu.com/softko/services/trackbacks/148828.html鎺掑簭綆楁硶鏄竴縐嶅熀鏈茍涓斿父鐢ㄧ殑綆楁硶銆傜敱浜庡疄闄呭伐浣滀腑澶勭悊鐨勬暟閲忓法澶э紝鎵浠ユ帓搴忕畻娉曞綆楁硶鏈韓鐨勯熷害瑕佹眰寰堥珮銆?br />
  鑰屼竴鑸垜浠墍璋撶殑綆楁硶鐨勬ц兘涓昏鏄寚綆楁硶鐨勫鏉傚害錛屼竴鑸敤O鏂規硶鏉ヨ〃紺恒傚湪鍚庨潰鎴戝皢緇欏嚭璇︾粏鐨勮鏄庛?br />
  瀵逛簬鎺掑簭鐨勭畻娉曟垜鎯沖厛鍋氫竴鐐圭畝鍗曠殑浠嬬粛錛屼篃鏄粰榪欑瘒鏂囩珷鐞嗕竴涓彁綰層?br />
  鎴戝皢鎸夌収綆楁硶鐨勫鏉傚害錛屼粠綆鍗曞埌闅炬潵鍒嗘瀽綆楁硶銆?br />
  絎竴閮ㄥ垎鏄畝鍗曟帓搴忕畻娉曪紝鍚庨潰浣犲皢鐪嬪埌浠栦滑鐨勫叡鍚岀偣鏄畻娉曞鏉傚害涓篛(N*N)錛堝洜涓烘病鏈変嬌鐢╳ord,鎵浠ユ棤娉曟墦鍑轟笂鏍囧拰涓嬫爣錛夈?br />
  絎簩閮ㄥ垎鏄珮綰ф帓搴忕畻娉曪紝澶嶆潅搴︿負O(Log2(N))銆傝繖閲屾垜浠彧浠嬬粛涓縐嶇畻娉曘傚彟澶栬繕鏈夊嚑縐嶇畻娉曞洜涓烘秹鍙婃爲涓庡爢鐨勬蹇碉紝鎵浠ヨ繖閲屼笉浜庤璁恒?br />
  絎笁閮ㄥ垎綾諱技鍔ㄨ剳絳嬨傝繖閲岀殑涓ょ綆楁硶騫朵笉鏄渶濂界殑錛堢敋鑷蟲湁鏈鎱㈢殑錛夛紝浣嗘槸綆楁硶鏈韓姣旇緝濂囩壒錛屽煎緱鍙傝冿紙緙栫▼鐨勮搴︼級銆傚悓鏃朵篃鍙互璁╂垜浠粠鍙﹀鐨勮搴︽潵璁よ瘑榪欎釜闂銆?br />
  絎洓閮ㄥ垎鏄垜閫佺粰澶у鐨勪竴涓鍚庣殑鐢滅偣——涓涓熀浜庢ā鏉跨殑閫氱敤蹇熸帓搴忋傜敱浜庢槸妯℃澘鍑芥暟鍙互瀵逛換浣曟暟鎹被鍨嬫帓搴忥紙鎶辨瓑錛岄噷闈嬌鐢ㄤ簡涓浜涜鍧涗笓瀹剁殑鍛㈢О錛夈?


  鐜板湪錛岃鎴戜滑寮濮嬪惂錛?
  
涓銆佺畝鍗曟帓搴忕畻娉?
鐢變簬紼嬪簭姣旇緝綆鍗曪紝鎵浠ユ病鏈夊姞浠涔堟敞閲娿傛墍鏈夌殑紼嬪簭閮界粰鍑轟簡瀹屾暣鐨勮繍琛屼唬鐮侊紝騫跺湪鎴戠殑VC鐜涓嬭繍琛岄氳繃銆傚洜涓烘病鏈夋秹鍙奙FC鍜學INDOWS鐨勫唴瀹癸紝鎵浠ュ湪BORLAND C++鐨勫鉤鍙頒笂搴旇涔熶笉浼氭湁浠涔堥棶棰樼殑銆傚湪浠g爜鐨勫悗闈㈢粰鍑轟簡榪愯榪囩▼紺烘剰錛屽笇鏈涘鐞嗚В鏈夊府鍔┿?

1.鍐掓場娉曪細
榪欐槸鏈鍘熷錛屼篃鏄紬鎵鍛ㄧ煡鐨勬渶鎱㈢殑綆楁硶浜嗐備粬鐨勫悕瀛楃殑鐢辨潵鍥犱負瀹冪殑宸ヤ綔鐪嬫潵璞℃槸鍐掓場錛?
#include <iostream.h>

void BubbleSort(int* pData,int Count)
{
  int iTemp;
  for(int i=1;i<Count;i++)
  {
    for(int j=Count-1;j>=i;j--)
    {
      if(pData[j]<pData[j-1])
      {
        iTemp = pData[j-1];
        pData[j-1] = pData[j];
        pData[j] = iTemp;
      }
    }
  }
}

void main()
{
  int data[] = {10,9,8,7,6,5,4};
  BubbleSort(data,7);
  for (int i=0;i<7;i++)
    cout<<data[i]<<" ";
  cout<<"\n";
}

鍊掑簭(鏈緋熸儏鍐?
絎竴杞細10,9,8,7->10,9,7,8->10,7,9,8->7,10,9,8(浜ゆ崲3嬈?
絎簩杞細7,10,9,8->7,10,8,9->7,8,10,9(浜ゆ崲2嬈?
絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?

鍏朵粬錛?
絎竴杞細8,10,7,9->8,10,7,9->8,7,10,9->7,8,10,9(浜ゆ崲2嬈?
絎簩杞細7,8,10,9->7,8,10,9->7,8,10,9(浜ゆ崲0嬈?
絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?

涓婇潰鎴戜滑緇欏嚭浜嗙▼搴忔錛岀幇鍦ㄦ垜浠垎鏋愬畠錛氳繖閲岋紝褰卞搷鎴戜滑綆楁硶鎬ц兘鐨勪富瑕侀儴鍒嗘槸寰幆鍜屼氦鎹紝 鏄劇劧錛屾鏁拌秺澶氾紝鎬ц兘灝辮秺宸備粠涓婇潰鐨勭▼搴忔垜浠彲浠ョ湅鍑哄驚鐜殑嬈℃暟鏄浐瀹氱殑錛屼負1+2+...+n-1銆?
鍐欐垚鍏紡灝辨槸1/2*(n-1)*n銆?
鐜板湪娉ㄦ剰錛屾垜浠粰鍑篛鏂規硶鐨勫畾涔夛細

  鑻ュ瓨鍦ㄤ竴甯擱噺K鍜岃搗鐐筺0錛屼嬌褰搉>=n0鏃訛紝鏈塮(n)<=K*g(n),鍒檉(n) = O(g(n))銆傦紙鍛靛懙錛屼笉瑕佽娌″濂芥暟瀛﹀憖錛屽浜庣紪紼嬫暟瀛︽槸闈炲父閲嶈鐨勶紒錛侊紒錛?

鐜板湪鎴戜滑鏉ョ湅1/2*(n-1)*n錛屽綋K=1/2錛宯0=1錛実(n)=n*n鏃訛紝1/2*(n-1)*n<=1/2*n*n=K*g(n)銆傛墍浠?n)=O(g(n))=O(n*n)銆傛墍浠ユ垜浠▼搴忓驚鐜殑澶嶆潅搴︿負O(n*n)銆?
鍐嶇湅浜ゆ崲銆備粠紼嬪簭鍚庨潰鎵璺熺殑琛ㄥ彲浠ョ湅鍒幫紝涓ょ鎯呭喌鐨勫驚鐜浉鍚岋紝浜ゆ崲涓嶅悓銆傚叾瀹炰氦鎹㈡湰韜悓鏁版嵁婧愮殑鏈夊簭紼嬪害鏈夋瀬澶х殑鍏崇郴錛屽綋鏁版嵁澶勪簬鍊掑簭鐨勬儏鍐墊椂錛?浜ゆ崲嬈℃暟鍚屽驚鐜竴鏍鳳紙姣忔寰幆鍒ゆ柇閮戒細浜ゆ崲錛夛紝澶嶆潅搴︿負O(n*n)銆傚綋鏁版嵁涓烘搴忥紝灝嗕笉浼氭湁浜ゆ崲銆傚鏉傚害涓篛(0)銆備貢搴忔椂澶勪簬涓棿鐘舵併傛鏄敱浜庤繖鏍?鐨勫師鍥狅紝鎴戜滑閫氬父閮芥槸閫氳繃寰幆嬈℃暟鏉ュ姣旂畻娉曘?


2.浜ゆ崲娉曪細
浜ゆ崲娉曠殑紼嬪簭鏈娓呮櫚綆鍗曪紝姣忔鐢ㄥ綋鍓嶇殑鍏冪礌涓涓鐨勫悓鍏跺悗鐨勫厓绱犳瘮杈冨茍浜ゆ崲銆?
#include <iostream.h>
void ExchangeSort(int* pData,int Count)
{
  int iTemp;
  for(int i=0;i<Count-1;i++)
  {
    for(int j=i+1;j<Count;j++)
    {
      if(pData[j]<pData[i])
      {
        iTemp = pData[i];
        pData[i] = pData[j];
        pData[j] = iTemp;
      }
    }
  }
}

void main()
{
  int data[] = {10,9,8,7,6,5,4};
  ExchangeSort(data,7);
  for (int i=0;i<7;i++)
    cout<<data[i]<<" ";
  cout<<"\n";
}
鍊掑簭(鏈緋熸儏鍐?
絎竴杞細10,9,8,7->9,10,8,7->8,10,9,7->7,10,9,8(浜ゆ崲3嬈?
絎簩杞細7,10,9,8->7,9,10,8->7,8,10,9(浜ゆ崲2嬈?
絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?

鍏朵粬錛?
絎竴杞細8,10,7,9->8,10,7,9->7,10,8,9->7,10,8,9(浜ゆ崲1嬈?
絎簩杞細7,10,8,9->7,8,10,9->7,8,10,9(浜ゆ崲1嬈?
絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?

浠庤繍琛岀殑琛ㄦ牸鏉ョ湅錛屼氦鎹㈠嚑涔庡拰鍐掓場涓鏍風碂銆備簨瀹炵‘瀹炲姝ゃ傚驚鐜鏁板拰鍐掓場涓鏍蜂篃鏄?/2*(n-1)*n錛屾墍浠ョ畻娉曠殑澶嶆潅搴︿粛鐒舵槸O(n*n)銆傜敱浜庢垜浠棤娉曠粰鍑烘墍鏈夌殑鎯呭喌錛屾墍浠ュ彧鑳界洿鎺ュ憡璇夊ぇ瀹朵粬浠湪浜ゆ崲涓婇潰涔熸槸涓鏍風殑緋熺硶錛堝湪鏌愪簺鎯呭喌涓嬬◢濂斤紝鍦ㄦ煇浜涙儏鍐典笅紼嶅樊錛夈?

3.閫夋嫨娉曪細
鐜板湪鎴戜滑緇堜簬鍙互鐪嬪埌涓鐐瑰笇鏈涳細閫夋嫨娉曪紝榪欑鏂規硶鎻愰珮浜嗕竴鐐規ц兘錛堟煇浜涙儏鍐典笅錛?
榪欑鏂規硶綾諱技鎴戜滑浜轟負鐨勬帓搴忎範鎯細浠庢暟鎹腑閫夋嫨鏈灝忕殑鍚岀涓涓間氦鎹紝鍦ㄤ粠鐪佷笅鐨勯儴鍒嗕腑閫夋嫨鏈灝忕殑涓庣浜屼釜浜ゆ崲錛岃繖鏍峰線澶嶄笅鍘匯?
#include <iostream.h>
void SelectSort(int* pData,int Count)
{
  int iTemp;
  int iPos;
  for(int i=0;i<Count-1;i++)
  {
    iTemp = pData[i];
    iPos = i;
    for(int j=i+1;j<Count;j++)
    {
      if(pData[j]<iTemp)
      {
        iTemp = pData[j];
        iPos = j;
      }
    }
    pData[iPos] = pData[i];
    pData[i] = iTemp;
  }
}

void main()
{
  int data[] = {10,9,8,7,6,5,4};
  SelectSort(data,7);
  for (int i=0;i<7;i++)
    cout<<data[i]<<" ";
  cout<<"\n";
}
鍊掑簭(鏈緋熸儏鍐?
絎竴杞細10,9,8,7->(iTemp=9)10,9,8,7->(iTemp=8)10,9,8,7->(iTemp=7)7,9,8,10(浜ゆ崲1嬈?
絎簩杞細7,9,8,10->7,9,8,10(iTemp=8)->(iTemp=8)7,8,9,10(浜ゆ崲1嬈?
絎竴杞細7,8,9,10->(iTemp=9)7,8,9,10(浜ゆ崲0嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?

鍏朵粬錛?
絎竴杞細8,10,7,9->(iTemp=8)8,10,7,9->(iTemp=7)8,10,7,9->(iTemp=7)7,10,8,9(浜ゆ崲1嬈?
絎簩杞細7,10,8,9->(iTemp=8)7,10,8,9->(iTemp=8)7,8,10,9(浜ゆ崲1嬈?
絎竴杞細7,8,10,9->(iTemp=9)7,8,9,10(浜ゆ崲1嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?
閬楁喚鐨勬槸綆楁硶闇瑕佺殑寰幆嬈℃暟渚濈劧鏄?/2*(n-1)*n銆傛墍浠ョ畻娉曞鏉傚害涓篛(n*n)銆?
鎴戜滑鏉ョ湅浠栫殑浜ゆ崲銆傜敱浜庢瘡嬈″灞傚驚鐜彧浜х敓涓嬈′氦鎹紙鍙湁涓涓渶灝忓鹼級銆傛墍浠(n)<=n
鎵浠ユ垜浠湁f(n)=O(n)銆?br />鎵浠ワ紝鍦ㄦ暟鎹緝涔辯殑鏃跺欙紝鍙互鍑忓皯涓瀹氱殑浜ゆ崲嬈℃暟銆?


4.鎻掑叆娉曪細
鎻掑叆娉曡緝涓哄鏉傦紝瀹冪殑鍩烘湰宸ヤ綔鍘熺悊鏄娊鍑虹墝錛屽湪鍓嶉潰鐨勭墝涓鎵劇浉搴旂殑浣嶇疆鎻掑叆錛岀劧鍚庣戶緇笅涓寮?
#include <iostream.h>
void InsertSort(int* pData,int Count)
{
  int iTemp;
  int iPos;
  for(int i=1;i<Count;i++)
  {
    iTemp = pData[i];
    iPos = i-1;
    while((iPos>=0) && (iTemp<pData[iPos]))
    {
      pData[iPos+1] = pData[iPos];
      iPos--;
    }
    pData[iPos+1] = iTemp;
  }
}

void main()
{
  int data[] = {10,9,8,7,6,5,4};
  InsertSort(data,7);
  for (int i=0;i<7;i++)
    cout<<data[i]<<" ";
  cout<<"\n";
}

鍊掑簭(鏈緋熸儏鍐?
絎竴杞細10,9,8,7->9,10,8,7(浜ゆ崲1嬈?(寰幆1嬈?
絎簩杞細9,10,8,7->8,9,10,7(浜ゆ崲1嬈?(寰幆2嬈?
絎竴杞細8,9,10,7->7,8,9,10(浜ゆ崲1嬈?(寰幆3嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?

鍏朵粬錛?
絎竴杞細8,10,7,9->8,10,7,9(浜ゆ崲0嬈?(寰幆1嬈?
絎簩杞細8,10,7,9->7,8,10,9(浜ゆ崲1嬈?(寰幆2嬈?
絎竴杞細7,8,10,9->7,8,9,10(浜ゆ崲1嬈?(寰幆1嬈?
寰幆嬈℃暟錛?嬈?
浜ゆ崲嬈℃暟錛?嬈?

涓婇潰緇撳熬鐨勮涓哄垎鏋愪簨瀹炰笂閫犳垚浜嗕竴縐嶅亣璞★紝璁╂垜浠涓鴻繖縐嶇畻娉曟槸綆鍗曠畻娉曚腑鏈濂界殑錛屽叾瀹炰笉鏄紝鍥犱負鍏跺驚鐜鏁拌櫧鐒跺茍涓嶅浐瀹氾紝鎴戜滑浠嶅彲浠ヤ嬌鐢∣鏂?娉曘備粠涓婇潰鐨勭粨鏋滃彲浠ョ湅鍑猴紝寰幆鐨勬鏁癴(n)<= 1/2*n*(n-1)<=1/2*n*n銆傛墍浠ュ叾澶嶆潅搴︿粛涓篛(n*n)錛堣繖閲岃鏄庝竴涓嬶紝鍏跺疄濡傛灉涓嶆槸涓轟簡灞曠ず榪欎簺綆鍗曟帓搴忕殑涓嶅悓錛屼氦鎹㈡鏁頒粛鐒?鍙互榪欐牱鎺ㄥ錛夈傜幇鍦ㄧ湅浜ゆ崲錛屼粠澶栬涓婄湅錛屼氦鎹㈡鏁版槸O(n)錛堟帹瀵肩被浼奸夋嫨娉曪級錛屼絾鎴戜滑姣忔瑕佽繘琛屼笌鍐呭眰寰幆鐩稿悓嬈℃暟鐨?#8216;=’鎿嶄綔銆傛甯哥殑涓嬈′氦鎹㈡垜浠?闇瑕佷笁嬈?#8216;=’錛岃岃繖閲屾樉鐒跺浜嗕竴浜涳紝鎵浠ユ垜浠氮璐逛簡鏃墮棿銆?

鏈緇堬紝鎴戜釜浜鴻涓猴紝鍦ㄧ畝鍗曟帓搴忕畻娉曚腑錛岄夋嫨娉曟槸鏈濂界殑銆?


浜屻侀珮綰ф帓搴忕畻娉曪細
楂樼駭鎺掑簭綆楁硶涓垜浠皢鍙粙緇嶈繖涓縐嶏紝鍚屾椂涔熸槸鐩墠鎴戞墍鐭ラ亾錛堟垜鐪嬭繃鐨勮祫鏂欎腑錛夌殑鏈蹇殑銆?
瀹冪殑宸ヤ綔鐪嬭搗鏉ヤ粛鐒惰薄涓涓簩鍙夋爲銆傞鍏堟垜浠夋嫨涓涓腑闂村糾iddle紼嬪簭涓垜浠嬌鐢ㄦ暟緇勪腑闂村鹼紝鐒跺悗鎶婃瘮瀹冨皬鐨勬斁鍦ㄥ乏杈癸紝澶х殑鏀懼湪鍙寵竟錛堝叿浣撶殑瀹炵幇鏄粠涓よ竟鎵撅紝鎵懼埌涓瀵瑰悗浜ゆ崲錛夈傜劧鍚庡涓よ竟鍒嗗埆浣跨敤榪欎釜榪囩▼錛堟渶瀹規槗鐨勬柟娉?#8212;—閫掑綊錛夈?

1.蹇熸帓搴忥細
#include <iostream.h>

void run(int* pData,int left,int right)
{
  int i,j;
  int middle,iTemp;
  i = left;
  j = right;
  middle = pData[(left+right)/2]; //姹備腑闂村?
  do{
    while((pData[i]<middle) && (i<right))//浠庡乏鎵弿澶т簬涓肩殑鏁?
      i++;     
    while((pData[j]>middle) && (j>left))//浠庡彸鎵弿澶т簬涓肩殑鏁?
      j--;
    if(i<=j)//鎵懼埌浜嗕竴瀵瑰?
    {
      //浜ゆ崲
      iTemp = pData[i];
      pData[i] = pData[j];
      pData[j] = iTemp;
      i++;
      j--;
    }
  }while(i<=j);//濡傛灉涓よ竟鎵弿鐨勪笅鏍囦氦閿欙紝灝卞仠姝紙瀹屾垚涓嬈★級

  //褰撳乏杈歸儴鍒嗘湁鍊?left<j)錛岄掑綊宸﹀崐杈?
  if(left<j)
    run(pData,left,j);
  //褰撳彸杈歸儴鍒嗘湁鍊?right>i)錛岄掑綊鍙沖崐杈?
  if(right>i)
    run(pData,i,right);
}

void QuickSort(int* pData,int Count)
{
  run(pData,0,Count-1);
}

void main()
{
  int data[] = {10,9,8,7,6,5,4};
  QuickSort(data,7);
  for (int i=0;i<7;i++)
    cout<<data[i]<<" ";
  cout<<"\n";
}

榪欓噷鎴戞病鏈夌粰鍑鴻涓虹殑鍒嗘瀽錛屽洜涓鴻繖涓緢綆鍗曪紝鎴戜滑鐩存帴鏉ュ垎鏋愮畻娉曪細棣栧厛鎴戜滑鑰冭檻鏈鐞嗘兂鐨勬儏鍐?
1.鏁扮粍鐨勫ぇ灝忔槸2鐨勫箓錛岃繖鏍峰垎涓嬪幓濮嬬粓鍙互琚?鏁撮櫎銆傚亣璁句負2鐨刱嬈℃柟錛屽嵆k=log2(n)銆?
2.姣忔鎴戜滑閫夋嫨鐨勫煎垰濂芥槸涓棿鍊鹼紝榪欐牱錛屾暟緇勬墠鍙互琚瓑鍒嗐?
絎竴灞傞掑綊錛屽驚鐜痭嬈★紝絎簩灞傚驚鐜?*(n/2)......
鎵浠ュ叡鏈塶+2(n/2)+4(n/4)+...+n*(n/n) = n+n+n+...+n=k*n=log2(n)*n
鎵浠ョ畻娉曞鏉傚害涓篛(log2(n)*n)
鍏朵粬鐨勬儏鍐靛彧浼氭瘮榪欑鎯呭喌宸紝鏈宸殑鎯呭喌鏄瘡嬈¢夋嫨鍒扮殑middle閮芥槸鏈灝忓兼垨鏈澶у鹼紝閭d箞浠栧皢鍙樻垚浜ゆ崲娉曪紙鐢變簬浣跨敤浜嗛掑綊錛屾儏鍐墊洿緋燂級銆備絾鏄綘璁や負榪欑鎯呭喌鍙戠敓鐨勫嚑鐜囨湁澶氬ぇ錛燂紵鍛靛懙錛屼綘瀹屽叏涓嶅繀鎷呭績榪欎釜闂銆傚疄璺佃瘉鏄庯紝澶у鏁扮殑鎯呭喌錛屽揩閫熸帓搴忔繪槸鏈濂界殑銆?
濡傛灉浣犳媴蹇冭繖涓棶棰橈紝浣犲彲浠ヤ嬌鐢ㄥ爢鎺掑簭錛岃繖鏄竴縐嶇ǔ瀹氱殑O(log2(n)*n)綆楁硶錛屼絾鏄氬父鎯呭喌涓嬮熷害瑕佹參
浜庡揩閫熸帓搴忥紙鍥犱負瑕侀噸緇勫爢錛夈?

涓夈佸叾浠栨帓搴?
1.鍙屽悜鍐掓場錛?
閫氬父鐨勫啋娉℃槸鍗曞悜鐨勶紝鑰岃繖閲屾槸鍙屽悜鐨勶紝涔熷氨鏄榪樿榪涜鍙嶅悜鐨勫伐浣溿?
浠g爜鐪嬭搗鏉ュ鏉傦紝浠旂粏鐞嗕竴涓嬪氨鏄庣櫧浜嗭紝鏄竴涓潵鍥為渿鑽$殑鏂瑰紡銆?
鍐欒繖孌典唬鐮佺殑浣滆呰涓鴻繖鏍峰彲浠ュ湪鍐掓場鐨勫熀紜涓婂噺灝戜竴浜涗氦鎹紙鎴戜笉榪欎箞璁や負錛屼篃璁告垜閿欎簡錛夈?
鍙嶆鎴戣涓鴻繖鏄竴孌墊湁瓚g殑浠g爜錛屽煎緱涓鐪嬨?
#include <iostream.h>
void Bubble2Sort(int* pData,int Count)
{
  int iTemp;
  int left = 1;
  int right =Count -1;
  int t;
  do
  {
    //姝e悜鐨勯儴鍒?
    for(int i=right;i>=left;i--)
    {
      if(pData[i]<pData[i-1])
      {
        iTemp = pData[i];
        pData[i] = pData[i-1];
        pData[i-1] = iTemp;
        t = i;
      }
    }
    left = t+1;

    //鍙嶅悜鐨勯儴鍒?
    for(i=left;i<right+1;i++)
    {
      if(pData[i]<pData[i-1])
      {
        iTemp = pData[i];
        pData[i] = pData[i-1];
        pData[i-1] = iTemp;
        t = i;
      }
    }
    right = t-1;
  }while(left<=right);
}

void main()
{
  int data[] = {10,9,8,7,6,5,4};
  Bubble2Sort(data,7);
  for (int i=0;i<7;i++)
    cout<<data[i]<<" ";
  cout<<"\n";
}


2.SHELL鎺掑簭
榪欎釜鎺掑簭闈炲父澶嶆潅錛岀湅浜嗙▼搴忓氨鐭ラ亾浜嗐?
棣栧厛闇瑕佷竴涓掑噺鐨勬闀匡紝榪欓噷鎴戜滑浣跨敤鐨勬槸9銆?銆?銆?錛堟渶鍚庣殑姝ラ暱蹇呴』鏄?錛夈?
宸ヤ綔鍘熺悊鏄鍏堝鐩擱殧9-1涓厓绱犵殑鎵鏈夊唴瀹規帓搴忥紝鐒跺悗鍐嶄嬌鐢ㄥ悓鏍風殑鏂規硶瀵圭浉闅?-1涓厓绱犵殑鎺掑簭浠ユ綾繪帹銆?
#include <iostream.h>
void ShellSort(int* pData,int Count)
{
  int step[4];
  step[0] = 9;
  step[1] = 5;
  step[2] = 3;
  step[3] = 1;

  int iTemp;
  int k,s,w;
  for(int i=0;i<4;i++)
  {
    k = step[i];
    s = -k;
    for(int j=k;j<Count;j++)
    {
      iTemp = pData[j];
      w = j-k;//姹備笂step涓厓绱犵殑涓嬫爣
      if(s ==0)
      {
        s = -k;
        s++;
        pData[s] = iTemp;
      }
      while((iTemp<pData[w]) && (w>=0) && (w<=Count))
      {
        pData[w+k] = pData[w];
        w = w-k;
      }
      pData[w+k] = iTemp;
    }
  }
}

void main()
{
  int data[] = {10,9,8,7,6,5,4,3,2,1,-10,-1};
  ShellSort(data,12);
  for (int i=0;i<12;i++)
    cout<<data[i]<<" ";
  cout<<"\n";
}
鍛靛懙錛岀▼搴忕湅璧鋒潵鏈変簺澶寸柤銆備笉榪囦篃涓嶆槸寰堥毦錛屾妸s==0鐨勫潡鍘繪帀灝辮交鏉懼浜嗭紝榪欓噷鏄伩鍏嶄嬌鐢?姝ラ暱閫犳垚紼嬪簭寮傚父鑰屽啓鐨勪唬鐮併傝繖涓唬鐮佹垜璁や負寰堝煎緱涓鐪嬨?
榪欎釜綆楁硶鐨勫緱鍚嶆槸鍥犱負鍏跺彂鏄庤呯殑鍚嶅瓧D.L.SHELL銆備緷鐓у弬鑰冭祫鏂欎笂鐨勮娉曪細“鐢變簬澶嶆潅鐨勬暟瀛﹀師鍥犻伩鍏嶄嬌鐢?鐨勫箓嬈℃闀匡紝瀹冭兘闄嶄綆綆楁硶鏁堢巼銆?#8221;鍙﹀綆楁硶鐨勫鏉傚害涓簄鐨?.2嬈″箓銆傚悓鏍峰洜涓洪潪甯稿鏉傚茍“瓚呭嚭鏈功璁ㄨ鑼冨洿”鐨勫師鍥狅紙鎴戜篃涓嶇煡閬撹繃紼嬶級錛屾垜浠彧鏈夌粨鏋滀簡銆?

鏈鍚庯紝甯屾湜澶у鎰夊揩鐨勭紪紼嬨傛湁浠涔堟剰瑙侊紝緇欐垜鎻愬惂錛?

eircQ 2011-06-17 08:09 鍙戣〃璇勮
]]>
"娌℃湁鎵懼埌MFC80D.DLL"闂鐨勮В鍐蟲柟娉?杞?http://m.shnenglu.com/softko/archive/2011/05/17/146539.htmleircQeircQTue, 17 May 2011 01:31:00 GMThttp://m.shnenglu.com/softko/archive/2011/05/17/146539.htmlhttp://m.shnenglu.com/softko/comments/146539.htmlhttp://m.shnenglu.com/softko/archive/2011/05/17/146539.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/146539.htmlhttp://m.shnenglu.com/softko/services/trackbacks/146539.html  鐢╒S2005璋冭瘯涓涓▼搴忥紝鍑虹幇“娌℃湁鎵懼埌MFC80D.DLL……”鐨勬彁紺轟嬌紼嬪簭涓嶈兘榪愯錛屽垹鎺塂ebug鏂囦歡澶歸噸鏂扮紪璇戦棶棰樹緷鏃э紝涓婄綉鏌ヤ簡涓涓嬶紝鏈夎鏄痸s璺緞鐨勫師鍥狅紝鏈夎鏄痸s娌¤濂界殑鍘熷洜銆?/font>
  鍦?#8220;鍚姩璋冭瘯F5”鐨勫伐鍏峰浘鏍囧彸渚ф湁涓鏍?#8220;瑙e喅鏂規閰嶇疆”錛屾棤鎰忎腑灝嗗叾涓殑“Debug”鏀逛負“Release”錛孎5閫氳繃錛岃繍琛屾甯革紝欏圭洰鐩綍涓嬬敓鎴?#8220;Release”鏂囦歡澶癸紝Debug鏂瑰紡鐢熸垚鐨?#8220;Debug"鏂囦歡澶規槸鏃犵敤鐨勩傚師鍥犲涓嬶細
 

  DEBUG鍜孯ELEASE 鐗堟湰宸紓鍙婅皟璇曠浉鍏抽棶棰橈細
  I.         鍐呭瓨鍒嗛厤闂

  1.          鍙橀噺鏈垵濮嬪寲銆備笅闈㈢殑紼嬪簭鍦╠ebug涓繍琛岀殑寰堝ソ銆?/font>

      thing * search(thing * something)
        BOOL found;
        for(int i = 0; i < whatever.GetSize(); i++)
          {
          if(whatever[i]->field == something->field)
             { /* found it */
              found = TRUE;
              break;
             } /* found it */
           }
    if(found)
             return whatever[i];
    else
             return NULL;
  鑰屽湪release涓嵈涓嶈錛屽洜涓篸ebug涓細鑷姩緇欏彉閲忓垵濮嬪寲found=FALSE,鑰屽湪release鐗堜腑鍒欎笉浼氥傛墍浠ュ敖鍙兘鐨勭粰鍙橀噺銆佺被鎴栫粨鏋勫垵濮嬪寲銆?/font>

  2.            鏁版嵁婧㈠嚭鐨勯棶棰?nbsp;
        濡傦細char buffer[10];
             int counter;
       lstrcpy(buffer, "abcdefghik");

  鍦╠ebug鐗堜腑buffer鐨凬ULL瑕嗙洊浜哻ounter鐨勯珮浣嶏紝浣嗘槸闄ら潪counter>16M,浠涔堥棶棰樹篃娌℃湁銆備絾鏄湪release鐗堜腑錛宑ounter鍙兘琚斁鍦ㄥ瘎瀛樺櫒涓紝榪欐牱NULL灝辮鐩栦簡buffer涓嬮潰鐨勭┖闂達紝鍙兘灝辨槸鍑芥暟鐨勮繑鍥炲湴鍧錛岃繖灝嗗鑷碅CCESS ERROR銆?br />  3.         DEBUG鐗堝拰RELEASE鐗堢殑鍐呭瓨鍒嗛厤鏂瑰紡鏄笉鍚岀殑銆傚鏋滀綘鍦―EBUG鐗堜腑鐢寵   ele 涓?6*sizeof(DWORD)=24bytes,瀹為檯涓婂垎閰嶇粰浣犵殑鏄?2bytes錛坉ebug鐗堜互32bytes涓哄崟浣嶅垎閰嶏級錛岃屽湪release鐗堬紝鍒嗛厤緇欎綘鐨勫氨鏄?4bytes錛坮elease鐗堜互8bytes涓哄崟浣嶏級錛屾墍浠ュ湪debug鐗堜腑濡傛灉浣犲啓ele[6],鍙兘涓嶄細鏈変粈涔堥棶棰橈紝鑰屽湪release鐗堜腑錛屽氨鏈堿CCESS VIOLATE銆?/font>

  II.      ASSERT鍜孷ERIFY

  1.         ASSERT鍦≧elease鐗堟湰涓槸涓嶄細琚紪璇戠殑銆?/font>

  ASSERT瀹忔槸榪欐牱瀹氫箟鐨?/font>

        #ifdef _DEBUG
        #define ASSERT(x) if( (x) == 0) report_assert_failure()
        #else
        #define ASSERT(x)
        #endif
        瀹為檯涓婂鏉備竴浜涳紝浣嗘棤鍏崇揣瑕併傚亣濡備綘鍦ㄨ繖浜涜鍙ヤ腑鍔犱簡紼嬪簭涓繀欏昏鏈夌殑浠g爜
  姣斿

  ASSERT(pNewObj = new CMyClass);

  pNewObj->MyFunction();

  榪欑鏃跺橰elease鐗堟湰涓殑pNewObj涓嶄細鍒嗛厤鍒扮┖闂?/font>

  鎵浠ユ墽琛屽埌涓嬩竴涓鍙ョ殑鏃跺欑▼搴忎細鎶ヨ紼嬪簭鎵ц浜嗛潪娉曟搷浣滅殑閿欒銆傝繖鏃跺彲浠ョ敤VERIFY 錛?/font>

        #ifdef _DEBUG
        #define VERIFY(x) if( (x) == 0) report_assert_failure()
 
 
  #else

        #define VERIFY(x) (x)
        #endif
  榪欐牱鐨勮瘽錛屼唬鐮佸湪release鐗堜腑灝卞彲浠ユ墽琛屼簡銆?/font>

  III.   鍙傛暟闂錛?/font>

  鑷畾涔夋秷鎭殑澶勭悊鍑芥暟錛屽繀欏誨畾涔夊涓嬶細

  afx_msg LRESULT OnMyMessage(WPARAM, LPARAM);

  榪斿洖鍊煎繀欏繪槸HRESULT鍨嬶紝鍚﹀垯Debug浼氳繃錛岃孯elease鍑洪敊

  IV.  鍐呭瓨鍒嗛厤

  淇濊瘉鏁版嵁鍒涘緩鍜屾竻闄ょ殑緇熶竴鎬э細濡傛灉涓涓狣LL鎻愪緵涓涓兘澶熷垱寤烘暟鎹殑鍑芥暟錛岄偅涔堣繖涓狣LL鍚屾椂搴旇鎻愪緵涓涓嚱鏁伴攢姣佽繖浜涙暟鎹傛暟鎹殑鍒涘緩鍜屾竻闄ゅ簲璇ュ湪鍚屼竴涓眰嬈′笂銆?/font>

  V.     DLL鐨勭伨闅?/font>

  浜轟滑灝嗕笉鍚岀増鏈珼LL娣峰悎閫犳垚鐨勪笉涓鑷存у艦璞$殑縐頒負 “鍔ㄦ佽繛鎺ュ簱鐨勫湴鐙?#8220;(DLL Hell) 錛岀敋鑷沖井杞嚜宸變篃榪欎箞璇?http://msdn.microsoft.com/library/techart/dlldanger1.htm)銆?/font>

       濡傛灉浣犵殑紼嬪簭浣跨敤浣犺嚜宸辯殑DLL鏃惰娉ㄦ剰錛?/font>

  1.       涓嶈兘灝哾ebug鍜宺elease鐗堢殑DLL娣峰悎鍦ㄤ竴璧蜂嬌鐢ㄣ俤ebug閮芥槸debug鐗堬紝release鐗堥兘鏄痳elease鐗堛?/font>

  瑙e喅鍔炴硶鏄皢debug鍜宺elease鐨勭▼搴忓垎鍒斁鍦ㄤ富紼嬪簭鐨刣ebug鍜宺elease鐩綍涓?/font>


  2.         鍗冧竾涓嶈浠ヤ負闈欐佽繛鎺ュ簱浼氳В鍐抽棶棰橈紝閭e彧浼氫嬌鎯呭喌鏇寸碂緋曘?/font>

  VI.  RELEASE鏉夸腑鐨勮皟璇曪細

  1.         灝咥SSERT() 鏀逛負 VERIFY() 銆傛壘鍑哄畾涔夊湪"#ifdef _DEBUG"涓殑浠g爜錛屽鏋滃湪RELEASE鐗堟湰涓渶瑕佽繖浜涗唬鐮佽灝嗕粬浠Щ鍒板畾涔夊銆傛煡鎵綯RACE(...)涓唬鐮侊紝鍥犱負榪欎簺浠g爜鍦≧ELEASE涓篃涓嶈緙栬瘧銆傝璁ょ湡媯鏌ラ偅浜涘湪RELEASE涓渶瑕佺殑浠g爜鏄惁騫舵病鏈夎渚垮疁銆?/p>

  2.         鍙橀噺鐨勫垵濮嬪寲鎵甯︽潵鐨勪笉鍚岋紝鍦ㄤ笉鍚岀殑緋葷粺錛屾垨鏄湪DEBUG/RELEASE鐗堟湰闂撮兘瀛樺湪榪欐牱鐨勫樊寮傦紝鎵浠ヨ瀵瑰彉閲忚繘琛屽垵濮嬪寲銆?/p>

  3.         鏄惁鍦ㄧ紪璇戞椂宸茬粡鏈変簡璀﹀憡?璇峰皢璀﹀憡綰у埆璁劇疆涓?鎴?,鐒跺悗淇濊瘉鍦ㄧ紪璇戞椂娌℃湁璀﹀憡鍑虹幇.

  VII.   灝哖roject Settings" 涓?"C++/C " 欏圭洰涓嬩紭鍖栭夐」鏀逛負Disbale錛圖ebug錛夈傜紪璇戝櫒鐨勪紭鍖栧彲鑳藉鑷磋澶氭剰鎯充笉鍒扮殑閿欒錛岃鍙傝僪ttp://www.pgh.net/~newcomer/debug_release.htm

  1.         姝ゅ瀵筊ELEASE鐗堟湰鐨勮蔣浠朵篃鍙互榪涜璋冭瘯錛岃鍋氬涓嬫敼鍔細

  鍦?Project Settings" 涓?"C++/C " 欏圭洰涓嬭緗?"category" 涓?"General" 騫朵笖灝?Debug Info"璁劇疆涓?"Program Database"銆?/p>

  鍦?"Link"欏圭洰涓嬮変腑"Generate Debug Info"媯鏌ユ銆?/p>

  "Rebuild All"

  濡傛鍋氭硶浼氫駭鐢熺殑涓浜涢檺鍒訛細

  鏃犳硶鑾峰緱鍦∕FC DLL涓殑鍙橀噺鐨勫箋?/p>

  蹇呴』瀵硅杞歡鎵浣跨敤鐨勬墍鏈塂LL宸ョ▼閮借繘琛屾敼鍔ㄣ?/p>

  鍙︼細

  MS BUG錛歁S鐨勪竴浠芥妧鏈枃妗d腑琛ㄦ槑錛屽湪VC5涓浜嶥LL鐨?Maximize Speed"浼樺寲閫夐」騫舵湭琚畬鍏ㄦ敮鎸侊紝鍥犳榪欏皢浼氬紩璧峰唴瀛橀敊璇茍瀵艱嚧紼嬪簭宕╂簝銆?/p>

  2.         www.sysinternals.com鏈変竴涓▼搴廌ebugView錛岀敤鏉ユ崟鎹塐utputDebugString鐨勮緭鍑猴紝榪愯璧鋒潵鍚庯紙浼拌鏄嚜璁句負system debugger錛夊氨鍙互瑙傜湅鎵鏈夌▼搴忕殑OutputDebugString鐨勮緭鍑恒傛鍚庯紝浣犲彲浠ヨ劚紱籚C鏉ヨ繍琛屼綘鐨勭▼搴忓茍瑙傜湅璋冭瘯淇℃伅銆?/p>

  3.         鏈変竴涓彨Gimpel Lint鐨勯潤鎬佷唬鐮佹鏌ュ伐鍏鳳紝鎹姣旇緝濂界敤銆俬ttp://www.gimpel.com 涓嶈繃瑕佸寲$鐨勩?/p>

鍙傝冩枃鐚細

1)         http://www.cygnus-software.com/papers/release_debugging.html

2)        http://www.pgh.net/~newcomer/debug_release.htm



eircQ 2011-05-17 09:31 鍙戣〃璇勮
]]>
Hash 綆楁硶鍙婂叾搴旂敤(杞?http://m.shnenglu.com/softko/archive/2010/12/02/135309.htmleircQeircQThu, 02 Dec 2010 15:08:00 GMThttp://m.shnenglu.com/softko/archive/2010/12/02/135309.htmlhttp://m.shnenglu.com/softko/comments/135309.htmlhttp://m.shnenglu.com/softko/archive/2010/12/02/135309.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/135309.htmlhttp://m.shnenglu.com/softko/services/trackbacks/135309.html鏈燂細2004-07-30]鏉ユ簮錛?a target="_blank" style="color: rgb(65, 81, 154); text-decoration: none; ">CSDN  浣滆咃細[瀛椾綋錛?a style="color: rgb(65, 81, 154); text-decoration: none; ">澶?/a> 涓?/a> 灝?/a>]

--------------- 
浠涔堟槸 Hash 
Hash 鐨勯噸瑕佺壒鎬?nbsp;
Hash 鍑芥暟鐨勫疄鐜?nbsp;
涓昏鐨?Hash 綆楁硶 
Hash 綆楁硶鐨勫畨鍏ㄩ棶棰?nbsp;
Hash 綆楁硶鐨勫簲鐢?nbsp;
緇?璁?nbsp;
---------------


Hash錛屼竴鑸炕璇戝仛“鏁e垪”錛屼篃鏈夌洿鎺ラ煶璇戜負"鍝堝笇"鐨勶紝灝辨槸鎶婁換鎰忛暱搴︾殑杈撳叆錛堝張鍙仛棰勬槧灝勶紝 pre-image錛夛紝閫氳繃鏁e垪綆楁硶錛屽彉鎹㈡垚鍥哄畾闀垮害鐨勮緭鍑猴紝璇ヨ緭鍑哄氨鏄暎鍒楀箋傝繖縐嶈漿鎹㈡槸涓縐嶅帇緙╂槧灝勶紝涔熷氨鏄紝鏁e垪鍊肩殑絀洪棿閫氬父榪滃皬浜庤緭鍏ョ殑絀洪棿錛屼笉鍚岀殑杈撳叆鍙兘浼氭暎鍒楁垚鐩稿悓鐨勮緭鍑猴紝鑰屼笉鍙兘浠庢暎鍒楀兼潵鍞竴鐨勭‘瀹氳緭鍏ュ箋?/p>

鏁板琛ㄨ堪涓猴細h = H(M) 錛屽叾涓璈( )--鍗曞悜鏁e垪鍑芥暟錛孧--浠繪剰闀垮害鏄庢枃錛宧--鍥哄畾闀垮害鏁e垪鍊箋?/p>

 

鍦ㄤ俊鎭畨鍏ㄩ鍩熶腑搴旂敤鐨凥ash綆楁硶錛岃繕闇瑕佹弧瓚沖叾浠栧叧閿壒鎬э細

絎竴褰撶劧鏄崟鍚戞?one-way)錛屼粠棰勬槧灝勶紝鑳藉綆鍗曡繀閫熺殑寰楀埌鏁e垪鍊鹼紝鑰屽湪璁$畻涓婁笉鍙兘鏋勯犱竴涓鏄犲皠錛屼嬌鍏舵暎鍒楃粨鏋滅瓑浜庢煇涓壒瀹氱殑鏁e垪鍊鹼紝鍗蟲瀯閫犵浉搴旂殑M=H-1(h)涓嶅彲琛屻傝繖鏍鳳紝鏁e垪鍊煎氨鑳藉湪緇熻涓婂敮涓鐨勮〃寰佽緭鍏ュ鹼紝鍥犳錛屽瘑鐮佸涓婄殑 Hash 鍙堣縐頒負"娑堟伅鎽樿(message digest)"錛屽氨鏄姹傝兘鏂逛究鐨勫皢"娑堟伅"榪涜"鎽樿"錛屼絾鍦?鎽樿"涓棤娉曞緱鍒版瘮"鎽樿"鏈韓鏇村鐨勫叧浜?娑堟伅"鐨勪俊鎭?/p>

絎簩鏄姉鍐茬獊鎬?collision-resistant)錛屽嵆鍦ㄧ粺璁′笂鏃犳硶浜х敓2涓暎鍒楀肩浉鍚岀殑棰勬槧灝勩傜粰瀹歁錛岃綆椾笂鏃犳硶鎵懼埌M'錛屾弧瓚矵(M)=H(M') 錛屾璋撳急鎶楀啿紿佹э紱璁$畻涓婁篃闅句互瀵繪壘涓瀵逛換鎰忕殑M鍜孧'錛屼嬌婊¤凍H(M)=H(M') 錛屾璋撳己鎶楀啿紿佹с傝姹?寮烘姉鍐茬獊鎬?涓昏鏄負浜嗛槻鑼冩墍璋?鐢熸棩鏀誨嚮(birthday attack)"錛屽湪涓涓?0浜虹殑鍥綋涓紝浣犺兘鎵懼埌鍜屼綘鐢熸棩鐩稿悓鐨勪漢鐨勬鐜囨槸2.4%錛岃屽湪鍚屼竴鍥綋涓紝鏈?浜虹敓鏃ョ浉鍚岀殑姒傜巼鏄?1.7%銆傜被浼肩殑錛屽綋棰勬槧灝勭殑絀洪棿寰堝ぇ鐨勬儏鍐典笅錛岀畻娉曞繀欏繪湁瓚沖鐨勫己搴︽潵淇濊瘉涓嶈兘杞繪槗鎵懼埌"鐩稿悓鐢熸棩"鐨勪漢銆?/p>

絎笁鏄槧灝勫垎甯冨潎鍖鎬у拰宸垎鍒嗗竷鍧囧寑鎬э紝鏁e垪緇撴灉涓紝涓?0 鐨?bit 鍜屼負 1 鐨?bit 錛屽叾鎬繪暟搴旇澶ц嚧鐩哥瓑錛涜緭鍏ヤ腑涓涓?bit 鐨勫彉鍖栵紝鏁e垪緇撴灉涓皢鏈変竴鍗婁互涓婄殑 bit 鏀瑰彉錛岃繖鍙堝彨鍋?闆穿鏁堝簲(avalanche effect)"錛涜瀹炵幇浣挎暎鍒楃粨鏋滀腑鍑虹幇 1bit 鐨勫彉鍖栵紝鍒欒緭鍏ヤ腑鑷沖皯鏈変竴鍗婁互涓婄殑 bit 蹇呴』鍙戠敓鍙樺寲銆傚叾瀹炶川鏄繀欏諱嬌杈撳叆涓瘡涓涓?bit 鐨勪俊鎭紝灝介噺鍧囧寑鐨勫弽鏄犲埌杈撳嚭鐨勬瘡涓涓?bit 涓婂幓錛涜緭鍑轟腑鐨勬瘡涓涓?bit錛岄兘鏄緭鍏ヤ腑灝藉彲鑳藉 bit 鐨勪俊鎭竴璧蜂綔鐢ㄧ殑緇撴灉銆?/p>

 

Damgard 鍜?Merkle 瀹氫箟浜嗘墍璋?#8220;鍘嬬緝鍑芥暟(compression function)”錛屽氨鏄皢涓涓浐瀹氶暱搴﹁緭鍏ワ紝鍙樻崲鎴愯緝鐭殑鍥哄畾闀垮害鐨勮緭鍑猴紝榪欏瀵嗙爜瀛﹀疄璺典笂 Hash 鍑芥暟鐨勮璁′駭鐢熶簡寰堝ぇ鐨勫獎鍝嶃侶ash鍑芥暟灝辨槸琚璁′負鍩轟簬閫氳繃鐗瑰畾鍘嬬緝鍑芥暟鐨勪笉鏂噸澶?#8220;鍘嬬緝”杈撳叆鐨勫垎緇勫拰鍓嶄竴嬈″帇緙╁鐞嗙殑緇撴灉鐨勮繃紼嬶紝鐩村埌鏁翠釜娑堟伅閮借鍘嬬緝瀹屾瘯錛屾渶鍚庣殑杈撳嚭浣滀負鏁翠釜娑堟伅鐨勬暎鍒楀箋傚敖綆¤繕緙轟箯涓ユ牸鐨勮瘉鏄庯紝浣嗙粷澶у鏁頒笟鐣岀殑鐮旂┒鑰呴兘鍚屾剰錛屽鏋滃帇緙╁嚱鏁版槸瀹夊叏鐨勶紝閭d箞浠ヤ笂榪板艦寮忔暎鍒椾換鎰忛暱搴︾殑娑堟伅涔熷皢鏄畨鍏ㄧ殑銆傝繖灝辨槸鎵璋?Damgard/Merkle 緇撴瀯錛?/p>

鍦ㄤ笅鍥句腑錛屼換鎰忛暱搴︾殑娑堟伅琚垎鎷嗘垚絎﹀悎鍘嬬緝鍑芥暟杈撳叆瑕佹眰鐨勫垎緇勶紝鏈鍚庝竴涓垎緇勫彲鑳介渶瑕佸湪鏈熬娣諱笂鐗瑰畾鐨勫~鍏呭瓧鑺傦紝榪欎簺鍒嗙粍灝嗚欏哄簭澶勭悊錛岄櫎浜嗙涓涓秷鎭垎緇勫皢涓庢暎鍒楀垵濮嬪寲鍊間竴璧蜂綔涓哄帇緙╁嚱鏁扮殑杈撳叆澶栵紝褰撳墠鍒嗙粍灝嗗拰鍓嶄竴涓垎緇勭殑鍘嬬緝鍑芥暟杈撳嚭涓璧瘋浣滀負榪欎竴嬈″帇緙╃殑杈撳叆錛岃屽叾杈撳嚭鍙堝皢琚綔涓轟笅涓涓垎緇勫帇緙╁嚱鏁拌緭鍏ョ殑涓閮ㄥ垎錛岀洿鍒版渶鍚庝竴涓帇緙╁嚱鏁扮殑杈撳嚭錛屽皢琚綔涓烘暣涓秷鎭暎鍒楃殑緇撴灉銆?/p>

 

 

MD5 鍜?SHA1 鍙互璇存槸鐩墠搴旂敤鏈騫挎硾鐨凥ash綆楁硶錛岃屽畠浠兘鏄互 MD4 涓哄熀紜璁捐鐨勩?/p>

1) MD4 
MD4(RFC 1320)鏄?MIT 鐨?Ronald L. Rivest 鍦?1990 騫磋璁$殑錛孧D 鏄?Message Digest 鐨勭緝鍐欍傚畠閫傜敤鍦?2浣嶅瓧闀跨殑澶勭悊鍣ㄤ笂鐢ㄩ珮閫熻蔣浠跺疄鐜?-瀹冩槸鍩轟簬 32 浣嶆搷浣滄暟鐨勪綅鎿嶄綔鏉ュ疄鐜扮殑銆傚畠鐨勫畨鍏ㄦт笉鍍廟SA閭f牱鍩轟簬鏁板鍋囪錛屽敖綆?Den Boer銆丅osselaers 鍜?Dobbertin 寰堝揩灝辯敤鍒嗘瀽鍜屽樊鍒嗘垚鍔熺殑鏀誨嚮浜嗗畠3杞彉鎹腑鐨?2 杞紝璇佹槑浜嗗畠騫朵笉鍍忔湡鏈涚殑閭f牱瀹夊叏錛屼絾瀹冪殑鏁翠釜綆楁硶騫舵病鏈夌湡姝h鐮磋В榪囷紝Rivest 涔熷緢蹇繘琛屼簡鏀硅繘銆?/p>

涓嬮潰鏄竴浜汳D4鏁e垪緇撴灉鐨勪緥瀛愶細

MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0 
MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24 
MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729d 
MD4 ("message digest") = d9130a8164549fe818874806e1c7014b 
MD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9 
MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 043f8582f241db351ce627e153e7f0e4 
MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536


2) MD5 
MD5(RFC 1321)鏄?Rivest 浜?991騫村MD4鐨勬敼榪涚増鏈傚畠瀵硅緭鍏ヤ粛浠?12浣嶅垎緇勶紝鍏惰緭鍑烘槸4涓?2浣嶅瓧鐨勭駭鑱旓紝涓?MD4 鐩稿悓銆傚畠杈僊D4鎵鍋氱殑鏀硅繘鏄細

1) 鍔犲叆浜嗙鍥涜疆 
2) 姣忎竴姝ラ兘鏈夊敮涓鐨勫姞娉曞父鏁幫紱 
3) 絎簩杞腑鐨凣鍑芥暟浠?(X 鈭?Y) 鈭?(X 鈭?Z) 鈭?(Y 鈭?Z)) 鍙樹負 ((X 鈭?Z) 鈭?(Y 鈭?锝瀂))浠ュ噺灝忓叾瀵圭О鎬э紱 
4) 姣忎竴姝ラ兘鍔犲叆浜嗗墠涓姝ョ殑緇撴灉錛屼互鍔犲揩"闆穿鏁堝簲"錛?nbsp;
5) 鏀瑰彉浜嗙2杞拰絎?杞腑璁塊棶杈撳叆瀛愬垎緇勭殑欏哄簭錛屽噺灝忎簡褰㈠紡鐨勭浉浼肩▼搴︼紱 
6) 榪戜技浼樺寲浜嗘瘡杞殑寰幆宸︾Щ浣嶇Щ閲忥紝浠ユ湡鍔犲揩"闆穿鏁堝簲"錛屽悇杞殑寰幆宸︾Щ閮戒笉鍚屻?nbsp;
灝界MD5姣擬D4鏉ュ緱澶嶆潅錛屽茍涓旈熷害杈冧箣瑕佹參涓鐐癸紝浣嗘洿瀹夊叏錛屽湪鎶楀垎鏋愬拰鎶楀樊鍒嗘柟闈㈣〃鐜版洿濂姐?/p>

娑堟伅棣栧厛琚媶鎴愯嫢騫蹭釜512浣嶇殑鍒嗙粍錛屽叾涓渶鍚?12浣嶄竴涓垎緇勬槸“娑堟伅灝?濉厖瀛楄妭(100…0)+64 浣嶆秷鎭暱搴?#8221;錛屼互紜繚瀵逛簬涓嶅悓闀垮害鐨勬秷鎭紝璇ュ垎緇勪笉鐩稿悓銆?4浣嶆秷鎭暱搴︾殑闄愬埗瀵艱嚧浜哅D5瀹夊叏鐨勮緭鍏ラ暱搴﹀繀欏誨皬浜?64bit錛屽洜涓哄ぇ浜?4浣嶇殑闀垮害淇℃伅灝嗚蹇界暐銆傝?涓?2浣嶅瘎瀛樺櫒瀛楀垵濮嬪寲涓篈=0x01234567錛孊=0x89abcdef錛孋=0xfedcba98錛孌=0x76543210錛屽畠浠皢濮嬬粓鍙備笌榪愮畻騫跺艦鎴愭渶緇堢殑鏁e垪緇撴灉銆?/p>

鎺ョ潃鍚勪釜512浣嶆秷鎭垎緇勪互16涓?2浣嶅瓧鐨勫艦寮忚繘鍏ョ畻娉曠殑涓誨驚鐜紝512浣嶆秷鎭垎緇勭殑涓暟鎹喅瀹氫簡寰幆鐨勬鏁般備富寰幆鏈?杞紝姣忚疆鍒嗗埆鐢ㄥ埌浜嗛潪綰挎у嚱鏁?/p>

F(X, Y, Z) = (X 鈭?Y) 鈭?(锝瀀 鈭?Z) 
G(X, Y, Z) = (X 鈭?Z) 鈭?(Y 鈭?锝瀂) 
H(X, Y, Z) =X ⊕ Y ⊕ Z 
I(X, Y, Z) = X ⊕ (Y 鈭?锝瀂) 
榪?杞彉鎹㈡槸瀵硅繘鍏ヤ富寰幆鐨?12浣嶆秷鎭垎緇勭殑16涓?2浣嶅瓧鍒嗗埆榪涜濡備笅鎿嶄綔錛氬皢A銆丅銆丆銆丏鐨勫壇鏈琣銆乥銆乧銆乨涓殑3涓粡F銆丟銆丠銆両榪愮畻鍚庣殑緇撴灉涓庣4涓浉鍔狅紝鍐嶅姞涓?2浣嶅瓧鍜屼竴涓?2浣嶅瓧鐨勫姞娉曞父鏁幫紝騫跺皢鎵寰椾箣鍊煎驚鐜乏縐昏嫢騫蹭綅錛屾渶鍚庡皢鎵寰楃粨鏋滃姞涓奱銆乥銆乧銆乨涔嬩竴錛屽茍鍥為佽嚦ABCD錛岀敱姝ゅ畬鎴愪竴嬈″驚鐜?/p>

鎵鐢ㄧ殑鍔犳硶甯告暟鐢辮繖鏍蜂竴寮犺〃T[i]鏉ュ畾涔夛紝鍏朵腑i涓?…64錛孴[i]鏄痠鐨勬寮︾粷瀵瑰間箣4294967296嬈℃柟鐨勬暣鏁伴儴鍒嗭紝榪欐牱鍋氭槸涓轟簡閫氳繃姝e雞鍑芥暟鍜屽箓鍑芥暟鏉ヨ繘涓姝ユ秷闄ゅ彉鎹腑鐨勭嚎鎬фс?/p>

褰撴墍鏈?12浣嶅垎緇勯兘榪愮畻瀹屾瘯鍚庯紝ABCD鐨勭駭鑱斿皢琚緭鍑轟負MD5鏁e垪鐨勭粨鏋溿備笅闈㈡槸涓浜汳D5鏁e垪緇撴灉鐨勪緥瀛愶細

MD5 ("") = d41d8cd98f00b204e9800998ecf8427e 
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72 
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0 
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b 
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f 
MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a 
鍙傝冪浉搴擱FC鏂囨。鍙互寰楀埌MD4銆丮D5綆楁硶鐨勮緇嗘弿榪板拰綆楁硶鐨凜婧愪唬鐮併?/p>

3) SHA1 鍙婂叾浠?nbsp;
SHA1鏄敱NIST NSA璁捐涓哄悓DSA涓璧蜂嬌鐢ㄧ殑錛岃闂甴ttp://www.itl.nist.gov/fipspubs鍙互寰楀埌瀹冪殑璇︾粏瑙勮寖--[/url]"FIPS PUB 180-1 SECURE HASH STANDARD"銆傚畠瀵歸暱搴﹀皬浜?64鐨勮緭鍏ワ紝浜х敓闀垮害涓?60bit鐨勬暎鍒楀鹼紝鍥犳鎶楃┓涓?brute-force)鎬ф洿濂姐係HA-1 璁捐鏃跺熀浜庡拰MD4鐩稿悓鍘熺悊,騫朵笖妯′豢浜嗚綆楁硶銆傚洜涓哄畠灝嗕駭鐢?60bit鐨勬暎鍒楀鹼紝鍥犳瀹冩湁5涓弬涓庤繍綆楃殑32浣嶅瘎瀛樺櫒瀛楋紝娑堟伅鍒嗙粍鍜屽~鍏呮柟寮忎笌MD5鐩稿悓錛屼富寰幆涔熷悓鏍鋒槸4杞紝浣嗘瘡杞繘琛?0嬈℃搷浣滐紝闈炵嚎鎬ц繍綆椼佺Щ浣嶅拰鍔犳硶榪愮畻涔熶笌MD5綾諱技錛屼絾闈炵嚎鎬у嚱鏁般佸姞娉曞父鏁板拰寰幆宸︾Щ鎿嶄綔鐨勮璁℃湁涓浜涘尯鍒紝鍙互鍙傝冧笂闈㈡彁鍒扮殑瑙勮寖鏉ヤ簡瑙h繖浜涚粏鑺傘備笅闈㈡槸涓浜汼HA1鏁e垪緇撴灉鐨勪緥瀛愶細

SHA1 ("abc") = a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d 
SHA1 ("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq") = 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1 
鍏朵粬涓浜涚煡鍚嶇殑Hash綆楁硶榪樻湁MD2銆丯-Hash銆丷IPE-MD銆丠AVAL絳夌瓑銆備笂闈㈡彁鍒扮殑榪欎簺閮藉睘浜?綰?Hash綆楁硶銆傝繕鏈夊彟2綾籋ash綆楁硶錛屼竴綾誨氨鏄熀浜庡縐板垎緇勭畻娉曠殑鍗曞悜鏁e垪綆楁硶錛屽吀鍨嬬殑渚嬪瓙鏄熀浜嶥ES鐨勬墍璋揇avies-Meyer綆楁硶錛屽彟澶栬繕鏈夌粡IDEA鏀硅繘鐨凞avies-Meyer綆楁硶錛屽畠浠袱鑰呯洰鍓嶉兘琚涓烘槸瀹夊叏鐨勭畻娉曘傚彟涓綾繪槸鍩轟簬妯¤繍綆?紱繪暎瀵規暟鐨勶紝涔熷氨鏄熀浜庡叕寮瀵嗛挜綆楁硶鐨勶紝浣嗗洜涓哄叾榪愮畻寮閿澶ぇ錛岃岀己涔忓緢濂界殑搴旂敤鍓嶆櫙銆?/p>

 

娌℃湁閫氳繃鍒嗘瀽鍜屽樊鍒嗘敾鍑昏冮獙鐨勭畻娉曪紝澶у閮藉凡緇忓き鎶樺湪瀹為獙瀹ら噷浜嗭紝鍥犳錛屽鏋滅洰鍓嶆祦琛岀殑Hash綆楁硶鑳藉畬鍏ㄧ鍚堝瘑鐮佸鎰忎箟涓婄殑鍗曞悜鎬у拰鎶楀啿紿佹э紝灝變繚璇佷簡鍙湁絀蜂婦錛屾墠鏄牬鍧廐ash榪愮畻瀹夊叏鐗規х殑鍞竴鏂規硶銆備負浜嗗鎶楀急鎶楀啿紿佹э紝鎴戜滑鍙兘瑕佺┓涓句釜鏁板拰鏁e垪鍊肩┖闂撮暱搴︿竴鏍峰ぇ鐨勮緭鍏ワ紝鍗沖皾璇?^128鎴?^160涓笉鍚岀殑杈撳叆錛岀洰鍓嶄竴鍙伴珮妗d釜浜虹數鑴戝彲鑳介渶瑕?0^25騫存墠鑳藉畬鎴愯繖涓鑹板法鐨勫伐浣滐紝鍗充嬌鏄渶楂樼鐨勫茍琛岀郴緇燂紝榪欎篃涓嶆槸鍦ㄥ嚑鍗冨勾閲岀殑騫插緱瀹岀殑浜嬨傝屽洜涓?鐢熸棩鏀誨嚮"鏈夋晥鐨勯檷浣庝簡闇瑕佺┓涓劇殑絀洪棿錛屽皢鍏墮檷浣庝負澶х害1.2*2^64鎴?.2*2^80錛屾墍浠ワ紝寮烘姉鍐茬獊鎬ф槸鍐沖畾Hash綆楁硶瀹夊叏鎬х殑鍏抽敭銆?/p>

鍦∟IST鏂扮殑 Advanced Encryption Standard (AES)涓紝浣跨敤浜嗛暱搴︿負128銆?92銆?56bit 鐨勫瘑閽ワ紝鍥犳鐩稿簲鐨勮璁′簡 SHA256銆丼HA384銆丼HA512錛屽畠浠皢鎻愪緵鏇村ソ鐨勫畨鍏ㄦс?/p>

 

Hash綆楁硶鍦ㄤ俊鎭畨鍏ㄦ柟闈㈢殑搴旂敤涓昏浣撶幇鍦ㄤ互涓嬬殑3涓柟闈細

1) 鏂囦歡鏍¢獙 
鎴戜滑姣旇緝鐔熸倝鐨勬牎楠岀畻娉曟湁濂囧伓鏍¢獙鍜孋RC鏍¢獙錛岃繖2縐嶆牎楠屽茍娌℃湁鎶楁暟鎹鏀圭殑鑳藉姏錛屽畠浠竴瀹氱▼搴︿笂鑳芥嫻嬪茍綰犳鏁版嵁浼犺緭涓殑淇¢亾璇爜錛屼絾鍗翠笉鑳介槻姝㈠鏁版嵁鐨勬伓鎰忕牬鍧忋?/p>

MD5 Hash綆楁硶鐨?鏁板瓧鎸囩汗"鐗規э紝浣垮畠鎴愪負鐩墠搴旂敤鏈騫挎硾鐨勪竴縐嶆枃浠跺畬鏁存ф牎楠屽拰(Checksum)綆楁硶錛屼笉灝慤nix緋葷粺鏈夋彁渚涜綆梞d5 checksum鐨勫懡浠ゃ傚畠甯歌鐢ㄥ湪涓嬮潰鐨?縐嶆儏鍐典笅錛?/p>

絎竴鏄枃浠朵紶閫佸悗鐨勬牎楠岋紝灝嗗緱鍒扮殑鐩爣鏂囦歡璁$畻 md5 checksum錛屼笌婧愭枃浠剁殑md5 checksum 姣斿錛岀敱涓よ?md5 checksum 鐨勪竴鑷存э紝鍙互浠庣粺璁′笂淇濊瘉2涓枃浠剁殑姣忎竴涓爜鍏冧篃鏄畬鍏ㄧ浉鍚岀殑銆傝繖鍙互媯楠屾枃浠朵紶杈撹繃紼嬩腑鏄惁鍑虹幇閿欒錛屾洿閲嶈鐨勬槸鍙互淇濊瘉鏂囦歡鍦ㄤ紶杈撹繃紼嬩腑鏈鎭舵剰綃℃敼銆備竴涓緢鍏稿瀷鐨勫簲鐢ㄦ槸ftp鏈嶅姟錛岀敤鎴峰彲浠ョ敤鏉ヤ繚璇佸嬈℃柇鐐圭畫浼狅紝鐗瑰埆鏄粠闀滃儚绔欑偣涓嬭澆鐨勬枃浠剁殑姝g‘鎬с?/p>

鏇村嚭鑹茬殑瑙e喅鏂規硶鏄墍璋撶殑浠g爜絳懼悕錛屾枃浠剁殑鎻愪緵鑰呭湪鎻愪緵鏂囦歡鐨勫悓鏃訛紝鎻愪緵瀵規枃浠禜ash鍊肩敤鑷繁鐨勪唬鐮佺鍚嶅瘑閽ヨ繘琛屾暟瀛楃鍚嶇殑鍊鹼紝鍙婅嚜宸辯殑浠g爜絳懼悕璇佷功銆傛枃浠剁殑鎺ュ彈鑰呬笉浠呰兘楠岃瘉鏂囦歡鐨勫畬鏁存э紝榪樺彲浠ヤ緷鎹嚜宸卞璇佷功絳懼彂鑰呭拰璇佷功鎷ユ湁鑰呯殑淇′換紼嬪害錛屽喅瀹氭槸鍚︽帴鍙楄鏂囦歡銆傛祻瑙堝櫒鍦ㄤ笅杞借繍琛屾彃浠跺拰java灝忕▼搴忔椂錛屼嬌鐢ㄧ殑灝辨槸榪欐牱鐨勬ā寮忋?/p>

絎簩鏄敤浣滀繚瀛樹簩榪涘埗鏂囦歡緋葷粺鐨勬暟瀛楁寚綰癸紝浠ヤ究媯嫻嬫枃浠剁郴緇熸槸鍚︽湭緇忓厑璁哥殑琚慨鏀廣備笉灝戠郴緇熺鐞?緋葷粺瀹夊叏杞歡閮芥彁渚涜繖涓鏂囦歡緋葷粺瀹屾暣鎬ц瘎浼扮殑鍔熻兘錛屽湪緋葷粺鍒濆瀹夎瀹屾瘯鍚庯紝寤虹珛瀵規枃浠剁郴緇熺殑鍩虹鏍¢獙鍜屾暟鎹簱錛屽洜涓烘暎鍒楁牎楠屽拰鐨勯暱搴﹀緢灝忥紝瀹冧滑鍙互鏂逛究鐨勮瀛樻斁鍦ㄥ閲忓緢灝忕殑瀛樺偍浠嬭川涓娿傛鍚庯紝鍙互瀹氭湡鎴栨牴鎹渶瑕侊紝鍐嶆璁$畻鏂囦歡緋葷粺鐨勬牎楠屽拰錛屼竴鏃﹀彂鐜頒笌鍘熸潵淇濆瓨鐨勫兼湁涓嶅尮閰嶏紝璇存槑璇ユ枃浠跺凡緇忚闈炴硶淇敼錛屾垨鑰呮槸琚梾姣掓劅鏌擄紝鎴栬呰鏈ㄩ┈紼嬪簭鏇夸唬銆俆ripWire灝辨彁渚涗簡涓涓綾誨簲鐢ㄧ殑鍏稿瀷渚嬪瓙銆?/p>

鏇村畬緹庣殑鏂規硶鏄嬌鐢?MAC"銆?MAC" 鏄竴涓笌Hash瀵嗗垏鐩稿叧鐨勫悕璇嶏紝鍗充俊鎭壌鏉冪爜(Message Authority Code)銆傚畠鏄笌瀵嗛挜鐩稿叧鐨凥ash鍊鹼紝蹇呴』鎷ユ湁璇ュ瘑閽ユ墠鑳芥楠岃Hash鍊箋傛枃浠剁郴緇熺殑鏁板瓧鎸囩汗涔熻浼氳淇濆瓨鍦ㄤ笉鍙俊浠葷殑浠嬭川涓婏紝鍙鎷ユ湁璇ュ瘑閽ヨ呮彁渚涘彲閴村埆鎬с傚茍涓斿湪鏂囦歡鐨勬暟瀛楁寚綰規湁鍙兘闇瑕佽淇敼鐨勬儏鍐典笅錛屽彧鏈夊瘑閽ョ殑鎷ユ湁鑰呭彲浠ヨ綆楀嚭鏂扮殑鏁e垪鍊鹼紝鑰屼紒鍥劇牬鍧忔枃浠跺畬鏁存ц呭嵈涓嶈兘寰楅炪?/p>

2) 鏁板瓧絳懼悕 
Hash 綆楁硶涔熸槸鐜頒唬瀵嗙爜浣撶郴涓殑涓涓噸瑕佺粍鎴愰儴鍒嗐傜敱浜庨潪瀵圭О綆楁硶鐨勮繍綆楅熷害杈冩參錛屾墍浠ュ湪鏁板瓧絳懼悕鍗忚涓紝鍗曞悜鏁e垪鍑芥暟鎵紨浜嗕竴涓噸瑕佺殑瑙掕壊銆?/p>

鍦ㄨ繖縐嶇鍚嶅崗璁腑錛屽弻鏂瑰繀欏諱簨鍏堝崗鍟嗗ソ鍙屾柟閮芥敮鎸佺殑Hash鍑芥暟鍜岀鍚嶇畻娉曘?/p>

絳懼悕鏂瑰厛瀵硅鏁版嵁鏂囦歡榪涜璁$畻鍏舵暎鍒楀鹼紝鐒跺悗鍐嶅寰堢煭鐨勬暎鍒楀肩粨鏋?-濡侻d5鏄?6涓瓧鑺傦紝SHA1鏄?0瀛楄妭錛岀敤闈炲縐扮畻娉曡繘琛屾暟瀛楃鍚嶆搷浣溿傚鏂瑰湪楠岃瘉絳懼悕鏃訛紝涔熸槸鍏堝璇ユ暟鎹枃浠惰繘琛岃綆楀叾鏁e垪鍊鹼紝鐒跺悗鍐嶇敤闈炲縐扮畻娉曢獙璇佹暟瀛楃鍚嶃?/p>

瀵?Hash 鍊鹼紝鍙堢О"鏁板瓧鎽樿"榪涜鏁板瓧絳懼悕錛屽湪緇熻涓婂彲浠ヨ涓轟笌瀵規枃浠舵湰韜繘琛屾暟瀛楃鍚嶆槸絳夋晥鐨勩傝屼笖榪欐牱鐨勫崗璁繕鏈夊叾浠栫殑浼樼偣錛?/p>

棣栧厛錛屾暟鎹枃浠舵湰韜彲浠ュ悓瀹冪殑鏁e垪鍊煎垎寮淇濆瓨錛岀鍚嶉獙璇佷篃鍙互鑴辯鏁版嵁鏂囦歡鏈韓鐨勫瓨鍦ㄨ岃繘琛屻?/p>

鍐嶈咃紝鏈変簺鎯呭喌涓嬬鍚嶅瘑閽ュ彲鑳戒笌瑙e瘑瀵嗛挜鏄悓涓涓紝涔熷氨鏄錛屽鏋滃涓涓暟鎹枃浠剁鍚嶏紝涓庡鍏惰繘琛岄潪瀵圭О鐨勮В瀵嗘搷浣滄槸鐩稿悓鐨勬搷浣滐紝榪欐槸鐩稿綋鍗遍櫓鐨勶紝鎭舵剰鐨勭牬鍧忚呭彲鑳藉皢涓涓瘯鍥鵑獥浣犲皢鍏惰В瀵嗙殑鏂囦歡錛屽厖褰撲竴涓姹備綘絳懼悕鐨勬枃浠跺彂閫佺粰浣犮傚洜姝わ紝鍦ㄥ浠諱綍鏁版嵁鏂囦歡榪涜鏁板瓧絳懼悕鏃訛紝鍙湁瀵瑰叾Hash鍊艱繘琛岀鍚嶆墠鏄畨鍏ㄧ殑銆?/p>

3) 閴存潈鍗忚 
濡備笅鐨勯壌鏉冨崗璁張琚О浣?鎸戞垬--璁よ瘉妯″紡錛氬湪浼犺緭淇¢亾鏄彲琚睛鍚紝浣嗕笉鍙綃℃敼鐨勬儏鍐典笅錛岃繖鏄竴縐嶇畝鍗曡屽畨鍏ㄧ殑鏂規硶銆?/p>

闇瑕侀壌鏉冪殑涓鏂癸紝鍚戝皢琚壌鏉冪殑涓鏂瑰彂閫侀殢鏈轟覆錛?#8220;鎸戞垬”錛夛紝琚壌鏉冩柟灝嗚闅忔満涓插拰鑷繁鐨勯壌鏉冨彛浠ゅ瓧涓璧瘋繘琛?Hash 榪愮畻鍚庯紝榪旇繕閴存潈鏂癸紝閴存潈鏂瑰皢鏀跺埌鐨凥ash鍊間笌鍦ㄥ繁绔敤璇ラ殢鏈轟覆鍜屽鏂圭殑閴存潈鍙d護瀛楄繘琛?Hash 榪愮畻鐨勭粨鏋滅浉姣旇緝錛?#8220;璁よ瘉”錛夛紝濡傜浉鍚岋紝鍒欏彲鍦ㄧ粺璁′笂璁や負瀵規柟鎷ユ湁璇ュ彛浠ゅ瓧錛屽嵆閫氳繃閴存潈銆?/p>

POP3鍗忚涓氨鏈夎繖涓搴旂敤鐨勫吀鍨嬩緥瀛愶細

S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us> 
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb 
S: +OK maildrop has 1 message (369 octets) 
鍦ㄤ笂闈㈢殑涓孌礟OP3鍗忚浼氳瘽涓紝鍙屾柟閮藉叡浜殑瀵圭О瀵嗛挜錛堥壌鏉冨彛浠ゅ瓧錛夋槸tanstaaf錛屾湇鍔″櫒鍙戝嚭鐨勬寫鎴樻槸<1896.697170952@dbc.mtview.ca.us>錛屽鎴風瀵規寫鎴樼殑搴旂瓟鏄疢D5("<1896.697170952@dbc.mtview.ca.us>tanstaaf") = c4c9334bac560ecc979e58001b3e22fb錛岃繖涓紜殑搴旂瓟浣垮叾閫氳繃浜嗚璇併?/p>

 

鏁e垪綆楁硶闀挎湡浠ユ潵涓鐩村湪璁$畻鏈虹瀛︿腑澶ч噺搴旂敤錛岄殢鐫鐜頒唬瀵嗙爜瀛︾殑鍙戝睍錛屽崟鍚戞暎鍒楀嚱鏁板凡緇忔垚涓轟俊鎭畨鍏ㄩ鍩熶腑涓涓噸瑕佺殑緇撴瀯妯″潡錛屾垜浠湁鐞嗙敱娣卞叆鐮旂┒鍏惰璁$悊璁哄拰搴旂敤鏂規硶銆?/p>



eircQ 2010-12-02 23:08 鍙戣〃璇勮
]]>
C++闅忔満鏁扮敓鎴愭柟娉曪紙杞澆)http://m.shnenglu.com/softko/archive/2010/12/02/135228.htmleircQeircQThu, 02 Dec 2010 00:42:00 GMThttp://m.shnenglu.com/softko/archive/2010/12/02/135228.htmlhttp://m.shnenglu.com/softko/comments/135228.htmlhttp://m.shnenglu.com/softko/archive/2010/12/02/135228.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/135228.htmlhttp://m.shnenglu.com/softko/services/trackbacks/135228.html

鍘熸枃 http://www.cnblogs.com/finallyliuyu/archive/2010/10/11/1848130.html

涓銆丆++涓笉鑳戒嬌鐢╮andom()鍑芥暟

==================================================================================

鏈枃鐢遍潚鏉懼師鍒涘茍渚滸PL-V2鍙婂叾鍚庣畫鐗堟湰鍙戞斁錛岃漿杞借娉ㄦ槑鍑哄涓斿簲鍖呭惈鏈澹版槑銆?/p>

C++涓父鐢╮and()鍑芥暟鐢熸垚闅忔満鏁幫紝浣嗕弗鏍兼剰涔変笂鏉ヨ鐢熸垚鐨勫彧鏄吉闅忔満鏁幫紙pseudo-random integral number錛夈傜敓鎴愰殢鏈烘暟鏃墮渶瑕佹垜浠寚瀹氫竴涓瀛愶紝濡傛灉鍦ㄧ▼搴忓唴寰幆錛岄偅涔堜笅涓嬈$敓鎴愰殢鏈烘暟鏃惰皟鐢ㄤ笂涓嬈$殑緇撴灉浣滀負縐嶅瓙銆備絾濡傛灉鍒嗕袱嬈℃墽琛岀▼搴忥紝閭d箞鐢? 浜庣瀛愮浉鍚岋紝鐢熸垚鐨?#8220;闅忔満鏁?#8221;涔熸槸鐩稿悓鐨勩?/p>

鍦ㄥ伐紼嬪簲鐢ㄦ椂錛屾垜浠竴鑸皢緋葷粺褰撳墠鏃墮棿(Unix鏃墮棿)浣滀負縐嶅瓙錛岃繖鏍風敓鎴愮殑闅忔満鏁版洿鎺ヨ繎浜庡疄闄呮剰涔変笂鐨勯殢鏈烘暟銆傜粰涓涓嬩緥紼嬪涓嬶細

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
    double random(double,double);
    srand(unsigned(time(0)));
    for(int icnt = 0; icnt != 10; ++icnt)
        cout << "No." << icnt+1 << ": " << int(random(0,10))<< endl;
    return 0;
}

double random(double start, double end)
{
    return start+(end-start)*rand()/(RAND_MAX + 1.0);
}
/* 榪愯緇撴灉
* No.1: 3
* No.2: 9
* No.3: 0
* No.4: 9
* No.5: 5
* No.6: 6
* No.7: 9
* No.8: 2
* No.9: 9
* No.10: 6
*/
鍒╃敤榪欑鏂規硶鑳戒笉鑳藉緱鍒板畬鍏ㄦ剰涔変笂鐨勯殢鏈烘暟鍛紵浼間箮9鏈夌偣澶氬摝錛熷嵈娌℃湁1,4,7錛燂紒鎴戜滑鏉ュ仛涓涓鐜囧疄楠岋紝鐢熸垚1000涓囦釜闅忔満鏁幫紝鐪?-9榪?0涓暟鍑虹幇鐨勯鐜囨槸涓嶆槸澶ц嚧鐩稿悓鐨勩傜▼搴忓涓嬶細
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
using namespace std;

int main()
{
    double random(double,double);
    int a[10] = {0};
    const int Gen_max = 10000000;
    srand(unsigned(time(0)));
   
    for(int icnt = 0; icnt != Gen_max; ++icnt)
        switch(int(random(0,10)))
        {
        case 0: a[0]++; break;
        case 1: a[1]++; break;
        case 2: a[2]++; break;
        case 3: a[3]++; break;
        case 4: a[4]++; break;
        case 5: a[5]++; break;
        case 6: a[6]++; break;
        case 7: a[7]++; break;
        case 8: a[8]++; break;
        case 9: a[9]++; break;
        default: cerr << "Error!" << endl; exit(-1);
        }
   
    for(int icnt = 0; icnt != 10; ++icnt)
        cout << icnt << ": " << setw(6) << setiosflags(ios::fixed) << setprecision(2) << double(a[icnt])/Gen_max*100 << "%" << endl;
   
    return 0;
}

double random(double start, double end)
{
    return start+(end-start)*rand()/(RAND_MAX + 1.0);
}
/* 榪愯緇撴灉
* 0: 10.01%
* 1:   9.99%
* 2:   9.99%
* 3:   9.99%
* 4:   9.98%
* 5: 10.01%
* 6: 10.02%
* 7: 10.01%
* 8: 10.01%
* 9:   9.99%
*/
鍙煡鐢ㄨ繖縐嶆柟娉曞緱鍒扮殑闅忔満鏁版槸婊¤凍緇熻瑙勫緥鐨勩?/p>

鍙︼細鍦↙inux涓嬪埄鐢℅CC緙栬瘧紼嬪簭錛屽嵆浣挎垜鎵ц浜?000000嬈¤繍綆楋紝鏄惁灝唕andom鍑芥暟瀹氫箟浜唅nline鍑芥暟浼間箮瀵圭▼搴忔病鏈変換浣曞獎鍝嶏紝鏈夌悊鐢辯浉淇★紝GCC宸茬粡涓烘垜浠仛浜嗕紭鍖栥備絾鏄啣鍐ヤ箣涓垜鍙堣寰楄鍋歩nline浼樺寲寰楀姞O3鎵嶈...

涓嶈錛屼簬鏄垜浠妸寰幆嬈℃暟鏀逛負10浜挎錛岀敤time鍛戒護鏌ョ湅鎵ц鏃墮棿錛?br>chinsung@gentoo ~/workspace/test/Debug $ time ./test
0: 10.00%
1: 10.00%
2: 10.00%
3: 10.00%
4: 10.00%
5: 10.00%
6: 10.00%
7: 10.00%
8: 10.00%
9: 10.00%

real    2m7.768s
user    2m4.405s
sys     0m0.038s
chinsung@gentoo ~/workspace/test/Debug $ time ./test
0: 10.00%
1: 10.00%
2: 10.00%
3: 10.00%
4: 10.00%
5: 10.00%
6: 10.00%
7: 10.00%
8: 10.00%
9: 10.00%

real    2m7.269s
user    2m4.077s
sys     0m0.025s

鍓嶄竴嬈′負榪涜inline浼樺寲鐨勬儏褰紝鍚庝竴嬈′負娌℃湁浣渋nline浼樺寲鐨勬儏褰紝涓ゆ緇撴灉鐩稿樊涓嶅ぇ錛岀敋鑷沖悇欏規寚鏍囧悗鑰呰繕瑕佸ソ涓浜涳紝涓嶇煡鏄綍緙樼敱...

=================================================================================


     random鍑芥暟涓嶆槸ANSI C鏍囧噯錛屼笉鑳藉湪gcc,vc絳夌紪璇戝櫒涓嬬紪璇戦氳繃銆? 鍙敼鐢–++涓嬬殑rand鍑芥暟鏉ュ疄鐜般?nbsp;    1銆丆++鏍囧噯鍑芥暟搴撴彁渚涗竴闅忔満鏁扮敓鎴愬櫒rand錛岃繑鍥?錛峈AND_MAX涔嬮棿鍧囧寑鍒嗗竷鐨勪吉闅忔満鏁存暟銆? RAND_MAX蹇呴』鑷沖皯涓?2767銆俽and()鍑芥暟涓嶆帴鍙楀弬鏁幫紝榛樿浠?涓虹瀛愶紙鍗寵搗濮嬪鹼級銆? 闅忔満鏁扮敓鎴愬櫒鎬繪槸浠ョ浉鍚岀殑縐嶅瓙寮濮嬶紝鎵浠ュ艦鎴愮殑浼殢鏈烘暟鍒椾篃鐩稿悓錛屽け鍘諱簡闅忔満鎰忎箟銆傦紙浣嗚繖鏍蜂究浜庣▼搴忚皟璇曪級
      2銆丆++涓彟涓鍑芥暟srand錛堬級錛屽彲浠ユ寚瀹氫笉鍚岀殑鏁幫紙鏃犵鍙鋒暣鏁板彉鍏冿級涓虹瀛愩備絾鏄鏋滅瀛愮浉鍚岋紝浼殢鏈烘暟鍒椾篃鐩稿悓銆備竴涓姙娉曟槸璁╃敤鎴瘋緭鍏ョ瀛愶紝浣嗘槸浠嶇劧涓嶇悊鎯熾?
     3銆?姣旇緝鐞嗘兂鐨勬槸鐢ㄥ彉鍖栫殑鏁幫紝姣斿鏃墮棿鏉ヤ綔涓洪殢鏈烘暟鐢熸垚鍣ㄧ殑縐嶅瓙銆?time鐨勫兼瘡鏃舵瘡鍒婚兘涓嶅悓銆傛墍浠ョ瀛愪笉鍚岋紝鎵浠ワ紝浜х敓鐨勯殢鏈烘暟涔熶笉鍚屻?
// C++闅忔満鍑芥暟錛圴C program錛?
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;
#define MAX 100
int main(int argc, char* argv[])
{        srand( (unsigned)time( NULL ) );//srand()鍑芥暟浜х敓涓涓互褰撳墠鏃墮棿寮濮嬬殑闅忔満縐嶅瓙.搴旇鏀懼湪for絳夊驚鐜鍙ュ墠闈?涓嶇劧瑕佸緢闀挎椂闂寸瓑寰?
銆銆 for (int i=0;i<10;i++)
銆銆 cout<<rand()%MAX<<endl;//MAX涓烘渶澶у鹼紝鍏墮殢鏈哄煙涓?~MAX-1
銆銆 return 0;
}
浜屻乺and()鐨勭敤娉?
     rand()涓嶉渶瑕佸弬鏁幫紝瀹冧細榪斿洖涓涓粠0鍒版渶澶ч殢鏈烘暟鐨勪換鎰忔暣鏁幫紝鏈澶ч殢鏈烘暟鐨勫ぇ灝忛氬父鏄浐瀹氱殑涓涓ぇ鏁存暟銆?榪欐牱錛屽鏋滀綘瑕佷駭鐢?~10鐨?0涓暣鏁幫紝鍙互琛ㄨ揪涓猴細
銆銆int N = rand() % 11;
     榪欐牱錛孨鐨勫煎氨鏄竴涓?~10鐨勯殢鏈烘暟錛屽鏋滆浜х敓1~10錛屽垯鏄繖鏍鳳細
銆銆int N = 1 + rand() % 10;
銆銆鎬葷粨鏉ヨ錛屽彲浠ヨ〃紺轟負錛?
銆銆a + rand() % n
     鍏朵腑鐨刟鏄搗濮嬪鹼紝n鏄暣鏁扮殑鑼冨洿銆?銆銆a + rand() % (b-a+1) 灝辮〃紺恒锝侊綖锝備箣闂寸殑涓涓殢鏈烘暟鑻ヨ0~1鐨勫皬鏁幫紝鍒欏彲浠ュ厛鍙栧緱0~10鐨勬暣鏁幫紝鐒跺悗鍧囬櫎浠?0鍗沖彲寰楀埌闅忔満鍒板崄鍒嗕綅鐨?0涓殢鏈哄皬鏁幫紝鑻ヨ寰楀埌闅忔満鍒扮櫨 鍒嗕綅鐨勯殢鏈哄皬鏁幫紝鍒欓渶瑕佸厛寰楀埌0~100鐨?0涓暣鏁幫紝鐒跺悗鍧囬櫎浠?00錛屽叾瀹冩儏鍐典緷姝ょ被鎺ㄣ?
     閫氬父rand()浜х敓鐨勯殢鏈烘暟鍦ㄦ瘡嬈¤繍琛岀殑鏃跺欓兘鏄笌涓婁竴嬈$浉鍚岀殑錛岃繖鏄湁鎰忚繖鏍瘋璁$殑錛屾槸涓轟簡渚夸簬紼嬪簭鐨勮皟璇曘傝嫢瑕佷駭鐢熸瘡嬈′笉鍚岀殑闅忔満鏁幫紝鍙互浣跨敤srand( seed )鍑芥暟榪涜闅忔満鍖栵紝闅忕潃seed鐨勪笉鍚岋紝灝辮兘澶熶駭鐢熶笉鍚岀殑闅忔満鏁般?
     濡傚ぇ瀹舵墍璇達紝榪樺彲浠ュ寘鍚玹ime.h澶存枃浠訛紝鐒跺悗浣跨敤srand(time(0))鏉ヤ嬌鐢ㄥ綋鍓嶆椂闂翠嬌闅忔満鏁板彂鐢熷櫒闅忔満鍖栵紝榪欐牱灝卞彲浠ヤ繚璇佹瘡涓ゆ榪愯鏃跺彲浠ュ緱鍒頒笉鍚岀殑闅忔満鏁板簭鍒?鍙涓ゆ榪愯鐨勯棿闅旇秴榪?縐?銆?/p>



eircQ 2010-12-02 08:42 鍙戣〃璇勮
]]>
trie鏍?-璇﹁Вhttp://m.shnenglu.com/softko/archive/2010/11/26/134701.htmleircQeircQFri, 26 Nov 2010 01:48:00 GMThttp://m.shnenglu.com/softko/archive/2010/11/26/134701.htmlhttp://m.shnenglu.com/softko/comments/134701.htmlhttp://m.shnenglu.com/softko/archive/2010/11/26/134701.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/134701.htmlhttp://m.shnenglu.com/softko/services/trackbacks/134701.html鏂囩珷浣滆咃細yx_th000 鏂囩珷鏉ユ簮錛?/span>Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 杞澆璇鋒敞鏄庯紝璋㈣阿鍚堜綔銆?br>鍏抽敭璇嶏細trie trie鏍?鏁版嵁緇撴瀯

    鍓嶅嚑澶╁涔犱簡騫舵煡闆嗗拰trie鏍戯紝榪欓噷鎬葷粨涓涓媡rie銆?br>    鏈枃璁ㄨ涓媯墊渶綆鍗曠殑trie鏍戯紝鍩轟簬鑻辨枃26涓瓧姣嶇粍鎴愮殑瀛楃涓詫紝璁ㄨ鎻掑叆瀛楃涓層佸垽鏂墠緙鏄惁瀛樺湪銆佹煡鎵懼瓧絎︿覆絳夊熀鏈搷浣滐紱鑷充簬trie鏍戠殑鍒犻櫎鍗曚釜鑺傜偣瀹炲湪鏄皯瑙侊紝鏁呭湪姝や笉鍋氳瑙c?/span>

l        Trie鍘熺悊

Trie鐨勬牳蹇冩濇兂鏄┖闂存崲鏃墮棿銆傚埄鐢ㄥ瓧絎︿覆鐨勫叕鍏卞墠緙鏉ラ檷浣庢煡璇㈡椂闂寸殑寮閿浠ヨ揪鍒版彁楂樻晥鐜囩殑鐩殑銆?/span>

l        Trie鎬ц川

濂藉浜鴻trie鐨勬牴鑺傜偣涓嶅寘鍚換浣曞瓧絎︿俊鎭紝鎴戞墍涔犳儻鐨則rie鏍硅妭鐐瑰嵈鏄寘鍚俊鎭殑錛岃屼笖璁や負榪欐牱涔熸柟渚匡紝涓嬮潰璇翠竴涓嬪畠鐨勬ц川 (鍩轟簬鏈枃鎵璁ㄨ鐨勭畝鍗晅rie鏍?

1.    瀛楃鐨勭鏁板喅瀹氭瘡涓妭鐐圭殑鍑哄害錛屽嵆branch鏁扮粍(絀洪棿鎹㈡椂闂存濇兂)

2.    branch鏁扮粍鐨勪笅鏍囦唬琛ㄥ瓧絎︾浉瀵逛簬a鐨勭浉瀵逛綅緗?/span>

3.    閲囩敤鏍囪鐨勬柟娉曠‘瀹氭槸鍚︿負瀛楃涓層?/span>

4.    鎻掑叆銆佹煡鎵劇殑澶嶆潅搴﹀潎涓篛(len),len涓哄瓧絎︿覆闀垮害

l        Trie鐨勭ず鎰忓浘

濡傚浘鎵紺猴紝璇rie鏍戝瓨鏈塧bc銆乨銆乨a銆乨da鍥涗釜瀛楃涓詫紝濡傛灉鏄瓧絎︿覆浼氬湪鑺傜偣鐨勫熬閮ㄨ繘琛屾爣璁般傛病鏈夊悗緇瓧絎︾殑branch鍒嗘敮鎸囧悜NULL





l       
Trie
Trie鐨勪紭鐐逛婦渚?/span>

宸茬煡n涓敱灝忓啓瀛楁瘝鏋勬垚鐨勫鉤鍧囬暱搴︿負10鐨勫崟璇?鍒ゆ柇鍏朵腑鏄惁瀛樺湪鏌愪釜涓蹭負鍙︿竴涓覆鐨勫墠緙瀛愪覆銆備笅闈㈠姣?縐嶆柟娉曪細

1.    鏈瀹規槗鎯沖埌鐨勶細鍗充粠瀛楃涓查泦涓粠澶村線鍚庢悳錛岀湅姣忎釜瀛楃涓叉槸鍚︿負瀛楃涓查泦涓煇涓瓧絎︿覆鐨勫墠緙錛屽鏉傚害涓篛(n^2)銆?/span>

2.    浣跨敤hash錛氭垜浠敤hash瀛樹笅鎵鏈夊瓧絎︿覆鐨勬墍鏈夌殑鍓嶇紑瀛愪覆銆傚緩绔嬪瓨鏈夊瓙涓瞙ash鐨勫鏉傚害涓篛(n*len)銆傛煡璇㈢殑澶嶆潅搴︿負O(n)* O(1)= O(n)銆?/span>

3.    浣? 鐢╰rie錛氬洜涓哄綋鏌ヨ濡傚瓧絎︿覆abc鏄惁涓烘煇涓瓧絎︿覆鐨勫墠緙鏃訛紝鏄劇劧浠,c,d....絳変笉鏄互a寮澶寸殑瀛楃涓插氨涓嶇敤鏌ユ壘浜嗐傛墍浠ュ緩绔媡rie鐨勫鏉? 搴︿負O(n*len)錛岃屽緩绔?鏌ヨ鍦╰rie涓槸鍙互鍚屾椂鎵ц鐨勶紝寤虹珛鐨勮繃紼嬩篃灝卞彲浠ユ垚涓烘煡璇㈢殑榪囩▼錛宧ash灝變笉鑳藉疄鐜拌繖涓姛鑳姐傛墍浠ユ葷殑澶嶆潅搴︿負 O(n*len)錛屽疄闄呮煡璇㈢殑澶嶆潅搴﹀彧鏄疧(len)銆?br>


瑙i噴涓涓? hash涓轟粈涔堜笉鑳藉皢寤虹珛涓庢煡璇㈠悓鏃舵墽琛岋紝渚嬪鏈変覆錛?11錛?11456杈撳叆錛屽鏋滆鍚屾椂鎵ц寤虹珛涓庢煡璇紝榪囩▼灝辨槸鏌ヨ911錛屾病鏈夛紝鐒跺悗瀛樺叆9銆? 91銆?11錛屾煡璇?11456錛屾病鏈夌劧鍚庡瓨鍏?114銆?1145銆?11456錛岃岀▼搴忔病鏈夎蹇嗗姛鑳斤紝騫朵笉鐭ラ亾911鍦ㄨ緭鍏ユ暟鎹腑鍑虹幇榪囥傛墍浠ョ敤 hash蹇呴』鍏堝瓨鍏ユ墍鏈夊瓙涓詫紝鐒跺悗for寰幆鏌ヨ銆?/span>

鑰宼rie鏍戜究鍙? 浠ワ紝瀛樺叆911鍚庯紝宸茬粡璁板綍911涓哄嚭鐜扮殑瀛楃涓詫紝鍦ㄥ瓨鍏?11456鐨勮繃紼嬩腑灝辮兘鍙戠幇鑰岃緭鍑虹瓟妗堬紱鍊掕繃鏉ヤ害鍙互錛屽厛瀛樺叆911456錛屽湪瀛樺叆911鏃訛紝 褰撴寚閽堟寚鍚戞渶鍚庝竴涓?鏃訛紝紼嬪簭浼氬彂鐜拌繖涓?宸茬粡瀛樺湪錛岃鏄?11蹇呭畾鏄煇涓瓧絎︿覆鐨勫墠緙錛岃鎬濇兂鏄垜鍦ㄥ仛pku涓婄殑3630涓彂鐜扮殑錛岃瑙佹湰鏂囬厤濂楃殑“鍏? 闂ㄧ粌涔?#8221;銆?/span>

l        Trie鐨勭畝鍗曞疄鐜?鎻掑叆銆佹煡璇?


 1
 2#include <iostream>
 3using namespace std;
 4
 5const int branchNum = 26//澹版槑甯擱噺 
 6int i;
 7
 8struct Trie_node
 9{
10    bool isStr; //璁板綍姝ゅ鏄惁鏋勬垚涓涓覆銆?/span>
11    Trie_node *next[branchNum];//鎸囧悜鍚勪釜瀛愭爲鐨勬寚閽?涓嬫爣0-25浠h〃26瀛楃
12    Trie_node():isStr(false)
13    {
14        memset(next,NULL,sizeof(next));
15    }

16}
;
17
18class Trie
19{
20public:
21    Trie();
22    void insert(const char* word);
23    bool search(char* word); 
24    void deleteTrie(Trie_node *root);
25private:
26    Trie_node* root;
27}
;
28
29Trie::Trie()
30{
31    root = new Trie_node();
32}

33
34void Trie::insert(const char* word)
35{
36    Trie_node *location = root;
37    while(*word)
38    {
39        if(location->next[*word-'a'== NULL)//涓嶅瓨鍦ㄥ垯寤虹珛
40        {
41            Trie_node *tmp = new Trie_node();
42            location->next[*word-'a'= tmp;
43        }
    
44        location = location->next[*word-'a']; //姣忔彃鍏ヤ竴姝ワ紝鐩稿綋浜庢湁涓涓柊涓茬粡榪囷紝鎸囬拡瑕佸悜涓嬬Щ鍔?/span>
45        word++;
46    }

47    location->isStr = true//鍒拌揪灝鵑儴,鏍囪涓涓覆
48}

49
50bool Trie::search(char *word)
51{
52    Trie_node *location = root;
53    while(*word && location)
54    {
55        location = location->next[*word-'a'];
56        word++;
57    }

58    return(location!=NULL && location->isStr);
59}

60
61void Trie::deleteTrie(Trie_node *root)
62{
63    for(i = 0; i < branchNum; i++)
64    {
65        if(root->next[i] != NULL)
66        {
67            deleteTrie(root->next[i]);
68        }

69    }

70    delete root;
71}

72
73void main() //綆鍗曟祴璇?/span>
74{
75    Trie t;
76    t.insert("a");         
77    t.insert("abandon");
78    char * c = "abandoned";
79    t.insert(c);
80    t.insert("abashed");
81    if(t.search("abashed"))
82        printf("true\n");
83}



eircQ 2010-11-26 09:48 鍙戣〃璇勮
]]>
浣跨敤ADO鐨勫叿浣撴柟娉?杞?http://m.shnenglu.com/softko/archive/2010/11/08/132988.htmleircQeircQMon, 08 Nov 2010 05:49:00 GMThttp://m.shnenglu.com/softko/archive/2010/11/08/132988.htmlhttp://m.shnenglu.com/softko/comments/132988.htmlhttp://m.shnenglu.com/softko/archive/2010/11/08/132988.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/132988.htmlhttp://m.shnenglu.com/softko/services/trackbacks/132988.html闃呰鍏ㄦ枃

eircQ 2010-11-08 13:49 鍙戣〃璇勮
]]>
DataGrid錛氭彁紺?can not initialize data binding"(杞?http://m.shnenglu.com/softko/archive/2010/10/11/129441.htmleircQeircQMon, 11 Oct 2010 07:55:00 GMThttp://m.shnenglu.com/softko/archive/2010/10/11/129441.htmlhttp://m.shnenglu.com/softko/comments/129441.htmlhttp://m.shnenglu.com/softko/archive/2010/10/11/129441.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/129441.htmlhttp://m.shnenglu.com/softko/services/trackbacks/129441.html

榪欎袱澶╅亣鍒頒竴涓棶棰橈紝灝辨槸榪愯鍙墽琛屾枃浠舵椂錛屽嚭鐜?can not initialize data binding"閿欒錛屽師鍥狅細

浣跨敤DATAGRID鎺т歡錛岄櫎浜嗘敞鍐孧SDATGRD.OCX澶?榪橀渶瑕佹敞鍐屼竴涓婱SSTDFMT.DLL鎵嶅彲浠ャ侻SSTDFMT.DLL鏄井杞? 鏍囧噯鏁版嵁鏍煎紡瀵硅薄鐩稿叧鍔ㄦ侀摼鎺ュ簱鏂囦歡錛屽紩鐢ㄥ悕縐頒負“Microsoft Data Formatting Object Library”錛屽鏋滃湪寮鍙戠▼搴忎腑鏈夋暟鎹粦瀹氾紝灝辨槸閫氳繃瀹冨鏁版嵁鏍煎紡鍖栧悗鍐嶇粦瀹氬埌鎺т歡鐨勩傚鏋滅敤鍒版暟鎹粦瀹氭帶浠訛紝閭d箞灝辮璁板緱鎶? MSSTDFMT.DLL鍔犲埌瀹夎紼嬪簭閲岄潰銆?/p>

娉細鏈夌殑鐢佃剳娉ㄥ唽MSDATGRD.OCX銆丮SSTDFMT.DLL錛屾墍浠ユ湭鍑虹幇姝ょ被鎯呭喌銆?/p>

瑙e喅鏂規硶錛?/p>

鏂規硶涓錛?/p>

紼嬪簭鎵撳寘鏃訛紝灝哅SDATGRD.OCX銆丮SSTDFMT.DLL閮藉姞杞戒笂鍘匯?/p>

鏂規硶浜岋細

寮濮?銆夎繍琛岋細

regsvr32   MSDATGRD.OCX

regsvr32   MSSTDFMT.DLL



eircQ 2010-10-11 15:55 鍙戣〃璇勮
]]>
C璇█瀛楄妭瀵歸綈璇﹁В(杞?http://m.shnenglu.com/softko/archive/2010/09/17/126825.htmleircQeircQFri, 17 Sep 2010 01:49:00 GMThttp://m.shnenglu.com/softko/archive/2010/09/17/126825.htmlhttp://m.shnenglu.com/softko/comments/126825.htmlhttp://m.shnenglu.com/softko/archive/2010/09/17/126825.html#Feedback0http://m.shnenglu.com/softko/comments/commentRss/126825.htmlhttp://m.shnenglu.com/softko/services/trackbacks/126825.html涓銆? 浠涔堟槸瀵歸綈錛屼互鍙婁負浠涔堣瀵歸綈錛?/font>
1. 鐜頒唬璁$畻鏈轟腑鍐呭瓨絀洪棿閮芥槸鎸夌収byte鍒掑垎鐨勶紝浠庣悊璁轟笂璁蹭技涔庡浠諱綍綾誨瀷鐨勫彉閲忕殑璁塊棶鍙互浠庝換浣曞湴鍧寮濮嬶紝浣嗗疄闄呮儏鍐墊槸鍦ㄨ闂壒瀹氬彉閲忕殑鏃跺欑粡甯稿湪鐗瑰畾鐨? 鍐呭瓨鍦板潃璁塊棶錛岃繖灝遍渶瑕佸悇綾誨瀷鏁版嵁鎸夌収涓瀹氱殑瑙勫垯鍦ㄧ┖闂翠笂鎺掑垪錛岃屼笉鏄『搴忕殑涓涓帴涓涓殑鎺掓斁錛岃繖灝辨槸瀵歸綈銆?br> 2. 瀵歸綈鐨勪綔鐢ㄥ拰鍘熷洜錛氬悇涓‖浠跺鉤鍙板瀛樺偍絀洪棿鐨勫鐞嗕笂鏈夊緢澶х殑涓嶅悓銆備竴浜涘鉤鍙板鏌愪簺鐗瑰畾綾誨瀷鐨勬暟鎹彧鑳戒粠鏌愪簺鐗瑰畾鍦板潃寮濮嬪瓨鍙栥傚叾浠栧鉤鍙板彲鑳芥病鏈夎繖縐嶆儏鍐碉紝 浣嗘槸鏈甯歌鐨勬槸濡傛灉涓嶆寜鐓ч傚悎鍏跺鉤鍙扮殑瑕佹眰瀵規暟鎹瓨鏀捐繘琛屽榻愶紝浼氬湪瀛樺彇鏁堢巼涓婂甫鏉ユ崯澶便傛瘮濡傛湁浜涘鉤鍙版瘡嬈¤閮芥槸浠庡伓鍦板潃寮濮嬶紝濡傛灉涓涓猧nt鍨嬶紙鍋囪涓? 32浣嶏級濡傛灉瀛樻斁鍦ㄥ伓鍦板潃寮濮嬬殑鍦版柟錛岄偅涔堜竴涓鍛ㄦ湡灝卞彲浠ヨ鍑猴紝鑰屽鏋滃瓨鏀懼湪濂囧湴鍧寮濮嬬殑鍦版柟錛屽氨鍙兘浼氶渶瑕?涓鍛ㄦ湡錛屽茍瀵逛袱嬈¤鍑虹殑緇撴灉鐨勯珮浣? 瀛楄妭榪涜鎷煎噾鎵嶈兘寰楀埌璇nt鏁版嵁銆傛樉鐒跺湪璇誨彇鏁堢巼涓婁笅闄嶅緢澶氥傝繖涔熸槸絀洪棿鍜屾椂闂寸殑鍗氬紙銆?font size="3">
浜屻佸榻愮殑瀹炵幇

閫氬父錛屾垜浠啓紼嬪簭鐨勬椂鍊欙紝涓嶉渶瑕佽冭檻瀵歸綈闂銆傜紪璇戝櫒浼氭浛鎴戜滑閫夋嫨閫傚悎鐩爣騫沖彴鐨勫榻愮瓥鐣ャ傚綋鐒訛紝鎴戜滑涔熷彲浠ラ氱煡緇欑紪璇戝櫒浼犻掗緙栬瘧鎸囦護鑰屾敼鍙樺鎸囧畾鏁版嵁 鐨勫榻愭柟娉曘?br> 浣嗘槸錛屾鍥犱負鎴戜滑涓鑸笉闇瑕佸叧蹇冭繖涓棶棰橈紝鎵浠ュ洜涓虹紪杈戝櫒瀵規暟鎹瓨鏀懼仛浜嗗榻愶紝鑰屾垜浠笉浜嗚В鐨勮瘽錛屽父甯鎬細瀵逛竴浜涢棶棰樻劅鍒拌糠鎯戙傛渶甯歌鐨勫氨鏄痵truct鏁? 鎹粨鏋勭殑sizeof緇撴灉錛屽嚭涔庢剰鏂欍備負姝わ紝鎴戜滑闇瑕佸瀵歸綈綆楁硶鎵浜嗚В銆?br> 瀵歸綈鐨勭畻娉曪細
鐢變簬鍚勪釜騫沖彴鍜岀紪璇戝櫒鐨勪笉鍚岋紝鐜頒互鏈漢浣跨敤鐨刧cc version 3.2.2緙栬瘧鍣紙32浣峹86騫沖彴錛変負渚嬪瓙錛屾潵璁ㄨ緙栬瘧鍣ㄥstruct鏁版嵁緇撴瀯涓殑鍚勬垚鍛樺浣曡繘琛屽榻愮殑銆?br> 璁劇粨鏋勪綋濡備笅瀹氫箟錛?br> struct A {
    int a;
    char b;
    short c;
};
緇撴瀯浣揂涓寘鍚簡4瀛楄妭闀垮害鐨刬nt涓涓紝1瀛楄妭闀垮害鐨刢har涓涓拰2瀛楄妭闀垮害鐨剆hort鍨嬫暟鎹竴涓傛墍浠鐢ㄥ埌鐨勭┖闂村簲璇ユ槸7瀛楄妭銆備絾鏄洜涓虹紪璇戝櫒 瑕佸鏁版嵁鎴愬憳鍦ㄧ┖闂翠笂榪涜瀵歸綈銆?br> 鎵浠ヤ嬌鐢╯izeof(strcut A)鍊間負8銆?br> 鐜板湪鎶婅緇撴瀯浣撹皟鏁存垚鍛樺彉閲忕殑欏哄簭銆?br> struct B {
    char b;
    int a;
    short c;
};
榪欐椂鍊欏悓鏍鋒槸鎬誨叡7涓瓧鑺傜殑鍙橀噺錛屼絾鏄痵izeof(struct B)鐨勫煎嵈鏄?2銆?br> 涓嬮潰鎴戜滑浣跨敤棰勭紪璇戞寚浠?pragma pack (value)鏉ュ憡璇夌紪璇戝櫒錛屼嬌鐢ㄦ垜浠寚瀹氱殑瀵歸綈鍊兼潵鍙栦唬緙虹渷鐨勩?br> #pragma pack (2) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct C {
    char b;
    int a;
    short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
sizeof(struct C)鍊兼槸8銆?br>
淇敼瀵歸綈鍊間負1錛?br> #pragma pack (1) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct D {
    char b;
    int a;
    short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
sizeof(struct D)鍊間負7銆?br>
瀵逛簬char鍨嬫暟鎹紝鍏惰嚜韜榻愬間負1錛屽浜巗hort鍨嬩負2錛屽浜巌nt,float,double綾誨瀷錛屽叾鑷韓瀵歸綈鍊間負4錛屽崟浣嶅瓧鑺傘?br> 榪欓噷闈㈡湁鍥涗釜姒傚康鍊鹼細
1)鏁版嵁綾誨瀷鑷韓鐨勫榻愬鹼細灝辨槸涓婇潰浜や唬鐨勫熀鏈暟鎹被鍨嬬殑鑷韓瀵歸綈鍊箋?br> 2)鎸囧畾瀵歸綈鍊鹼細#pragma pack (value)鏃剁殑鎸囧畾瀵歸綈鍊紇alue銆?br> 3)緇撴瀯浣撴垨鑰呯被鐨勮嚜韜榻愬鹼細鍏舵垚鍛樹腑鑷韓瀵歸綈鍊兼渶澶х殑閭d釜鍊箋?br> 4)鏁版嵁鎴愬憳銆佺粨鏋勪綋鍜岀被鐨勬湁鏁堝榻愬鹼細鑷韓瀵歸綈鍊煎拰鎸囧畾瀵歸綈鍊間腑杈冨皬鐨勯偅涓箋?br> 鏈変簡榪欎簺鍊鹼紝鎴戜滑灝卞彲浠ュ緢鏂逛究鐨勬潵璁ㄨ鍏蜂綋鏁版嵁緇撴瀯鐨勬垚鍛樺拰鍏惰嚜韜殑瀵歸綈鏂瑰紡銆傛湁鏁堝榻愬糔鏄渶緇堢敤鏉ュ喅瀹氭暟鎹瓨鏀懼湴鍧鏂瑰紡鐨勫鹼紝鏈閲嶈銆傛湁鏁堝榻怤錛屽氨 鏄〃紺?#8220;瀵歸綈鍦∟涓?#8221;錛屼篃灝辨槸璇磋鏁版嵁鐨?瀛樻斁璧峰鍦板潃%N=0".鑰屾暟鎹粨鏋勪腑鐨勬暟鎹彉閲忛兘鏄寜瀹氫箟鐨勫厛鍚庨『搴忔潵鎺掓斁鐨勩傜涓涓暟鎹彉閲忕殑璧峰鍦板潃灝辨槸 鏁版嵁緇撴瀯鐨勮搗濮嬪湴鍧銆傜粨鏋勪綋鐨勬垚鍛樺彉閲忚瀵歸綈鎺掓斁錛岀粨鏋勪綋鏈韓涔熻鏍規嵁鑷韓鐨勬湁鏁堝榻愬煎渾鏁?灝辨槸緇撴瀯浣撴垚鍛樺彉閲忓崰鐢ㄦ婚暱搴﹂渶瑕佹槸瀵圭粨鏋勪綋鏈夋晥瀵歸綈鍊肩殑鏁? 鏁板嶏紝緇撳悎涓嬮潰渚嬪瓙鐞嗚В)銆傝繖鏍峰氨涓嶉毦鐞嗚В涓婇潰鐨勫嚑涓緥瀛愮殑鍊間簡銆?br> 渚嬪瓙鍒嗘瀽錛?br> 鍒嗘瀽渚嬪瓙B錛?br> struct B {
    char b;
    int a;
    short c;
};
鍋囪B浠庡湴鍧絀洪棿0x0000寮濮嬫帓鏀俱傝渚嬪瓙涓病鏈夊畾涔夋寚瀹氬榻愬鹼紝鍦ㄧ瑪鑰呯幆澧冧笅錛岃鍊奸粯璁や負4銆傜涓涓垚鍛樺彉閲廱鐨勮嚜韜榻愬兼槸1錛屾瘮鎸囧畾鎴栬呴粯璁ゆ寚 瀹氬榻愬?灝忥紝鎵浠ュ叾鏈夋晥瀵歸綈鍊間負1錛屾墍浠ュ叾瀛樻斁鍦板潃0x0000絎﹀悎0x0000%1=0.絎簩涓垚鍛樺彉閲廰錛屽叾鑷韓瀵歸綈鍊間負4錛屾墍浠ユ湁鏁堝榻愬間篃涓? 4錛屾墍浠ュ彧鑳藉瓨鏀懼湪璧峰鍦板潃涓?x0004鍒?x0007榪欏洓涓繛緇殑瀛楄妭絀洪棿涓紝澶嶆牳0x0004%4=0,涓旂揣闈犵涓涓彉閲忋傜涓変釜鍙橀噺c,鑷韓瀵歸綈 鍊間負2錛屾墍浠ユ湁鏁堝榻愬間篃鏄?錛屽彲浠ュ瓨鏀懼湪0x0008鍒?x0009榪欎袱涓瓧鑺傜┖闂翠腑錛岀鍚?x0008%2=0銆傛墍浠ヤ粠0x0000鍒?x0009瀛? 鏀劇殑閮芥槸B鍐呭銆傚啀鐪嬫暟鎹粨鏋凚鐨勮嚜韜榻愬間負鍏跺彉閲忎腑鏈澶у榻愬?榪欓噷鏄痓錛夋墍浠ュ氨鏄?錛屾墍浠ョ粨鏋勪綋鐨勬湁鏁堝榻愬間篃鏄?銆傛牴鎹粨鏋勪綋鍦嗘暣鐨勮姹傦紝 0x0009鍒?x0000=10瀛楄妭錛岋紙10錛?錛夛紖4錛?銆傛墍浠?x0000A鍒?x000B涔熶負緇撴瀯浣揃鎵鍗犵敤銆傛晠B浠?x0000鍒?x000B 鍏辨湁12涓瓧鑺?sizeof(struct B)=12;

鍚岀悊,鍒嗘瀽涓婇潰渚嬪瓙C錛?br> #pragma pack (2) /*鎸囧畾鎸?瀛楄妭瀵歸綈*/
struct C {
    char b;
    int a;
    short c;
};
#pragma pack () /*鍙栨秷鎸囧畾瀵歸綈錛屾仮澶嶇己鐪佸榻?/
絎竴涓彉閲廱鐨勮嚜韜榻愬間負1錛屾寚瀹氬榻愬間負2錛屾墍浠ワ紝鍏舵湁鏁堝榻愬間負1錛屽亣璁綜浠?x0000寮濮嬶紝閭d箞b瀛樻斁鍦?x0000錛岀鍚?x0000%1= 0;絎簩涓彉閲忥紝鑷韓瀵歸綈鍊間負4錛屾寚瀹氬榻愬間負2錛屾墍浠ユ湁鏁堝榻愬間負2錛屾墍浠ラ『搴忓瓨鏀懼湪0x0002銆?x0003銆?x0004銆?x0005鍥涗釜榪炵畫 瀛楄妭涓紝絎﹀悎0x0002%2=0銆傜涓変釜鍙橀噺c鐨勮嚜韜榻愬間負2錛屾墍浠ユ湁鏁堝榻愬間負2錛岄『搴忓瓨鏀?br> 鍦?x0006銆?x0007涓紝絎﹀悎0x0006%2=0銆傛墍浠ヤ粠0x0000鍒?x00007鍏卞叓瀛楄妭瀛樻斁鐨勬槸C鐨勫彉閲忋傚張C鐨勮嚜韜榻愬間負4錛屾墍浠? C鐨勬湁鏁堝榻愬間負2銆傚張8%2=0,C鍙崰鐢?x0000鍒?x0007鐨勫叓涓瓧鑺傘傛墍浠izeof(struct C)=8.

鏈? 浜嗕互涓婄殑瑙i噴錛岀浉淇′綘瀵笴璇█鐨勫瓧鑺傚榻愭蹇靛簲璇ユ湁浜嗘竻妤氱殑璁よ瘑浜嗗惂銆傚湪緗戠粶紼嬪簭涓紝鎺屾彙榪欎釜姒傚康鍙槸寰堥噸瑕佺殑鍠旓紝鍦ㄤ笉鍚屽鉤鍙頒箣闂達紙姣斿鍦╓indows 鍜孡inux涔嬮棿錛変紶閫?榪涘埗嫻侊紙姣斿緇撴瀯浣擄級錛岄偅涔堝湪榪欎袱涓鉤鍙伴棿蹇呴』瑕佸畾涔夌浉鍚岀殑瀵歸綈鏂瑰紡錛屼笉鐒惰帿鍚嶅叾濡欑殑鍑轟簡涓浜涢敊錛屽彲鏄緢闅炬帓鏌ョ殑鍝_^銆?/font>

eircQ 2010-09-17 09:49 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              91久久久久久国产精品| 亚洲高清一区二| 国产精品亚洲人在线观看| 欧美高清免费| 欧美日韩国产综合视频在线| 欧美日韩国产一区| 国产精品成人国产乱一区| 欧美午夜电影网| 国产精品久久久999| 国产欧美日韩麻豆91| 激情五月综合色婷婷一区二区| 尤妮丝一区二区裸体视频| 亚洲国产精品va在看黑人| 99视频精品全部免费在线| 艳女tv在线观看国产一区| 亚洲欧美激情一区| 久久精品国产综合| 欧美激情免费观看| 一区二区精品在线观看| 欧美在线视频免费| 欧美精品99| 国产欧美日韩不卡免费| 亚洲高清视频在线观看| 亚洲一区二区三区精品在线观看 | 欧美激情bt| 日韩亚洲欧美精品| 西西裸体人体做爰大胆久久久| 免费观看在线综合色| 国产精品成人v| 亚洲欧洲三级电影| 欧美亚洲免费在线| 亚洲国产一区在线| 性8sex亚洲区入口| 欧美天天影院| 亚洲欧洲日本国产| 久久久欧美精品| 中文日韩电影网站| 欧美国产丝袜视频| 国内欧美视频一区二区| 亚洲中无吗在线| 欧美护士18xxxxhd| 久久精品国亚洲| 国产日韩久久| 亚洲欧美亚洲| 亚洲美女在线国产| 麻豆乱码国产一区二区三区| 国产精品影视天天线| 亚洲视频在线观看免费| 亚洲高清视频一区二区| 久久夜色精品亚洲噜噜国产mv| 国产精品美女久久久久久2018 | 欧美精品一区二区三区在线播放 | 午夜在线观看免费一区| 欧美三区在线| 亚洲精品日韩在线| 欧美电影免费观看高清| 久久精品夜色噜噜亚洲a∨ | 欧美视频在线观看免费| 99热在这里有精品免费| 欧美成人国产| 久久精品一区二区三区四区| 国产欧美二区| 欧美一区二区三区播放老司机| 亚洲国产欧美在线人成| 欧美大片一区二区| 亚洲精品久久久蜜桃| 免费永久网站黄欧美| 久久综合中文| 亚洲日本va午夜在线电影| 欧美国内亚洲| 欧美国产精品一区| 99精品国产在热久久下载| 亚洲三级视频| 欧美性猛交99久久久久99按摩 | 亚洲国产高清在线| 蜜月aⅴ免费一区二区三区| 亚洲电影在线免费观看| 欧美xart系列在线观看| 欧美成ee人免费视频| 日韩午夜精品视频| 国产精品99久久久久久白浆小说| 国产精品久线观看视频| 久久久国产成人精品| 久久久噜噜噜久久中文字幕色伊伊| 久久本道综合色狠狠五月| 亚洲电影在线观看| 99国产精品久久久久老师| 国产精品区一区二区三| 久久综合久久久| 欧美黄色大片网站| 午夜在线一区| 六十路精品视频| 亚洲午夜av| 久久亚洲精品网站| 亚洲影音一区| 猛男gaygay欧美视频| 亚洲欧美日韩在线| 久久久综合网站| 亚洲午夜久久久| 久久视频这里只有精品| 亚洲男人的天堂在线aⅴ视频| 久久国产手机看片| 在线一区二区日韩| 久久久爽爽爽美女图片| 亚洲一区免费观看| 久久久久9999亚洲精品| 亚洲电影免费在线| 国产精品日本精品| 欧美国产日韩在线| 国产久一道中文一区| 亚洲国产第一页| 国产偷国产偷亚洲高清97cao| 亚洲经典在线看| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲日韩中文字幕在线播放| 国模套图日韩精品一区二区| 一区二区三区精品在线| 亚洲精品久久久久久久久久久久| 久久成人精品视频| 欧美诱惑福利视频| 欧美新色视频| 亚洲免费观看高清完整版在线观看熊 | 亚洲国产精品久久久久秋霞不卡| 亚洲少妇一区| 99伊人成综合| 欧美激情久久久久久| 欧美大片一区二区| 国产亚洲欧洲997久久综合| 亚洲校园激情| 亚洲在线观看视频网站| 美日韩在线观看| 国产精品五月天| 亚洲天堂av在线免费观看| 亚洲午夜伦理| 国产精品性做久久久久久| 在线综合亚洲| 亚洲欧美亚洲| 国产精品一区亚洲| 亚洲欧美电影院| 欧美一级专区| 国产伦精品一区二区三区四区免费| 99在线视频精品| 亚洲线精品一区二区三区八戒| 欧美日韩在线三级| 中文日韩电影网站| 久久国产手机看片| 国内精品视频666| 久热re这里精品视频在线6| 免费成人毛片| 亚洲精品国产系列| 欧美日韩国产首页在线观看| 日韩午夜免费| 欧美亚洲网站| 黑丝一区二区| 欧美黄色一区| 亚洲一区二区伦理| 久久一区中文字幕| 91久久夜色精品国产网站| 欧美sm重口味系列视频在线观看| 亚洲国产欧美一区二区三区同亚洲| 一区二区三区欧美在线观看| 国产精品久久久久久久久久免费看 | 亚洲一区免费观看| 久久爱www| 伊人久久噜噜噜躁狠狠躁| 免费一区二区三区| 一区二区三区国产盗摄| 久久国产天堂福利天堂| 亚洲精品乱码久久久久久久久| 欧美特黄一级大片| 久久亚洲一区二区| 99re成人精品视频| 久久久久久久999| 亚洲精品中文字幕有码专区| 国产精品嫩草99av在线| 久久手机精品视频| 一区二区三区四区精品| 欧美不卡视频一区| 亚洲砖区区免费| 亚洲电影免费观看高清| 国产精品永久免费在线| 男人的天堂亚洲| 性伦欧美刺激片在线观看| 亚洲国产天堂久久国产91| 先锋影音国产一区| 日韩一区二区精品视频| 国产日韩一区二区| 欧美日韩视频在线| 六十路精品视频| 欧美一区二区久久久| 99精品国产在热久久婷婷| 女主播福利一区| 久久精品国产成人| 在线亚洲自拍| 999在线观看精品免费不卡网站| 国产一区二区三区四区在线观看| 欧美午夜无遮挡| 欧美人妖另类| 免费亚洲网站| 玖玖在线精品|