锘??xml version="1.0" encoding="utf-8" standalone="yes"?>99久久国产亚洲高清观看2024 ,亚洲欧洲精品成人久久曰影片,99热热久久这里只有精品68http://m.shnenglu.com/JonsenElizee/category/13512.htmlSoftware Developing Blog <BR> <BR> "An idea is fragile . It can be killed by a scornful smile or a yawn .It can be mound down by irony and scared to death by a cold look." <BR> "Most cultures throughout human history have not liked creative individuals .They ignore them or kill them.It is a very efficient way of stopping creativity." <BR> <BR> ------Advertising boss Charles Browe and Howard Gardner ,professor at Harvard zh-cnThu, 21 Oct 2010 11:43:06 GMTThu, 21 Oct 2010 11:43:06 GMT60Quicker Quick-Sort http://m.shnenglu.com/JonsenElizee/archive/2010/09/23/127418.htmlJonsenElizeeJonsenElizeeThu, 23 Sep 2010 07:24:00 GMThttp://m.shnenglu.com/JonsenElizee/archive/2010/09/23/127418.htmlhttp://m.shnenglu.com/JonsenElizee/comments/127418.htmlhttp://m.shnenglu.com/JonsenElizee/archive/2010/09/23/127418.html#Feedback0http://m.shnenglu.com/JonsenElizee/comments/commentRss/127418.htmlhttp://m.shnenglu.com/JonsenElizee/services/trackbacks/127418.html鍏充簬蹇熸帓搴?/strong>

鎴戜滑閮界煡閬撳揩閫熸帓搴忔湁寰堝ソ鐨?/font>O(nlogn)錛岄偅涔堟洿蹇殑蹇熸帓搴忓湪鍝噷鍛紵涓嬮潰鏄垜鐨勫涔犺褰曘?/font>

錛嶏紞By JonsenElizee 2010/09/23

甯歌鐨勫揩閫熸帓搴?/font>

瀛︿範蹇熸帓搴忥紝鏈璁╀漢鐔熸倝鐨勬槸涓や釜ptr宸﹀彸鏉ュ洖鎸囷紝涓嬈℃帓搴忓悗灝辨妸涓涓?/font>mid鍊兼斁鍦ㄤ簡鍚堥傜殑浣嶇疆涓娿傝繖鏄垜涓涓湅鍙嬬殑闈為掑綊鐨?/font>C錛嬶紜瀹炵幇銆傛垜鏀瑰啓涓鐐圭偣錛屽氨鏄姞浜?/font>C鐨?/font>rand()鏉ヨ緗暟緇勫鹼紝鐒跺悗緙栬瘧榪愯榪欎釜綆楁硶錛屼綘鍙兘榪樹笉鑳介殢闅忎究渚跨殑鍐欏嚭榪欎釜綆楁硶錛屼絾鏁堟灉鐪熺殑寰堜笉涔愯錛屼篃涓嶇煡閬撹榪愯澶氫箙鎵嶈兘鎺掑簭瀹?6*50鐨勫瓧絎︿覆銆傚悗闈㈡垜浠細鐪嬪埌涓涓緢綺炬倣鐨勭畻娉曘傘傘?/font>

 1 #include <stack>
 2 #include <vector>
 3 #include <iostream>
 4 #include <stdlib.h>
 5 #include <stdio.h>
 6 #include <time.h>
 7 
 8 using namespace std;
 9 
10 typedef struct _record
11 {
12     int begin;
13     int end;
14 }record;
15 
16 void quick_sort(int a[],int len)
17 {
18     vector<record> do_job;
19     record temp;
20     temp.begin = 0;
21     temp.end = len-1;
22     do_job.push_back(temp);
23 
24     while (do_job.size()  != 0) {
25         record temp = do_job.back();
26         do_job.pop_back();
27     
28         int low = temp.begin;
29         int high = temp.end;
30         int key = a[low];
31         while (low < high) {
32             while(low < high && a[high] >= key) high--;
33             a[low] = a[high];
34             while(low < high && a[low] <= key) low++;
35             a[high] = a[low];
36         }
37         a[low] = key;
38 
39         record temp1;
40         temp1.begin = temp.begin;
41         temp1.end = low-1;
42         if (temp1.begin < temp1.end) { do_job.push_back(temp1); }
43 
44         record temp2;
45         temp2.begin = low+1;
46         temp2.end = temp.end;
47         if (temp2.begin < temp2.end) { do_job.push_back(temp2); }
48     }
49 }
50 int main()
51 {
52     int a[26*50];
53     int i = 0;
54     while(i < 26*50) a[i] = rand() % 100;
55     int count =sizeof(a) / sizeof(int);
56     quick_sort(a,count);
57     for (int i = 0; i < count; i++) cout<<a[i]<<endl;
58     return 0;
59 }
60 


鏇寸畝鏇村揩蹇熸帓搴?/font>

榪欑蹇熸帓搴忎笉鏄渶蹇殑錛岀壒鍒槸鍩烘湰鏈夊簭鏃朵細閫鍖栧埌O(n^2)錛岀悊璁轟笂鍩轟簬姣旇緝鐨勬帓搴忎笉浼氬皬浜?/font>O(nlogn)錛屼絾榪樻槸鏈夊姞閫熺殑鍙兘銆備笅闈㈣繖涓槸銆?/font>Programming Pearls 2nd銆嬮噷闈㈢殑鏂規硶錛岃繖涓畻娉曠湡鐨勫緢綺炬倣錛岃繍琛屽畬26*50鐨勪竴涓帓搴忥紝鍙渶瑕?.09縐掞紝鎴戠殑瀹炵幇濡備笅銆?/font>


榪愯鏃舵槸緇欑殑涓涓暱搴︿負26*50鐨勪竴涓瓧絎︽暟緇勶紝瀵瑰畠榪涜鎺掑簭錛?/font>



鏇寸畝鏇村揩蹇熸帓搴忥紜錛?/font>

