ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

C/C++ sizeof ×ܽá
2013-11-20 14:24:37 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:178´Î
Tags£ºC/C   sizeof  ×ܽá

¡¡¡¡×î½üºÜ¶à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

¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºÆÊÎö±ä³¤²ÎÊýº¯ÊýµÄʵÏÖ ÏÂһƪ£ºC++¸÷¸öÈÝÆ÷±È½Ï

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)