¡¡¡¡×î½üºÜ¶àC/C++µÄ±ÊÊÔÃæÊÔÖж¼»áÉæ¼°µ½sizeofµÄÎÊÌ⣬ËùÒÔÔÚ´Ë×ܽáһϡ£
¡¡¡¡1. ¶¨Òå
¡¡¡¡Ê×ÏÈҪעÒâµÄÊÇsizeof²»ÊǺ¯Êý£¬ ÊÇCµÄÒ»¸öµ¥Ä¿ÔËËã·û£¨++, --µÈ£©¡£
¡¡¡¡sizeofÓÐ2ÖÖʹÓ÷½Ê½£º
¡¡¡¡£¨1£© sizeof£¨ object / type £©
¡¡¡¡£¨2£© sizeof object
¡¡¡¡È磺=
¡¡¡¡[cpp]
¡¡¡¡<span style="font-size:14px">sizeof£¨ int£© ; sizeof£¨ i £©£»
¡¡¡¡sizeof int ; //error</span>
¡¡¡¡Ò»°ã²ÉÓõÚÒ»ÖÖ·½Ê½
¡¡¡¡·µ»ØÖµ£ºsize_t ÀàÐÍ¡£
¡¡¡¡2. sizeof £¨ »ù±¾ÊýÖµÀàÐÍ £©
¡¡¡¡Ö±½Ó·µ»ØÊýÖµÀàÐÍËùÕ¼ÓõÄÄÚ´æ¿Õ¼ä
¡¡¡¡[cpp]
¡¡¡¡<span style="font-size:14px">//ANSI CÕýʽ¹æ¶¨×Ö·ûÀàÐÍΪ1×Ö½Ú¡£
¡¡¡¡sizeof£¨char£© = 1;
¡¡¡¡sizeof£¨unsigned char£© = 1;
¡¡¡¡sizeof£¨signed char£© = 1;
¡¡¡¡//ÒÔÏÂÀàÐÍANSIûÓй涨£¬ÒÀÀµÓÚOSºÍ±àÒëÆ÷£¬µ«´óСһ°ã²î²»¶à
¡¡¡¡sizeof£¨int£© = 4;
¡¡¡¡sizeof£¨unsigned int£© = 4;
¡¡¡¡sizeof£¨short int£© = 2;
¡¡¡¡sizeof£¨unsigned short£© = 2;
¡¡¡¡sizeof£¨long int£© = 4;
¡¡¡¡sizeof£¨unsigned long£© = 4;
¡¡¡¡sizeof£¨float£© = 4;
¡¡¡¡sizeof£¨double£© = 8;
¡¡¡¡sizeof£¨long double£© = 12;</span>
¡¡¡¡3. sizeof £¨ pointer £©
¡¡¡¡ÔÚ32λϵͳÖУ¬ÎÞÂÛºÎÖÖÇé¿ö϶¼ÊÇ4
¡¡¡¡[cpp] view plaincopy
¡¡¡¡<span style="font-size:14px"> int *i;
¡¡¡¡char *str = "test";
¡¡¡¡void £¨*pf£©£¨£©£»
¡¡¡¡printf£¨ "sizeof pointer is 4: %d %d %d \n", sizeof£¨i£©£¬ sizeof£¨ str £©£¬ sizeof£¨ pf £© £©£»</span>
¡¡¡¡4. sizeof £¨ array £©
¡¡¡¡¸ÃÊý×éËùÕ¼ÓõÄÄÚ´æ¿Õ¼ä¡££¨ÔÚstring ÖмÆËã'\0'£©¡£
¡¡¡¡[cpp]
¡¡¡¡<span style="font-size:14px"> int iv_a ; //10
¡¡¡¡char cv_str[] = "hi"; //3
¡¡¡¡char cvv_str [100]; //1000
¡¡¡¡char *cp_c = cv_str;
¡¡¡¡printf£¨ "sizeof array is len*size: %d %d %d %d", sizeof£¨iv_a£©£¬ sizeof£¨cv_str£©£¬ sizeof£¨ cvv_str £©£¬sizeof£¨ cvv_str[0] £© £©£»</span>
¡¡¡¡×¢Òâ¶àάÊý×éµÄÇé¿ö¡£
¡¡¡¡Èç¹ûarrayÊÇÐβΣ¬ÄÇôËü±ã²»ÊÇÊý×éÁË£¬¶øÊÇÖ¸Õë¡£
¡¡¡¡5. sizeof£¨ struct £©
¡¡¡¡´ËʱҪעÒâ×Ö½Ú¶ÔÆëµÄÎÊÌâ¡£
¡¡¡¡×Ö½Ú¶ÔÆë£ºÎªÁ˱ãÓÚȡַ£¬Èûù±¾Êý¾ÝÀàÐ͵ĵØÖ·ÊÇÊý¾Ý¿í¶È£¨ËùÕ¼¿Õ¼ä£©µÄÕûÊý±¶ÉÏ¡£
¡¡¡¡struct :struct ¿í¶Èw = max{ mi.w ; miÊÇstruct µÄ»ù±¾Êý¾Ý³ÉÔ± }
¡¡¡¡struct ×Ö½Ú¶ÔÆë¹æÔò£º
¡¡¡¡£¨1£©Ê×µØÖ· addr = nw n>0
¡¡¡¡£¨2£©Ã¿¸ö³ÉÔ±µÄÊ×µØÖ· addr = nw n>0
¡¡¡¡£¨3£©size£¨ struct £© = nw n>0
¡¡¡¡[cpp]
¡¡¡¡<span style="font-size:14px">typedef struct S1
¡¡¡¡{
¡¡¡¡short a;
¡¡¡¡int b;
¡¡¡¡char c;
¡¡¡¡}S1;
¡¡¡¡typedef struct S2
¡¡¡¡{
¡¡¡¡char a;
¡¡¡¡S1 b;
¡¡¡¡char c;
¡¡¡¡}S2;</span>
¡¡¡¡S1 µÄÊý¾Ý¿í¶Èw= 4;
¡¡¡¡S2µÄ¿í¶ÈµÄ¼ÆËãÊǽ«S1¸÷¸ö³ÉÔ±²ð³É»ù±¾Êý¾ÝÀàÐÍ£¬È»ºó¼ÆËãw
¡¡¡¡aºó²¹2byte,¹æÔò2
¡¡¡¡cºó²¹3byte,¹æÔò3