鐮旂┒涓婇潰綆楁硶鐨勬墽琛岃繃紼嬶紝閬靛驚澶у笀鐨勬濊礬錛屾垜鏀瑰啓浜嗙畻娉曪紝鍦ㄦ垜鐨?/font>X61錛?/font>Redhat EL5涓婅繍琛岄熷害姣斾笂闈㈢殑綆楁硶蹇簡8鍊嶏紝涔熷氨鏄繍琛屽畬26*50闀跨殑鎺掑簭錛屽彧闇瑕?.01縐掞紒鏈鍚庢垜鏄庣櫧涓涓亾鐞嗭紝瑕佹湁鎬濇兂錛岃鏈夋瘏鍔涳紝瑕佹湁瀹炶返銆傚畬紼挎椂錛屾垜鍙戠幇榪欎釜綆楁硶榪樻湁鏀硅繘鐨勪綑鍦般傜壒鍜屽ぇ瀹跺垎浜傚澶氭寚鐐廣?/font>

榪愯杈撳叆鍜?/font>quick.c涓殑涓鏍鳳細

榪愯緇撴灉瀵規瘮

甯歌鐨勯偅涓潪閫掑綊鐨勭畻娉曚粠鎴戝啓榪欎釜鏂囦歡鍒扮幇鍦紝瀹冭繕鍦ㄨ繍琛岀潃銆傘傘?/font>

絎簩涓拰絎笁涓椂闂村姣斿涓嬪浘錛?/font>

(鍔犱笉鍔犱紭鍖栵紞O3閮芥槸涓鏍風殑緇撴灉錛屽湪鎴戠殑X61涓婏紝gcc version 4.1.2 20080704 (Red Hat 4.1.2-48))


鏀硅繘鐨?/font>myquick.c鐨勮繍琛屾椂闂存槸quick.c鐨?/font>1/9銆?/font>

鏈鍚庯紝鎴戜笉寰椾笉鐢?/font>Ctrl錛?/font>C鎶婇偅涓父瑙勭殑緇?/font>KILL鎺夈?/font>

Real, User and Sys process time statistics

One of these things is not like the other. Real refers to actual elapsed time; User and Sys refer to CPU time used only by the process.
    *Real is wall clock time - time from start to finish of the call. This is all elapsed time including time slices used by other processes and time the process spends blocked (for example if it is waiting for I/O to complete).
    *User is the amount of CPU time spent in user-mode code (outside the kernel) within the process. This is only actual CPU time used in executing the process. Other processes and time the process spends blocked do not count towards this figure.
    *Sys is the amount of CPU time spent in the kernel within the process. This means executing CPU time spent in system calls within the kernel, as opposed to library code, which is still running in user-space. Like 'user', this is only CPU time used by the process.
      User+Sys will tell you how much actual CPU time your process used.

 

婧愪唬鐮?/font>

鏍稿績綆楁硶瀵規瘮鍥?/font>



quick.c婧愪唬鐮?/font>

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #include <time.h>
 5 
 6 void quick(char* str, int low, int hig);
 7 void swap(char* a, char* b);
 8 
 9 int main()
10 {
11     char ary[] = 錛忥紡26錛?0闀跨殑瀛楃涓叉暟緇勶紝鍐呭鍙傝冧笂鍥俱?/span>
12     char* str = ary;
13     printf("calling quick");
14     quick(str, 0, strlen(str)-1);
15     return 0;
16 }
17 
18 void quick(char* str, int low, int hig) {
19     if(low >= hig) return;
20     srand(time(NULL));
21     // get a random key
22     //swap(str + low, str + low + (rand() % (hig - low + 1)));
23     int i = low, j = hig + 1, key = str[low];
24     while(1)
25     {
26         while(++<= hig && str[i] <= key);
27         while(-->= low && str[j] >  key);
28         if(i > j) break// no need to do swap
29         swap(str + i, str + j);
30     }
31     swap(str + low, str + i - 1); // swap key to i-1 position
32     quick(str, low, i - 2);
33     quick(str, i, hig);
34 }
35 
36 void swap(char* a, char* b) {
37     if(a == b) return;
38     *^= *b; *^= *a; *^= *b;
39 }
40 

 

 

myquick.c婧愪唬鐮?/font>

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 #include <time.h>
 5 
 6 void myquick(char* str, int low, int hig);
 7 void swap(char* a, char* b);
 8 
 9 int main()
10 {
11     char ary[] = 錛忥紡26錛?0闀跨殑瀛楃涓詫紝鍚宷uick.c鐨勮緭鍏ャ?/span>
12     char* str = ary;
13     printf("calling myquick");
14     myquick(str, 0, strlen(str)-1);
15     return 0;
16 }
17 
18 void myquick(char* str, int low, int hig) {
19     if(low >= hig) return;// no need to sort elements
20     // elements in the right of [m] are not sorted
21     int m = low, i = low, j = hig, key = low;
22     // skip any elements that <= [key]
23     while(i <= hig && str[i] <= str[key]) {i++; m++;}
24     // skip elements > [key]
25     while(j >= low && str[j] > str[key]) j--;
26     // initially, i==j is impossible
27     while(i <= j) {
28         // swap small one to m-position
29         if(str[i] <= str[key]) { swap(str + m++, str + i); }
30         i++;
31     }
32     swap(str + low, str + m-1);
33     myquick(str, low, m - 2);
34     myquick(str, m, hig);
35     return;
36 }
37 
38 void swap(char* a, char* b) {
39     if(a == b) return;
40     *^= *b; *^= *a; *^= *b;
41 }
42 






]]>
Difference of GDB/MI to GDBServerhttp://m.shnenglu.com/JonsenElizee/archive/2010/08/20/124039.htmlJonsenElizeeJonsenElizeeThu, 19 Aug 2010 16:47:00 GMThttp://m.shnenglu.com/JonsenElizee/archive/2010/08/20/124039.htmlhttp://m.shnenglu.com/JonsenElizee/comments/124039.htmlhttp://m.shnenglu.com/JonsenElizee/archive/2010/08/20/124039.html#Feedback0http://m.shnenglu.com/JonsenElizee/comments/commentRss/124039.htmlhttp://m.shnenglu.com/JonsenElizee/services/trackbacks/124039.html
    gdb and gdb/mi are essentially the same, except that gdb/mi lets you select the MI protocol version and command set to use (MI - or Machine Interface - is how Eclipse communicates with gdb, rather than using the normal gdb command-line interface). This is useful if you want to do something not supported by the defaults, or have a non-standard gdb, such as used on Mac OS X. gdbserver is a very lightweight debug server used for debugging embedded systems. The normal gdb/mi commands are used, but gdb must be told to connect to a gdbserver running on a remote system. There's an extra tab for specifying this information.

]]>
About C++ sizeofhttp://m.shnenglu.com/JonsenElizee/archive/2010/07/22/121020.htmlJonsenElizeeJonsenElizeeThu, 22 Jul 2010 04:20:00 GMThttp://m.shnenglu.com/JonsenElizee/archive/2010/07/22/121020.html鍘熸枃浣滆呭強鏂囩珷鏉ユ簮

