锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鎶鏈潰璇曟潵浜嗕袱涓漢錛屼竴涓綋鍨嬪.紜曞氨鍙.鍝ュ惂錛屼竴涓皷澶村ジ鑴戞埓涓溂闀滃氨縐板叾涓哄皷寮熷惂錛庛澹摜涓婃潵闂簡浜涘熀紜鍜岀煡璇嗛潰涓婄殑涓滆タ錛屾垜鏄湁涓璇翠竴錛屽疄浜嬫眰鏄紟銆
灝栧紵娌夐潤浜嗕細灝卞紑濮嬩貢鍙簡錛庝笢涓鐐硅タ涓鐐癸紝濂囨帆鎶宸э紝鑷互涓烘槸錛庝竴浜涢棶棰橀兘涓嶇煡浠栧湪闂暐錛庤佸瓙鍚潃灝辯伀澶э紝鏈鐪嬩笉鎯崐鐡墮唻鐨勮幢浜轟簡錛庛
闅忓悗鏉ヤ簡浜轟簨錛岃繖濂崇殑鏇存伓蹇冿紝鍢翠笂闀夸簡涓粦鐐癸紝濂藉儚鐩鎬功涓婅榪欑濂崇殑鎬庝箞鎬庣潃鏉ョ潃錛屽弽姝e榪欑浜鴻瘎浠蜂笉澶ソ錛庢灉鐒訛紝浠庡ス闂殑闂鐪嬪ソ鍍忔槸鍦ㄥ拷鎮(zhèn)狅紝鏃朵笉鏃惰繕鎵娣瑧涓涓嬶紝闂烽獨鍗佽凍錛?br />鐪嬭繖鏍峰瓙錛岃繖縐嶅叕鍙歌繖縐嶄漢涓嶅幓涔熺艦錛?
]]>
鎴戠湅浜嗘劅瑙夋湁鐐瑰濡欎簡錛?/p>
]]>
#include <iostream>
using namespace std;
struct t
{
char l;
float a;
int b[3];
};
void func(char ch[100])

{
cout << "sizeof ch :" <<sizeof(ch) <<endl;
}
void main()

