Files
hustoj/web/cppreference-zh/chmhelp/c-language-sizeof.html
2025-08-01 12:57:54 +08:00

155 lines
14 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sizeof &#36816;&#31639;&#31526;</title>
<link rel="stylesheet" href="ext.css" />
<link rel="stylesheet" href="site_modules.css" />
</head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-c_language_sizeof skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">sizeof &#36816;&#31639;&#31526;</h1>
<div id="bodyContent">
<div id="contentSub"><span class="subpages">&lt; <a href="c.html">c</a>&lrm; | <a href="c-language.html">language</a></span></div>
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
<p>&#26597;&#35810;&#23545;&#35937;&#25110;&#31867;&#22411;&#30340;&#22823;&#23567;</p>
<p>&#22312;&#24517;&#39035;&#30693;&#36947;&#23545;&#35937;&#23454;&#38469;&#22823;&#23567;&#26102;&#20351;&#29992;</p>
<h3><span class="mw-headline" id=".E8.AF.AD.E6.B3.95">&#35821;&#27861;</span></h3>
<table class="t-sdsc-begin">
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>sizeof(</b></code> <span class="t-spar">&#31867;&#22411;</span> <code><b>)</b></code></td>
<td>(1)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
<tr class="t-sdsc">
<td><code><b>sizeof</b></code> <span class="t-spar">&#34920;&#36798;&#24335;</span> <code></code></td>
<td>(2)</td>
<td class="t-sdsc-nopad"></td>
</tr>
<tr>
<td colspan="10" class="t-sdsc-sep"></td>
</tr>
</table>
<p>&#20004;&#20010;&#29256;&#26412;&#37117;&#36820;&#22238; <span class="t-lc"><a href="c-types-size_t.html">size_t</a></span> &#31867;&#22411;&#20540;&#12290;</p>
<h3><span class="mw-headline" id=".E8.A7.A3.E9.87.8A">&#35299;&#37322;</span></h3>
<div class="t-li1"><span class="t-li">1)</span> &#36820;&#22238; <span class="t-spar">&#31867;&#22411;</span> &#30340;<a href="c-language-object.html#.E5.AF.B9.E8.B1.A1.E8.A1.A8.E7.A4.BA">&#23545;&#35937;&#34920;&#31034;</a>&#30340;&#23383;&#33410;&#22823;&#23567;&#12290;</div>
<div class="t-li1"><span class="t-li">2)</span> &#36820;&#22238; <span class="t-spar">&#34920;&#36798;&#24335;</span> &#31867;&#22411;&#30340;&#23545;&#35937;&#34920;&#31034;&#30340;&#23383;&#33410;&#22823;&#23567;&#12290;&#19981;&#24212;&#29992;&#38544;&#24335;&#36716;&#25442;&#21040; <span class="t-spar">&#34920;&#36798;&#24335;</span> &#12290;</div>
<h3><span class="mw-headline" id=".E6.B3.A8.E6.84.8F">&#27880;&#24847;</span></h3>
<p>&#21462;&#20915;&#20110;&#35745;&#31639;&#26426;&#26550;&#26500;&#65292;<a href="https://en.wikipedia.org/wiki/Byte" class="extiw" title="enwiki:Byte">&#23383;&#33410;</a>&#21487;&#33021;&#30001; 8 &#25110;&#26356;&#22810;&#20301;&#26500;&#25104;&#65292;&#20934;&#30830;&#25968;&#20316;&#20026; <span class="t-lc"><a href="c-types-limits.html">CHAR_BIT</a></span> &#25152;&#25552;&#20379;&#12290;</p>
<p><span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">char</span><span class="br0">)</span></span></span> &#12289; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">signed</span> <span class="kw4">char</span><span class="br0">)</span></span></span> &#21644; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">unsigned</span> <span class="kw4">char</span><span class="br0">)</span></span></span> &#22987;&#32456;&#36820;&#22238; <span class="t-c"><span class="mw-geshi c source-c"><span class="nu0">1</span></span></span> &#12290;</p>
<p><code>sizeof</code> &#19981;&#33021;&#29992;&#20110;&#20989;&#25968;&#31867;&#22411;&#12289;&#19981;&#23436;&#25972;&#31867;&#22411;&#65288;&#21547;<span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">void</span></span></span>&#65289;&#25110;<a href="c-language-bit_field.html">&#20301;&#22495;</a>&#24038;&#20540;&#12290;</p>
<p>&#24212;&#29992; sizeof &#21040; <a href="c-language-struct.html">&#32467;&#26500;&#20307;</a>&#25110;<a href="c-language-union.html">&#32852;&#21512;&#20307;</a>&#31867;&#22411;&#36816;&#31639;&#25968;&#26102;&#65292;&#32467;&#26524;&#26159;&#36825;&#31181;&#23545;&#35937;&#20013;&#30340;&#24635;&#23383;&#33410;&#25968;&#65292;&#21253;&#21547;&#20869;&#37096;&#21644;&#23614;&#38543;&#22635;&#20805;&#12290;&#23614;&#38543;&#22635;&#20805;&#20351;&#24471;&#33509;&#23545;&#35937;&#22312;&#25968;&#32452;&#20013;&#65292;&#21017;&#27492;&#25968;&#32452;&#20013;&#19979;&#20010;&#20803;&#32032;&#30340;&#23545;&#40784;&#35201;&#27714;&#20250;&#24471;&#21040;&#28385;&#36275;&#65292;&#25442;&#35328;&#20043;&#65292; sizeof(T) &#36820;&#22238; T[] &#25968;&#32452;&#20013;&#20803;&#32032;&#30340;&#22823;&#23567;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-c99">
<td>
<p>&#33509; <span class="t-spar">&#31867;&#22411;</span> &#20026; <a href="c-language-array.html">VLA</a> &#31867;&#22411;&#65292;&#32780;&#26356;&#25913;&#20854;&#34920;&#36798;&#24335;&#30340;&#20540;&#19981;&#24433;&#21709; sizeof &#30340;&#32467;&#26524;&#65292;&#21017;&#19981;&#25351;&#23450;&#26159;&#21542;&#27714;&#20540;&#35813;&#22823;&#23567;&#34920;&#36798;&#24335;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-c99">(C99 &#36215;)</span></td>
</tr>
</table>
<p><span class="t-rev-inl t-since-c99"><span>&#38500;&#38750; <span class="t-spar">&#34920;&#36798;&#24335;</span> &#20026; <a href="c-language-array.html">VLA</a> &#65292;</span> <span><span class="t-mark-rev t-since-c99">(C99 &#36215;)</span></span></span>&#19981;&#27714;&#20540; <span class="t-spar">&#34920;&#36798;&#24335;</span> &#19988; <code>sizeof</code> &#36816;&#31639;&#31526;&#33021;&#22312;&#25972;&#25968;<a href="c-language-constant_expression.html">&#24120;&#37327;&#34920;&#36798;&#24335;</a>&#20013;&#20351;&#29992;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-c99">
<td>
<p>&#33509; <span class="t-spar">&#34920;&#36798;&#24335;</span> &#30340;&#31867;&#22411;&#20026;<a href="c-language-array.html">&#38750;&#24120;&#37327;&#38271;&#24230;&#25968;&#32452;</a>&#31867;&#22411;&#65292;&#21017;&#27714;&#20540; <span class="t-spar">&#34920;&#36798;&#24335;</span> &#65292;&#24182;&#22312;&#36816;&#34892;&#26102;&#35745;&#31639;&#20854;&#25152;&#27714;&#20540;&#30340;&#25968;&#32452;&#22823;&#23567;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-c99">(C99 &#36215;)</span></td>
</tr>
</table>
<p>&#20219;&#20309;<a href="c-language-array.html">&#25968;&#32452;</a> <span class="t-c"><span class="mw-geshi c source-c">a</span></span> <span class="t-rev-inl t-since-c99"><span>&#65292;&#21253;&#21547; VLA</span> <span><span class="t-mark-rev t-since-c99">(C99 &#36215;)</span></span></span>&#30340;&#20803;&#32032;&#25968;&#21487;&#29992;&#34920;&#36798;&#24335; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">sizeof</span> a <span class="sy2">/</span> <span class="kw4">sizeof</span> a<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span></span></span> &#30830;&#23450;&#12290;&#27880;&#24847;&#33509; <span class="t-c"><span class="mw-geshi c source-c">a</span></span> &#25317;&#26377;&#25351;&#38024;&#31867;&#22411;&#65288;&#20363;&#22914;&#22312;&#20989;&#25968;&#21442;&#25968;&#31867;&#22411;&#35843;&#25972;&#30340;&#25968;&#32452;&#21040;&#25351;&#38024;&#36716;&#25442;&#21518;&#65289;&#65292;&#27492;&#34920;&#36798;&#24335;&#20250;&#31616;&#21333;&#22320;&#23558;&#25351;&#38024;&#31867;&#22411;&#20013;&#30340;&#23383;&#33410;&#25968;&#38500;&#20197;&#34987;&#25351;&#21521;&#31867;&#22411;&#20013;&#30340;&#23383;&#33410;&#25968;&#12290;</p>
<h3><span class="mw-headline" id=".E5.85.B3.E9.94.AE.E8.AF.8D">&#20851;&#38190;&#35789;</span></h3>
<p><a href="c-keyword-sizeof.html"><tt>sizeof</tt></a></p>
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">&#31034;&#20363;</span></h3>
<div class="t-example">
<p>&#31034;&#20363;&#36755;&#20986;&#23545;&#24212;&#25317;&#26377; 64 &#20301;&#25351;&#38024;&#21644; 32 &#20301; int &#30340;&#24179;&#21488;</p>
<div class="t-example-live-link"></div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="co2">#include &lt;stdio.h&gt;</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
<span class="br0">{</span>
<span class="kw4">short</span> x<span class="sy4">;</span>
<span class="co1">// &#31867;&#22411;&#21442;&#25968;&#65306;</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof(float) = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">float</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof(void(*)(void)) = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">void</span><span class="br0">(</span><span class="sy2">*</span><span class="br0">)</span><span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof(char[10]) = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw4">char</span><span class="br0">[</span><span class="nu0">10</span><span class="br0">]</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
<span class="co1">// printf(&quot;sizeof(void(void)) = %zu\n&quot;, sizeof(void(void))); // &#38169;&#35823;&#65306;&#20989;&#25968;&#31867;&#22411;</span>
<span class="co1">// printf(&quot;sizeof(char[]) = %zu\n&quot;, sizeof(char[])); // &#38169;&#35823;&#65306;&#19981;&#23436;&#25972;&#31867;&#22411;</span>
<span class="co1">// &#34920;&#36798;&#24335;&#21442;&#25968;&#65306;</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof &#39;a&#39; = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span> <span class="st0">&#39;a&#39;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#39;a&#39; &#30340;&#31867;&#22411;&#20026; int</span>
<span class="co1">// printf(&quot;sizeof main = %zu\n&quot;, sizeof main); // &#38169;&#35823;&#65306;&#20989;&#25968;&#31867;&#22411;</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof &amp;main = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span> <span class="sy3">&amp;</span>main<span class="br0">)</span><span class="sy4">;</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof <span class="es1">\&quot;</span>hello<span class="es1">\&quot;</span> = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span> <span class="st0">&quot;hello&quot;</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// &#31867;&#22411;&#20026; char[6]</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof x = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span> x<span class="br0">)</span><span class="sy4">;</span> <span class="co1">// x &#30340;&#31867;&#22411;&#20026; short</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof (x+1) = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span><span class="br0">(</span>x<span class="sy2">+</span><span class="nu0">1</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// x+1 &#30340;&#31867;&#22411;&#20026; int</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#21487;&#33021;&#30340;&#36755;&#20986;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="text source-text">
<pre class="de1">sizeof(float) = 4
sizeof(void(*)(void)) = 8
sizeof(char[10]) = 10
sizeof &#39;a&#39; = 4
sizeof &amp;main = 8
sizeof &quot;hello&quot; = 6
sizeof x = 2
sizeof (x+1) = 4</pre></div>
</div>
</div>
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">&#24341;&#29992;</span></h3>
<div class="t-ref-std-11">
<ul>
<li>C11 &#26631;&#20934;&#65288;ISO/IEC 9899:2011&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>6.5.3.4 The sizeof and _Alignof operators (p: 90-91)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c99">
<ul>
<li>C99 &#26631;&#20934;&#65288;ISO/IEC 9899:1999&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>6.5.3.4 The sizeof operator (p: 80-81)</li>
</ul>
</dd>
</dl>
<div class="t-ref-std-c89">
<ul>
<li>C89/C90 &#26631;&#20934;&#65288;ISO/IEC 9899:1990&#65289;&#65306;</li>
</ul>
<dl>
<dd>
<ul>
<li>3.3.3.4 The sizeof operator</li>
</ul>
</dd>
</dl>
</div>
<h3><span class="mw-headline" id=".E5.8F.82.E9.98.85">&#21442;&#38405;</span></h3>
<table class="t-dsc-begin"></table>
</div>
</div>
</div>
<div class="visualClear"></div>
</div>
</div>
</div>
</body>
</html>