1銆佷粈涔堟槸sizeof

    棣栧厛鐪嬩竴涓媠izeof鍦╩sdn涓婄殑瀹氫箟錛?/font>

    The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.

    鐪嬪埌return榪欎釜瀛楃溂錛屾槸涓嶆槸鎯沖埌浜嗗嚱鏁幫紵閿欎簡錛宻izeof涓嶆槸涓涓嚱鏁幫紝浣犺榪囩粰涓涓嚱鏁頒紶鍙傛暟錛岃屼笉鍔犳嫭鍙風殑鍚楋紵sizeof鍙互錛屾墍浠izeof涓嶆槸鍑芥暟銆傜綉涓婃湁浜鴻sizeof鏄竴鍏冩搷浣滅錛屼絾鏄垜騫朵笉榪欎箞璁や負錛屽洜涓簊izeof鏇村儚涓涓壒孌婄殑瀹忥紝瀹冩槸鍦ㄧ紪璇戦樁孌墊眰鍊肩殑銆備婦涓緥瀛愶細
 
 cout<<sizeof(int)<<endl; // 32浣嶆満涓奿nt闀垮害涓?
 cout<<sizeof(1==2)<<endl; // == 鎿嶄綔絎﹁繑鍥瀊ool綾誨瀷錛岀浉褰撲簬 cout<<sizeof(bool)<<endl;

    鍦ㄧ紪璇戦樁孌靛凡緇忚緲昏瘧涓猴細

 cout<<4<<endl;
 cout<<1<<endl;

    榪欓噷鏈変釜闄烽槺錛岀湅涓嬮潰鐨勭▼搴忥細

 int a = 0;
 cout<<sizeof(a=3)<<endl;
 cout<<a<<endl;

    杈撳嚭涓轟粈涔堟槸4錛?鑰屼笉鏄湡鏈涗腑鐨?錛?錛燂紵錛熷氨鍦ㄤ簬sizeof鍦ㄧ紪璇戦樁孌靛鐞嗙殑鐗規с傜敱浜巗izeof涓嶈兘琚紪璇戞垚鏈哄櫒鐮侊紝鎵浠izeof浣滅敤鑼冨洿鍐咃紝涔熷氨鏄?)閲岄潰鐨勫唴瀹逛篃涓嶈兘琚紪璇戯紝鑰屾槸琚浛鎹㈡垚綾誨瀷銆?鎿嶄綔絎﹁繑鍥炲乏鎿嶄綔鏁扮殑綾誨瀷錛屾墍浠=3鐩稿綋浜巌nt錛岃屼唬鐮佷篃琚浛鎹負錛?/font>

 int a = 0;
 cout<<4<<endl;
 cout<<a<<endl;

    鎵浠ワ紝sizeof鏄笉鍙兘鏀寔閾懼紡琛ㄨ揪寮忕殑錛岃繖涔熸槸鍜屼竴鍏冩搷浣滅涓嶄竴鏍風殑鍦版柟銆?/font>

    緇撹錛氫笉瑕佹妸sizeof褰撴垚鍑芥暟錛屼篃涓嶈鐪嬩綔涓鍏冩搷浣滅錛屾妸浠栧綋鎴愪竴涓壒孌婄殑緙栬瘧棰勫鐞嗐?/font>

2銆乻izeof鐨勭敤娉?/font>

    sizeof鏈変袱縐嶇敤娉曪細
 
    錛?錛塻izeof(object)
    涔熷氨鏄瀵硅薄浣跨敤sizeof錛屼篃鍙互鍐欐垚sizeof object 鐨勫艦寮忋備緥濡傦細

    錛?錛塻izeof(typename)
    涔熷氨鏄綾誨瀷浣跨敤sizeof錛屾敞鎰忚繖縐嶆儏鍐典笅鍐欐垚sizeof typename鏄潪娉曠殑銆備笅闈婦鍑犱釜渚嬪瓙璇存槑涓涓嬶細


 int i = 2;
 cout<<sizeof(i)<<endl; // sizeof(object)鐨勭敤娉曪紝鍚堢悊
 cout<<sizeof i<<endl; // sizeof object鐨勭敤娉曪紝鍚堢悊
 cout<<sizeof 2<<endl; // 2琚В鏋愭垚int綾誨瀷鐨刼bject, sizeof object鐨勭敤娉曪紝鍚堢悊
 cout<<sizeof(2)<<endl; // 2琚В鏋愭垚int綾誨瀷鐨刼bject, sizeof(object)鐨勭敤娉曪紝鍚堢悊
 cout<<sizeof(int)<<endl;// sizeof(typename)鐨勭敤娉曪紝鍚堢悊
 cout<<sizeof int<<endl; // 閿欒錛佸浜庢搷浣滅錛屼竴瀹氳鍔?)

    鍙互鐪嬪嚭錛屽姞()鏄案榪滄紜殑閫夋嫨銆?/font>

    緇撹錛氫笉璁簊izeof瑕佸璋佸彇鍊鹼紝鏈濂介兘鍔犱笂()銆?/font>


3銆佹暟鎹被鍨嬬殑sizeof

錛?錛塁++鍥烘湁鏁版嵁綾誨瀷

    32浣岰++涓殑鍩烘湰鏁版嵁綾誨瀷錛屼篃灝眂har,short int(short),int,long int(long),float,double, long double
澶у皬鍒嗗埆鏄細1錛?錛?錛?錛?錛?, 10銆?/font>

    鑰冭檻涓嬮潰鐨勪唬鐮侊細

 cout<<sizeof(unsigned int) == sizeof(int)<<endl; // 鐩哥瓑錛岃緭鍑?1

    unsigned褰卞搷鐨勫彧鏄渶楂樹綅bit鐨勬剰涔夛紝鏁版嵁闀垮害涓嶄細琚敼鍙樼殑銆?/font>

    緇撹錛歶nsigned涓嶈兘褰卞搷sizeof鐨勫彇鍊箋?/font>