{
char * s = "hello";
char d[] = "hello";
char r[100];
func(r);
cout << “sizeof s :”<<sizeof(s)<<endl
<< "sizeof t :"<<sizeof(t) <<endl
}
鍐嶅笘杞澆鏉ョ殑6鏉$悊璁猴細
sizeof鎿嶄綔絎︾殑緇撴灉綾誨瀷鏄痵ize_t錛屽畠鍦ㄥご鏂囦歡涓璽ypedef涓簎nsigned int綾誨瀷銆傝綾誨瀷淇濊瘉鑳藉綰沖疄鐜版墍寤虹珛鐨勬渶澶у璞$殑瀛楄妭澶у皬銆?br>
銆銆 1銆佽嫢鎿嶄綔鏁板叿鏈夌被鍨媍har銆乽nsigned char鎴杝igned char錛屽叾緇撴灉絳変簬1銆?br>
銆銆 ANSI C姝e紡瑙勫畾瀛楃綾誨瀷涓?瀛楄妭銆?br>
銆銆 2銆乮nt銆乽nsigned int 銆乻hort int銆乽nsigned short 銆乴ong int 銆乽nsigned long 銆乫loat銆乨ouble銆乴ong double綾誨瀷鐨剆izeof 鍦ˋNSI C涓病鏈夊叿浣撹瀹氾紝澶у皬渚濊禆浜庡疄鐜幫紝涓鑸彲鑳藉垎鍒負4銆?銆?銆?銆?銆?銆?銆?銆?0銆?br>
sizeof(c) = 1;
銆銆 3銆佸綋鎿嶄綔鏁版槸鎸囬拡鏃訛紝sizeof渚濊禆浜庣紪璇戝櫒銆備緥濡侻icrosoft C/C++7.0涓紝near綾繪寚閽堝瓧鑺傛暟涓?錛宖ar銆乭uge綾繪寚閽堝瓧鑺傛暟涓?銆備竴鑸琔nix鐨勬寚閽堝瓧鑺傛暟涓?銆?br>
瀵逛簬紺轟緥紼嬪簭涓殑sizeof s錛屾牴鎹3鏉★紝s鏄釜瀛楃涓茬殑鎸囬拡錛岃緭鍑轟負 sizeof s :4
銆銆 4銆佸綋鎿嶄綔鏁板叿鏈夋暟緇勭被鍨嬫椂錛屽叾緇撴灉鏄暟緇勭殑鎬誨瓧鑺傛暟銆?br>
瀵逛簬sizeof d[] 錛屾牴鎹4鏉★紝d鏄暟緇勭被鍨嬶紝榪斿洖鐨勬槸鏁扮粍鐨勫瓧鑺傛暟鍐嶅姞涓婃湯灝劇殑null涓瀛楄妭錛宻izeof d[] = hello : 6
銆銆 5銆佽仈鍚堢被鍨嬫搷浣滄暟鐨剆izeof鏄叾鏈澶у瓧鑺傛垚鍛樼殑瀛楄妭鏁般傜粨鏋勭被鍨嬫搷浣滄暟鐨剆izeof鏄繖縐嶇被鍨嬪璞$殑鎬誨瓧鑺傛暟錛屽寘鎷換浣曞灚琛ュ湪鍐呫?br>
銆銆 璁╂垜浠湅濡備笅緇撴瀯錛?br>
銆銆 struct {char b; double x;} a;
銆銆 鍦ㄦ煇浜涙満鍣ㄤ笂sizeof錛坅錛?12錛岃屼竴鑸瑂izeof錛坈har錛? sizeof錛坉ouble錛?9銆?br>
銆銆 榪欐槸鍥犱負緙栬瘧鍣ㄥ湪鑰冭檻瀵歸綈闂鏃訛紝鍦ㄧ粨鏋勪腑鎻掑叆絀轟綅浠ユ帶鍒跺悇鎴愬憳瀵硅薄鐨勫湴鍧瀵歸綈銆傚double綾誨瀷鐨勭粨鏋勬垚鍛榵瑕佹斁鍦ㄨ4鏁撮櫎鐨勫湴鍧銆?br> 瀵逛簬sizeof t 錛屽榻愬悗t鐨勫ぇ灝忎負20鏁呰緭鍑虹粨鏋滀負sizeof t :20
銆銆 6銆佸鏋滄搷浣滄暟鏄嚱鏁頒腑鐨勬暟緇勫艦鍙傛垨鍑芥暟綾誨瀷鐨勫艦鍙傦紝sizeof緇欏嚭鍏舵寚閽堢殑澶у皬銆?br> sizeof ch :4
042C969F 83FD 03 cmp ebp, 3
042C96A2 0F87 02010000 ja 042C97AA
042C96A8 FF24AD F8972C04 jmp dword ptr [ebp*4+42C97F8] ; js.042C96CB
042C96AF 8BCF mov ecx, edi
042C96B1 2BCE sub ecx, esi
042C96B3 51 push ecx
042C96B4 8B4C24 24 mov ecx, dword ptr [esp+24]
042C96B8 56 push esi
042C96B9 8D9424 94000000 lea edx, dword ptr [esp+94]
042C96C0 52 push edx
042C96C1 E8 0A86F8FF call 04251CD0
042C96C6 E9 E7000000 jmp 042C97B2
042C96CB 8BC7 mov eax, edi
042C96CD 2BC6 sub eax, esi
042C96CF 50 push eax
042C96D0 56 push esi
042C96D1 8D4C24 30 lea ecx, dword ptr [esp+30]
042C96D5 51 push ecx
042C96D6 8D8C24 98000000 lea ecx, dword ptr [esp+98]
042C96DD E8 2EE6F8FF call 04257D10
042C96E2 3958 18 cmp dword ptr [eax+18], ebx
042C96E5 72 05 jb short 042C96EC
042C96E7 8B40 04 mov eax, dword ptr [eax+4]
042C96EA EB 03 jmp short 042C96EF
042C96EC 83C0 04 add eax, 4
042C96EF 50 push eax
042C96F0 E8 06450400 call 0430DBFB
042C96F5 8B5424 28 mov edx, dword ptr [esp+28]
042C96F9 83C4 04 add esp, 4
042C96FC 395C24 40 cmp dword ptr [esp+40], ebx
042C9700 8902 mov dword ptr [edx], eax
042C9702 0F82 AA000000 jb 042C97B2
042C9708 8B4424 2C mov eax, dword ptr [esp+2C]
042C970C 50 push eax
042C970D E8 F8330400 call 0430CB0A
042C9712 83C4 04 add esp, 4
042C9715 E9 98000000 jmp 042C97B2
042C971A 8BCF mov ecx, edi
042C971C 2BCE sub ecx, esi
042C971E 51 push ecx
042C971F 56 push esi
042C9720 8D5424 4C lea edx, dword ptr [esp+4C]
042C9724 52 push edx
042C9725 8D8C24 98000000 lea ecx, dword ptr [esp+98]
042C972C E8 DFE5F8FF call 04257D10
042C9731 3958 18 cmp dword ptr [eax+18], ebx
042C9734 72 05 jb short 042C973B
042C9736 8B40 04 mov eax, dword ptr [eax+4]
042C9739 EB 03 jmp short 042C973E
042C973B 83C0 04 add eax, 4
042C973E 50 push eax
042C973F E8 B7440400 call 0430DBFB
042C9744 8B4C24 1C mov ecx, dword ptr [esp+1C]
042C9748 83C4 04 add esp, 4
042C974B 395C24 5C cmp dword ptr [esp+5C], ebx
042C974F 8901 mov dword ptr [ecx], eax
042C9751 72 5F jb short 042C97B2
042C9753 8B5424 48 mov edx, dword ptr [esp+48]
042C9757 52 push edx
042C9758 E8 AD330400 call 0430CB0A
042C975D 83C4 04 add esp, 4
042C9760 EB 50 jmp short 042C97B2
042C9762 8BC7 mov eax, edi
042C9764 2BC6 sub eax, esi
042C9766 50 push eax
042C9767 56 push esi
042C9768 8D4C24 68 lea ecx, dword ptr [esp+68]
042C976C 51 push ecx
042C976D 8D8C24 98000000 lea ecx, dword ptr [esp+98]
042C9774 E8 97E5F8FF call 04257D10
042C9779 3958 18 cmp dword ptr [eax+18], ebx
042C977C 72 05 jb short 042C9783
042C977E 8B40 04 mov eax, dword ptr [eax+4]
042C9781 EB 03 jmp short 042C9786
042C9783 83C0 04 add eax, 4
042C9786 50 push eax
042C9787 E8 6F440400 call 0430DBFB
042C978C 8B5424 20 mov edx, dword ptr [esp+20]
042C9790 83C4 04 add esp, 4
042C9793 395C24 78 cmp dword ptr [esp+78], ebx
042C9797 8902 mov dword ptr [edx], eax
042C9799 72 17 jb short 042C97B2
042C979B 8B4424 64 mov eax, dword ptr [esp+64]
042C979F 50 push eax
042C97A0 E8 65330400 call 0430CB0A
042C97A5 83C4 04 add esp, 4
042C97A8 EB 08 jmp short 042C97B2
042C97AA C74424 14 000000>mov dword ptr [esp+14], 0
042C97B2 83C5 01 add ebp, 1