錛?錛夎嚜瀹氫箟鏁版嵁綾誨瀷

    typedef鍙互鐢ㄦ潵瀹氫箟C++鑷畾涔夌被鍨嬨傝冭檻涓嬮潰鐨勯棶棰橈細

 typedef short WORD;
 typedef long DWORD;
 cout<<(sizeof(short) == sizeof(WORD))<<endl; // 鐩哥瓑錛岃緭鍑?
 cout<<(sizeof(long) == sizeof(DWORD))<<endl; // 鐩哥瓑錛岃緭鍑?

    緇撹錛氳嚜瀹氫箟綾誨瀷鐨剆izeof鍙栧肩瓑鍚屼簬瀹冪殑綾誨瀷鍘熷艦銆?/font>

錛?錛夊嚱鏁扮被鍨?/font>

    鑰冭檻涓嬮潰鐨勯棶棰橈細

 int f1(){return 0;};
 double f2(){return 0.0;}
 void f3(){}

 cout<<sizeof(f1())<<endl; // f1()榪斿洖鍊間負int錛屽洜姝よ璁や負鏄痠nt
 cout<<sizeof(f2())<<endl; // f2()榪斿洖鍊間負double錛屽洜姝よ璁や負鏄痙ouble
 cout<<sizeof(f3())<<endl; // 閿欒錛佹棤娉曞void綾誨瀷浣跨敤sizeof
 cout<<sizeof(f1)<<endl;  // 閿欒錛佹棤娉曞鍑芥暟鎸囬拡浣跨敤sizeof   
 cout<<sizeof*f2<<endl;  // *f2錛屽拰f2()絳変環錛屽洜涓哄彲浠ョ湅浣渙bject錛屾墍浠ユ嫭鍙蜂笉鏄繀瑕佺殑銆傝璁や負鏄痙ouble

    緇撹錛氬鍑芥暟浣跨敤sizeof錛屽湪緙栬瘧闃舵浼氳鍑芥暟榪斿洖鍊肩殑綾誨瀷鍙栦唬錛?/font>

4銆佹寚閽堥棶棰?/font>

    鑰冭檻涓嬮潰闂錛?br> 
 cout<<sizeof(string*)<<endl; // 4
 cout<<sizeof(int*)<<endl; // 4
 cout<<sizof(char****)<<endl; // 4

    鍙互鐪嬪埌錛屼笉綆℃槸浠涔堢被鍨嬬殑鎸囬拡錛屽ぇ灝忛兘鏄?鐨勶紝鍥犱負鎸囬拡灝辨槸32浣嶇殑鐗╃悊鍦板潃銆?/font>

    緇撹錛氬彧瑕佹槸鎸囬拡錛屽ぇ灝忓氨鏄?銆傦紙64浣嶆満涓婅鍙樻垚8涔熶笉涓瀹氾級銆?/font>

    欏轟究鍞у敡姝鍑犲彞錛孋++涓殑鎸囬拡琛ㄧず瀹為檯鍐呭瓨鐨勫湴鍧銆傚拰C涓嶄竴鏍風殑鏄紝C++涓彇娑堜簡妯″紡涔嬪垎錛屼篃灝辨槸涓嶅啀鏈塻mall,middle,big,鍙栬屼唬涔嬬殑鏄粺涓鐨刦lat銆俧lat妯″紡閲囩敤32浣嶅疄鍦板潃瀵誨潃錛岃屼笉鍐嶆槸c涓殑 segment:offset妯″紡銆備婦涓緥瀛愶紝鍋囧鏈変竴涓寚鍚戝湴鍧 f000:8888鐨勬寚閽堬紝濡傛灉鏄疌綾誨瀷鍒欐槸8888(16浣? 鍙瓨鍌ㄤ綅縐伙紝鐪佺暐孌?錛宖ar綾誨瀷鐨凜鎸囬拡鏄痜0008888(32浣嶏紝楂樹綅淇濈暀孌靛湴鍧錛屽湴浣嶄繚鐣欎綅縐?,C++綾誨瀷鐨勬寚閽堟槸f8888(32浣嶏紝鐩稿綋浜庢鍦板潃*16 + 浣嶇Щ錛屼絾瀵誨潃鑼冨洿瑕佹洿澶?銆?/font>

5銆佹暟緇勯棶棰?/font>

    鑰冭檻涓嬮潰闂錛?/font>

 char a[] = "abcdef";
 int b[20] = {3, 4};
 char c[2][3] = {"aa", "bb"};
 

 cout<<sizeof(a)<<endl; // 7
 cout<<sizeof(b)<<endl; // 20*4
 cout<<sizeof(c)<<endl; // 6
 

    鏁扮粍a鐨勫ぇ灝忓湪瀹氫箟鏃舵湭鎸囧畾錛岀紪璇戞椂緇欏畠鍒嗛厤鐨勭┖闂存槸鎸夌収鍒濆鍖栫殑鍊肩‘瀹氱殑錛屼篃灝辨槸7銆俢鏄緇存暟緇勶紝鍗犵敤鐨勭┖闂村ぇ灝忔槸鍚勭淮鏁扮殑涔樼Н錛屼篃灝辨槸6銆傚彲浠ョ湅鍑猴紝鏁扮粍鐨勫ぇ灝忓氨鏄粬鍦ㄧ紪璇戞椂琚垎閰嶇殑絀洪棿錛屼篃灝辨槸鍚勭淮鏁扮殑涔樼Н*鏁扮粍鍏冪礌鐨勫ぇ灝忋?/font>

    緇撹錛氭暟緇勭殑澶у皬鏄悇緇存暟鐨勪箻縐?鏁扮粍鍏冪礌鐨勫ぇ灝忋?/font>

    榪欓噷鏈変竴涓櫡闃憋細

 int *d = new int[10];

 cout<<sizeof(d)<<endl; // 4

    d鏄垜浠父璇寸殑鍔ㄦ佹暟緇勶紝浣嗘槸浠栧疄璐ㄤ笂榪樻槸涓涓寚閽堬紝鎵浠izeof(d)鐨勫兼槸4銆?/font>

    鍐嶈冭檻涓嬮潰鐨勯棶棰橈細

 double* (*a)[3][6];
 
 cout<<sizeof(a)<<endl;  // 4
 cout<<sizeof(*a)<<endl;  // 72
 cout<<sizeof(**a)<<endl; // 24
 cout<<sizeof(***a)<<endl; // 4
 cout<<sizeof(****a)<<endl; // 8

    a鏄竴涓緢濂囨殑瀹氫箟錛屼粬琛ㄧず涓涓寚鍚?double*[3][6]綾誨瀷鏁扮粍鐨勬寚閽堛傛棦鐒舵槸鎸囬拡錛屾墍浠izeof(a)灝辨槸4銆?/font>

    鏃㈢劧a鏄墽琛宒ouble*[3][6]綾誨瀷鐨勬寚閽堬紝*a灝辮〃紺轟竴涓猟ouble*[3][6]鐨勫緇存暟緇勭被鍨嬶紝鍥犳sizeof(*a)=3*6*sizeof(double*)=72銆傚悓鏍風殑錛?*a琛ㄧず涓涓猟ouble*[6]綾誨瀷鐨勬暟緇勶紝鎵浠izeof(**a)=6*sizeof(double*)=24銆?**a灝辮〃紺哄叾涓殑涓涓厓绱狅紝涔熷氨鏄痙ouble*浜嗭紝鎵浠izeof(***a)=4銆傝嚦浜?***a錛屽氨鏄竴涓猟ouble浜嗭紝鎵浠izeof(****a)=sizeof(double)=8銆?/font>


6銆佸悜鍑芥暟浼犻掓暟緇勭殑闂銆?/font>

    鑰冭檻涓嬮潰鐨勯棶棰橈細
#include <iostream>
using namespace std;

int Sum(int i[])
{
 int sumofi = 0;
 for (int j = 0; j < sizeof(i)/sizeof(int); j++) //瀹為檯涓婏紝sizeof(i) = 4
 {
  sumofi += i[j];
 }
 return sumofi;
}

int main()
{
 int allAges[6] = {21, 22, 22, 19, 34, 12};
 cout<<Sum(allAges)<<endl;
 system("pause");
 return 0;
}

    Sum鐨勬湰鎰忔槸鐢╯izeof寰楀埌鏁扮粍鐨勫ぇ灝忥紝鐒跺悗姹傚拰銆備絾鏄疄闄呬笂錛屼紶鍏ヨ嚜鍑芥暟Sum鐨勶紝鍙槸涓涓猧nt 綾誨瀷鐨勬寚閽堬紝鎵浠izeof(i)=4錛岃屼笉鏄?4錛屾墍浠ヤ細浜х敓閿欒鐨勭粨鏋溿傝В鍐寵繖涓棶棰樼殑鏂規硶浣挎槸鐢ㄦ寚閽堟垨鑰呭紩鐢ㄣ?/font>

    浣跨敤鎸囬拡鐨勬儏鍐碉細
int Sum(int (*i)[6])
{
 int sumofi = 0;
 for (int j = 0; j < sizeof(*i)/sizeof(int); j++) //sizeof(*i) = 24
 {
  sumofi += (*i)[j];
 }
 return sumofi;
}

int main()
{
 int allAges[] = {21, 22, 22, 19, 34, 12};
 cout<<Sum(&allAges)<<endl;
 system("pause");
 return 0;
}
    鍦ㄨ繖涓猄um閲岋紝i鏄竴涓寚鍚慽[6]綾誨瀷鐨勬寚閽堬紝娉ㄦ剰錛岃繖閲屼笉鑳界敤int Sum(int (*i)[])澹版槑鍑芥暟錛岃屾槸蹇呴』鎸囨槑瑕佷紶鍏ョ殑鏁扮粍鐨勫ぇ灝忥紝涓嶇劧sizeof(*i)鏃犳硶璁$畻銆備絾鏄湪榪欑鎯呭喌涓嬶紝鍐嶉氳繃sizeof鏉ヨ綆楁暟緇勫ぇ灝忓凡緇忔病鏈夋剰涔変簡錛屽洜涓烘鏃跺ぇ灝忔槸鎸囧畾涓?鐨勩?br>浣跨敤寮曠敤鐨勬儏鍐靛拰鎸囬拡鐩鎬技錛?/font>

int Sum(int (&i)[6])
{
 int sumofi = 0;
 for (int j = 0; j < sizeof(i)/sizeof(int); j++)
 {
  sumofi += i[j];
 }
 return sumofi;
}

int main()
{
 int allAges[] = {21, 22, 22, 19, 34, 12};
 cout<<Sum(allAges)<<endl;
 system("pause");
 return 0;
}
    榪欑鎯呭喌涓媠izeof鐨勮綆楀悓鏍鋒棤鎰忎箟錛屾墍浠ョ敤鏁扮粍鍋氬弬鏁幫紝鑰屼笖闇瑕侀亶鍘嗙殑鏃跺欙紝鍑芥暟搴旇鏈変竴涓弬鏁版潵璇存槑鏁扮粍鐨勫ぇ灝忥紝鑰屾暟緇勭殑澶у皬鍦ㄦ暟緇勫畾涔夌殑浣滅敤鍩熷唴閫氳繃sizeof姹傚箋傚洜姝や笂闈㈢殑鍑芥暟姝g‘褰㈠紡搴旇鏄細
#include <iostream>
using namespace std;

int Sum(int *i, unsigned int n)
{
 int sumofi = 0;
 for (int j = 0; j < n; j++)
 {
  sumofi += i[j];
 }
 return sumofi;
}

int main()
{
 int allAges[] = {21, 22, 22, 19, 34, 12};
 cout<<Sum(i, sizeof(allAges)/sizeof(int))<<endl;
 system("pause");
 return 0;
}

7銆佸瓧絎︿覆鐨剆izeof鍜宻trlen

    鑰冭檻涓嬮潰鐨勯棶棰橈細

 char a[] = "abcdef";
 char b[20] = "abcdef";
 string s = "abcdef";

 cout<<strlen(a)<<endl;  // 6錛屽瓧絎︿覆闀垮害
 cout<<sizeof(a)<<endl;  // 7錛屽瓧絎︿覆瀹歸噺
 cout<<strlen(b)<<endl;  // 6錛屽瓧絎︿覆闀垮害
 cout<<strlen(b)<<endl;  // 20錛屽瓧絎︿覆瀹歸噺
 cout<<sizeof(s)<<endl;  // 12, 榪欓噷涓嶄唬琛ㄥ瓧絎︿覆鐨勯暱搴︼紝鑰屾槸string綾葷殑澶у皬
 cout<<strlen(s)<<endl;  // 閿欒錛乻涓嶆槸涓涓瓧絎︽寚閽堛?/font>

 a[1] = '\0';
 cout<<strlen(a)<<endl;  // 1
 cout<<sizeof(a)<<endl;  // 7錛宻izeof鏄亽瀹氱殑


    strlen鏄鎵句粠鎸囧畾鍦板潃寮濮嬶紝鍒板嚭鐜扮殑絎竴涓?涔嬮棿鐨勫瓧絎︿釜鏁幫紝浠栨槸鍦ㄨ繍琛岄樁孌墊墽琛岀殑錛岃宻izeof鏄緱鍒版暟鎹殑澶у皬錛屽湪榪欓噷鏄緱鍒板瓧絎︿覆鐨勫閲忋傛墍浠ュ鍚屼竴涓璞¤岃█錛宻izeof鐨勫兼槸鎭掑畾鐨勩俿tring鏄疌++綾誨瀷鐨勫瓧絎︿覆錛屼粬鏄竴涓被錛屾墍浠izeof(s)琛ㄧず鐨勫茍涓嶆槸瀛楃涓茬殑闀垮害錛岃屾槸綾籹tring鐨勫ぇ灝忋俿trlen(s)鏍規湰灝辨槸閿欒鐨勶紝鍥犱負strlen鐨勫弬鏁版槸涓涓瓧絎︽寚閽堬紝濡傛灉鎯崇敤strlen寰楀埌s瀛楃涓茬殑闀垮害錛屽簲璇ヤ嬌鐢╯izeof(s.c_str())錛屽洜涓簊tring鐨勬垚鍛樺嚱鏁癱_str()榪斿洖鐨勬槸瀛楃涓茬殑棣栧湴鍧銆傚疄闄呬笂錛宻tring綾繪彁渚涗簡鑷繁鐨勬垚鍛樺嚱鏁版潵寰楀埌瀛楃涓茬殑瀹歸噺鍜岄暱搴︼紝鍒嗗埆鏄疌apacity()鍜孡ength()銆俿tring灝佽浜嗗父鐢ㄤ簡瀛楃涓叉搷浣滐紝鎵浠ュ湪C++寮鍙戣繃紼嬩腑錛屾渶濂戒嬌鐢╯tring浠f浛C綾誨瀷鐨勫瓧絎︿覆銆?/font>

鎴戞敞錛氬叧浜巗izeof(string)錛屽ソ鍍忎笉鍚岀殑瀹炵幇榪斿洖鐨勭粨鏋滀笉涓鏍鳳細
DevCPP錛?
VS2005錛?2


8銆佷粠union鐨剆izeof闂鐪媍pu鐨勫鐣?/font>

    鑰冭檻涓嬮潰闂錛氾紙榛樿瀵歸綈鏂瑰紡錛?/font>

 union u
 {
  double a;
  int b;
 };

 union u2
 {
  char a[13];
  int b;
 };

 union u3
 {
  char a[13];
  char b;
 };

 cout<<sizeof(u)<<endl;  // 8
 cout<<sizeof(u2)<<endl;  // 16
 cout<<sizeof(u3)<<endl;  // 13

    閮界煡閬搖nion鐨勫ぇ灝忓彇鍐充簬瀹冩墍鏈夌殑鎴愬憳涓紝鍗犵敤絀洪棿鏈澶х殑涓涓垚鍛樼殑澶у皬銆傛墍浠ュ浜巙鏉ヨ錛屽ぇ灝忓氨鏄渶澶х殑double綾誨瀷鎴愬憳a浜嗭紝鎵浠izeof(u)=sizeof(double)=8銆備絾鏄浜巙2鍜寀3錛屾渶澶х殑絀洪棿閮芥槸char[13]綾誨瀷鐨勬暟緇勶紝涓轟粈涔坲3鐨勫ぇ灝忔槸13錛岃寀2鏄?6鍛紵鍏抽敭鍦ㄤ簬u2涓殑鎴愬憳int b銆傜敱浜巌nt綾誨瀷鎴愬憳鐨勫瓨鍦紝浣縰2鐨勫榻愭柟寮忓彉鎴?錛屼篃灝辨槸璇達紝u2鐨勫ぇ灝忓繀欏誨湪4鐨勫鐣屼笂錛屾墍浠ュ崰鐢ㄧ殑絀洪棿鍙樻垚浜?6錛堟渶鎺ヨ繎13鐨勫鐣岋級銆?/font>

    緇撹錛氬鍚堟暟鎹被鍨嬶紝濡倁nion錛宻truct錛宑lass鐨勫榻愭柟寮忎負鎴愬憳涓榻愭柟寮忔渶澶х殑鎴愬憳鐨勫榻愭柟寮忋?/font>

    欏轟究鎻愪竴涓婥PU瀵圭晫闂錛?2鐨凜++閲囩敤8浣嶅鐣屾潵鎻愰珮榪愯閫熷害錛屾墍浠ョ紪璇戝櫒浼氬敖閲忔妸鏁版嵁鏀懼湪瀹冪殑瀵圭晫涓婁互鎻愰珮鍐呭瓨鍛戒腑鐜囥傚鐣屾槸鍙互鏇存敼鐨勶紝浣跨敤#pragma pack(x)瀹忓彲浠ユ敼鍙樼紪璇戝櫒鐨勫鐣屾柟寮忥紝榛樿鏄?銆侰++鍥烘湁綾誨瀷鐨勫鐣屽彇緙栬瘧鍣ㄥ鐣屾柟寮忎笌鑷韓澶у皬涓緝灝忕殑涓涓備緥濡傦紝鎸囧畾緙栬瘧鍣ㄦ寜2瀵圭晫錛宨nt綾誨瀷鐨勫ぇ灝忔槸4錛屽垯int鐨勫鐣屼負2鍜?涓緝灝忕殑2銆傚湪榛樿鐨勫鐣屾柟寮忎笅錛屽洜涓哄嚑涔庢墍鏈夌殑鏁版嵁綾誨瀷閮戒笉澶т簬榛樿鐨勫鐣屾柟寮?錛堥櫎浜唋ong double錛夛紝鎵浠ユ墍鏈夌殑鍥烘湁綾誨瀷鐨勫鐣屾柟寮忓彲浠ヨ涓哄氨鏄被鍨嬭嚜韜殑澶у皬銆傛洿鏀逛竴涓嬩笂闈㈢殑紼嬪簭錛?/font>

 #pragma pack(2)
 union u2
 {
  char a[13];
  int b;
 };

 union u3
 {
  char a[13];
  char b;
 };
 #pragma pack(8)

 cout<<sizeof(u2)<<endl;  // 14
 cout<<sizeof(u3)<<endl;  // 13

    鐢變簬鎵嬪姩鏇存敼瀵圭晫鏂瑰紡涓?錛屾墍浠nt鐨勫鐣屼篃鍙樻垚浜?錛寀2鐨勫鐣屽彇鎴愬憳涓渶澶х殑瀵圭晫錛屼篃鏄?浜嗭紝鎵浠ユ鏃秙izeof(u2)=14銆?/font>

    緇撹錛欳++鍥烘湁綾誨瀷鐨勫鐣屽彇緙栬瘧鍣ㄥ鐣屾柟寮忎笌鑷韓澶у皬涓緝灝忕殑涓涓?/font>


9銆乻truct鐨剆izeof闂

    鍥犱負瀵歸綈闂浣跨粨鏋勪綋鐨剆izeof鍙樺緱姣旇緝澶嶆潅錛岀湅涓嬮潰鐨勪緥瀛愶細(榛樿瀵歸綈鏂瑰紡涓?

 struct s1
 {
  char a;
  double b;
  int c;
  char d; 
 };

 struct s2
 {
  char a;
  char b;
  int c;
  double d;
 };

 cout<<sizeof(s1)<<endl; // 24
 cout<<sizeof(s2)<<endl; // 16

    鍚屾牱鏄袱涓猚har綾誨瀷錛屼竴涓猧nt綾誨瀷錛屼竴涓猟ouble綾誨瀷錛屼絾鏄洜涓哄鐣岄棶棰橈紝瀵艱嚧浠栦滑鐨勫ぇ灝忎笉鍚屻傝綆楃粨鏋勪綋澶у皬鍙互閲囩敤鍏冪礌鎽嗘斁娉曪紝鎴戜婦渚嬪瓙璇存槑涓涓嬶細棣栧厛錛孋PU鍒ゆ柇緇撴瀯浣撶殑瀵圭晫錛屾牴鎹笂涓鑺傜殑緇撹錛宻1鍜宻2鐨勫鐣岄兘鍙栨渶澶х殑鍏冪礌綾誨瀷錛屼篃灝辨槸double綾誨瀷鐨勫鐣?銆傜劧鍚庡紑濮嬫憜鏀炬瘡涓厓绱犮?br>    瀵逛簬s1錛岄鍏堟妸a鏀懼埌8鐨勫鐣岋紝鍋囧畾鏄?錛屾鏃朵笅涓涓┖闂茬殑鍦板潃鏄?錛屼絾鏄笅涓涓厓绱燿鏄痙ouble綾誨瀷錛岃鏀懼埌8鐨勫鐣屼笂錛岀1鏈鎺ヨ繎鐨勫湴鍧鏄?浜嗭紝鎵浠琚斁鍦ㄤ簡8錛屾鏃朵笅涓涓┖闂插湴鍧鍙樻垚浜?6錛屼笅涓涓厓绱燾鐨勫鐣屾槸4錛?6鍙互婊¤凍錛屾墍浠鏀懼湪浜?6錛屾鏃朵笅涓涓┖闂插湴鍧鍙樻垚浜?0錛屼笅涓涓厓绱燿闇瑕佸鐣?錛屼篃姝eソ钀藉湪瀵圭晫涓婏紝鎵浠鏀懼湪浜?0錛岀粨鏋勪綋鍦ㄥ湴鍧21澶勭粨鏉熴傜敱浜巗1鐨勫ぇ灝忛渶瑕佹槸8鐨勫嶆暟錛屾墍浠?1-23鐨勭┖闂磋淇濈暀錛宻1鐨勫ぇ灝忓彉鎴愪簡24銆?br>    瀵逛簬s2錛岄鍏堟妸a鏀懼埌8鐨勫鐣岋紝鍋囧畾鏄?錛屾鏃朵笅涓涓┖闂插湴鍧鏄?錛屼笅涓涓厓绱犵殑瀵圭晫涔熸槸1錛屾墍浠鎽嗘斁鍦?錛屼笅涓涓┖闂插湴鍧鍙樻垚浜?錛涗笅涓涓厓绱燾鐨勫鐣屾槸4錛屾墍浠ュ彇紱?鏈榪戠殑鍦板潃4鎽嗘斁c錛屼笅涓涓┖闂插湴鍧鍙樻垚浜?錛屼笅涓涓厓绱燿鐨勫鐣屾槸8錛屾墍浠鎽嗘斁鍦?錛屾墍鏈夊厓绱犳憜鏀懼畬姣曪紝緇撴瀯浣撳湪15澶勭粨鏉燂紝鍗犵敤鎬葷┖闂翠負16錛屾濂芥槸8鐨勫嶆暟銆?/font>

    榪欓噷鏈変釜闄烽槺錛屽浜庣粨鏋勪綋涓殑緇撴瀯浣撴垚鍛橈紝涓嶈璁や負瀹冪殑瀵歸綈鏂瑰紡灝辨槸浠栫殑澶у皬錛岀湅涓嬮潰鐨勪緥瀛愶細

 struct s1
 {
  char a[8];
 };

 struct s2
 {
  double d;
 };

 struct s3
 {
  s1 s;
  char a;
 };

 struct s4
 {
  s2 s;
  char a; 
 };

 cout<<sizeof(s1)<<endl; // 8
 cout<<sizeof(s2)<<endl; // 8
 cout<<sizeof(s3)<<endl; // 9
 cout<<sizeof(s4)<<endl; // 16;

    s1鍜宻2澶у皬铏界劧閮芥槸8錛屼絾鏄痵1鐨勫榻愭柟寮忔槸1錛宻2鏄?錛坉ouble錛夛紝鎵浠ュ湪s3鍜宻4涓墠鏈夎繖鏍風殑宸紓銆?/font>

    鎵浠ワ紝鍦ㄨ嚜宸卞畾涔夌粨鏋勪綋鐨勬椂鍊欙紝濡傛灉絀洪棿绱у紶鐨勮瘽錛屾渶濂借冭檻瀵歸綈鍥犵礌鏉ユ帓鍒楃粨鏋勪綋閲岀殑鍏冪礌銆?/font>

10銆佷笉瑕佽double騫叉壈浣犵殑浣嶅煙

    鍦ㄧ粨鏋勪綋鍜岀被涓紝鍙互浣跨敤浣嶅煙鏉ヨ瀹氭煇涓垚鍛樻墍鑳藉崰鐢ㄧ殑絀洪棿錛屾墍浠ヤ嬌鐢ㄤ綅鍩熻兘鍦ㄤ竴瀹氱▼搴︿笂鑺傜渷緇撴瀯浣撳崰鐢ㄧ殑絀洪棿銆備笉榪囪冭檻涓嬮潰鐨勪唬鐮侊細

 struct s1
 {
  int i: 8;
  int j: 4;
  double b;
  int a:3;
 };

 struct s2
 {
  int i;
  int j;
  double b;
  int a;
 };

 struct s3
 {
  int i;
  int j;
  int a;
  double b;
 };

 struct s4
 {
  int i: 8;
  int j: 4;
  int a:3;
  double b;
 };

 cout<<sizeof(s1)<<endl;  // 24
 cout<<sizeof(s2)<<endl;  // 24
 cout<<sizeof(s3)<<endl;  // 24
 cout<<sizeof(s4)<<endl;  // 16

    鍙互鐪嬪埌錛屾湁double瀛樺湪浼氬共娑夊埌浣嶅煙錛坰izeof鐨勭畻娉曞弬鑰冧笂涓鑺傦級錛屾墍浠ヤ嬌鐢ㄤ綅鍩熺殑鐨勬椂鍊欙紝鏈濂芥妸float綾誨瀷鍜宒ouble綾誨瀷鏀懼湪紼嬪簭鐨勫紑濮嬫垨鑰呮渶鍚庛?/font>

    絎竴嬈″啓涓滆タ錛屽彂鐜拌嚜宸辯殑琛ㄨ揪鑳藉姏澶樊浜嗭紝鐭ラ亾鐨勪笢瑗胯涓嶅嚭鏉ワ紝璁插嚭鏉ョ殑涓滆タ鍒漢涔熺湅涓嶆噦錛屽懙鍛點傚彟澶栵紝C99鏍囧噯鐨剆izeof宸茬粡鍙互宸ヤ綔鍦ㄨ繍琛屾椂浜嗭紝鎵撶畻鏈榪戞壘涓敮鎸丆99鐨勭紪璇戝櫒鐮旂┒涓涓嬨?/font>




]]>
My Palindrome Algorithmhttp://m.shnenglu.com/JonsenElizee/archive/2010/07/21/120976.htmlJonsenElizeeJonsenElizeeWed, 21 Jul 2010 09:19:00 GMThttp://m.shnenglu.com/JonsenElizee/archive/2010/07/21/120976.htmlhttp://m.shnenglu.com/JonsenElizee/comments/120976.htmlhttp://m.shnenglu.com/JonsenElizee/archive/2010/07/21/120976.html#Feedback1http://m.shnenglu.com/JonsenElizee/comments/commentRss/120976.htmlhttp://m.shnenglu.com/JonsenElizee/services/trackbacks/120976.htmlIt only can make a judge on single-byte character string.
Can anybody write a palindrome algorithm for Chinese character string? thank you at first.




]]>
Funny printf ++http://m.shnenglu.com/JonsenElizee/archive/2010/07/21/120965.htmlJonsenElizeeJonsenElizeeWed, 21 Jul 2010 07:19:00 GMThttp://m.shnenglu.com/JonsenElizee/archive/2010/07/21/120965.htmlhttp://m.shnenglu.com/JonsenElizee/comments/120965.htmlhttp://m.shnenglu.com/JonsenElizee/archive/2010/07/21/120965.html#Feedback1http://m.shnenglu.com/JonsenElizee/comments/commentRss/120965.htmlhttp://m.shnenglu.com/JonsenElizee/services/trackbacks/120965.htmlThe following codes are tested on VS2005.
For reply from role0523, please pay attention to compiler version and so on.
Thanks for any reply from anyone.


  




]]>
Potential Hazards in C/C++http://m.shnenglu.com/JonsenElizee/archive/2010/07/20/120880.htmlJonsenElizeeJonsenElizeeTue, 20 Jul 2010 07:44:00 GMThttp://m.shnenglu.com/JonsenElizee/archive/2010/07/20/120880.htmlHere is a image for all potential hazards.
Though, you would say one or more of them are not dangerous, please pay attention to them during your coding work.



]]>
久久不见久久见免费视频7| 色综合久久精品中文字幕首页| 亚洲午夜精品久久久久久人妖| 欧美亚洲国产精品久久蜜芽| 久久国产成人精品麻豆| 久久久亚洲精品蜜桃臀| 久久无码专区国产精品发布| …久久精品99久久香蕉国产| 青青草国产精品久久| 伊人久久无码中文字幕| 成人精品一区二区久久| 久久天天躁狠狠躁夜夜avapp| 国产精品天天影视久久综合网| 久久综合狠狠综合久久97色| 久久一日本道色综合久久| 久久国产午夜精品一区二区三区| 狠狠综合久久综合88亚洲| 久久亚洲精品成人av无码网站| 无码8090精品久久一区 | 久久精品女人天堂AV麻| 久久无码AV中文出轨人妻| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久99久国产麻精品66| 日本欧美国产精品第一页久久| 国产亚洲婷婷香蕉久久精品| 无遮挡粉嫩小泬久久久久久久 | 亚洲伊人久久大香线蕉苏妲己| 亚洲愉拍99热成人精品热久久| 久久精品视频91| 国産精品久久久久久久| 亚洲一区中文字幕久久| 精品久久一区二区三区| 精品久久久久久无码专区| 色狠狠久久AV五月综合| 久久免费看黄a级毛片| 一本久久免费视频| 国内精品伊人久久久影院| 合区精品久久久中文字幕一区| 亚洲国产精品无码久久九九| 久久久久一级精品亚洲国产成人综合AV区| 久久夜色精品国产亚洲|