鍦↗effrey鐨凟rror Show紼嬪簭浣滆呰嚜瀹氫箟浜嗕竴孌靛畯
#define chHANDLE_DLGMSG(hWnd, message, fn) \
case (message): return (SetDlgMsgResult(hWnd, uMsg, \
HANDLE_##message((hWnd), (wParam), (lParam), (fn))))
HANDLE_##message((hWnd), (wParam), (lParam), (fn))鏄熺敤浜唚indows.h閲岄潰鐨?/p>
#define HANDLE_MSG(hwnd, message, fn)
case (message): return HANDLE_##message((hwnd), (wParam), (lParam), (fn))
濡傛灉message鏄擠錛伎錛o疾錛ワ肌錛寸殑璇濓紝榪欎釜搴旇鏄?/p>
HANDLE_WM_CREATE((hwnd), (wParam), (lParam), (Cls_OnCreate))
錛僤efine HANDLE_WM_CREATE(hwnd, wParam, lParam, fn) \
((fn)((hwnd), (LPCREATESTRUCT)(lParam)) ? 0L : (LRESULT)-1L)
閭d箞瀹忓睍寮涓猴細return Cls_OnCreate(hwnd, (LPCREATESTRUCT)(lParam) )? 0L : (LRESULT)-1L;
浣嗘槸鍦ㄥ璇濇娑堟伅澶勭悊涓?瀵硅瘽妗嗚繃紼嬪嚱鏁板簲璇ュ湪澶勭悊浜嗘秷鎭殑鎯呭喌涓嬭繑鍥濼RUE錛屽鏋滄病鏈夊鐞嗭紝鍒欒繑鍥濬ALSE銆傚鏋滃璇濇榪囩▼榪斿洖浜咶ALSE錛岄偅涔堝璇濇綆$悊鍣ㄤ負榪欐潯娑堟伅鍑嗗榛樿鐨勫璇濇搷浣溿傚鏋滃璇濇澶勭悊浜嗕竴涓渶瑕佺壒瀹氳繑鍥炲肩殑娑堟伅錛屽垯瀵硅瘽妗嗙殑榪斿洖鍊煎簲璇ヨ璁劇疆涓鴻皟鐢⊿etWindowLong鍚庣殑榪斿洖鍊?榪欎簺鐗規(guī)畩娑堟伅鏈?
? WM_CHARTOITEM
? WM_COMPAREITEM
? WM_CTLCOLORBTN
? WM_CTLCOLORDLG
? WM_CTLCOLOREDIT
? WM_CTLCOLORLISTBOX
? WM_CTLCOLORSCROLLBAR
? WM_CTLCOLORSTATIC
? WM_INITDIALOG
? WM_QUERYDRAGICON
? WM_VKEYTOITEM
鎵浠ュ湪澶勭悊WM_INITDIALOG 鏃?鎴戜滑涓嶈兘鍗曠函鐨勮皟鐢ㄦ秷鎭垎嫻佸櫒.
鑰屽湪澶勭悊錛鳳輯錛匡跡錛輯錛肌錛激涓紝浠巜indowsx.h鍙互鐪嬪埌:
/* void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) */
#define HANDLE_WM_COMMAND(hwnd, wParam, lParam, fn) \
((fn)((hwnd), (int)(LOWORD(wParam)), (HWND)(lParam), (UINT)HIWORD(wParam)), 0L)
void Cls_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
Cls_OnCommand鐢變簬鏄釜void鍨嬬殑鍑芥暟錛屾槸娌℃湁榪斿洖鍊肩殑錛屽洜姝indows榛樿榪欑娑堟伅澶勭悊榪囩▼蹇呴』榪斿洖涓涓?鍊鹼紝鑰岃繑鍥?鍊間笉灝辮〃紺烘垜浠殑娑堟伅榪囩▼涓嶅鐞嗚繖涓秷鎭?榪欐槸鐭涚浘鐨?濡傛灉鐩存帴浣跨敤HANDLE_WM_COMMAND(hwnd, wParam, lParam, Dlg_OnCommand) ;鎸夐挳浼氭病鏈夊弽搴?鍏抽棴涔熶笉琛?鎵浠ュ彲浠ヤ嬌鐢ㄤ嬌鐢ㄤ笅闈㈢殑瀹忚В鍐?/p>
#define SetDlgMsgResult(hwnd, msg, result) (( \
(msg) == WM_CTLCOLORMSGBOX || \
(msg) == WM_CTLCOLOREDIT || \
(msg) == WM_CTLCOLORLISTBOX || \
(msg) == WM_CTLCOLORBTN || \
(msg) == WM_CTLCOLORDLG || \
(msg) == WM_CTLCOLORSCROLLBAR || \
(msg) == WM_CTLCOLORSTATIC || \
(msg) == WM_COMPAREITEM || \
(msg) == WM_VKEYTOITEM || \
(msg) == WM_CHARTOITEM || \
(msg) == WM_QUERYDRAGICON || \
(msg) == WM_INITDIALOG \
) ? (BOOL)(result) : (SetWindowLong((hwnd), DWL_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE))
#define chHANDLE_DLGMSG(hWnd, message, fn) \
case (message): return (SetDlgMsgResult(hWnd, uMsg, \
HANDLE_##message((hWnd), (wParam), (lParam), (fn))))
浠庤繖涓や釜瀹忓彲浠ュ緱鍒?濡傛灉鏄壒孌婃秷鎭殑璇濋偅涔堣繑鍥為粯璁?,騫惰緗鏄庢秷鎭鐞?濡傛灉WM_COMMAND鐨勮瘽,閭d箞榪斿洖SetWindowLong((hwnd), DWL_MSGRESULT, (LPARAM)(LRESULT)(result)), TRUE),涓鑸負TRUE琛ㄦ槑宸茬粡澶勭悊
2銆佷粠璁塊棶鏉冮檺鐨勮搴︽潵鐪嬶紝宓屽綾誨悕涓庡畠鐨勫鍥寸被鐨勫璞℃垚鍛樺悕鍏鋒湁鐩稿悓鐨勮闂潈闄愯鍒欍備笉鑳借闂祵濂楃被鐨勫璞′腑鐨勭鏈夋垚鍛樺嚱鏁幫紝涔熶笉鑳藉澶栧洿綾葷殑縐佹湁閮ㄥ垎涓殑宓屽綾誨緩绔嬪璞°?
3銆佸祵濂楃被涓殑鎴愬憳鍑芥暟鍙互鍦ㄥ畠鐨勭被浣撳瀹氫箟銆?
4銆佸祵濂楃被涓鏄庣殑鎴愬憳涓嶆槸澶栧洿綾諱腑瀵硅薄鐨勬垚鍛橈紝鍙嶄箣浜︾劧銆傚祵濂楃被鐨勬垚鍛樺嚱鏁板澶栧洿綾葷殑鎴愬憳娌℃湁璁塊棶鏉冿紝鍙嶄箣浜︾劧銆傚洜姝わ紝鍦ㄥ垎鏋愬祵濂楃被 涓?nbsp; 澶栧洿綾葷殑鎴愬憳璁塊棶鍏崇郴鏃訛紝寰寰鎶婂祵濂楃被鐪嬩綔闈炲祵濂楃被鏉ュ鐞嗐?鐢卞紩鍙錛屽祵濂楃被浠呬粎鏄娉曚笂鐨勫祵鍏ャ?br>
5銆佸湪宓屽綾諱腑璇存槑鐨勫弸鍏冨澶栧洿綾葷殑鎴愬憳娌℃湁璁塊棶鏉冦?
6銆佸鏋滃祵濂楃被姣旇緝澶嶆潅錛屽彲浠ュ彧鍦ㄥ鍥寸被涓宓屽綾昏繘琛岃鏄庯紝鍏充簬宓屽鐨勮緇嗙殑鍐呭鍙湪澶栧洿綾諱綋澶栫殑鏂囦歡鍩熶腑榪涜瀹氫箟銆?