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

239 lines
26 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>&#23545;&#35937;&#19982;&#23545;&#40784;</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_object skin-cppreference2 action-view cpp-navbar">
<div id="cpp-content-base">
<div id="content"><a id="top"></a>
<h1 id="firstHeading" class="firstHeading">&#23545;&#35937;&#19982;&#23545;&#40784;</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>C &#31243;&#24207;&#21019;&#24314;&#12289;&#38144;&#27585;&#12289;&#35775;&#38382;&#24182;&#25805;&#20316;&#23545;&#35937;&#12290;</p>
<p>C &#20013;&#65292;&#19968;&#20010;&#23545;&#35937;&#26159;&#25191;&#34892;&#29615;&#22659;&#20013;<a href="c-language-memory_model.html">&#25968;&#25454;&#23384;&#20648;</a>&#30340;&#19968;&#20010;&#21306;&#22495;&#65292;&#20854;&#20869;&#23481;&#21487;&#20197;&#34920;&#31034;<i>&#20540;</i>&#65288;&#20540;&#26159;&#23545;&#35937;&#30340;&#20869;&#23481;&#36716;&#35793;&#20026;&#29305;&#23450;<a href="c-language-types.html">&#31867;&#22411;</a>&#26102;&#30340;&#21547;&#20041;&#65289;&#12290;</p>
<p>&#27599;&#20010;&#23545;&#35937;&#25317;&#26377;</p>
<ul>
<li>&#22823;&#23567;&#65288;&#21487;&#30001; <a href="c-language-sizeof.html"><code>sizeof</code></a> &#30830;&#23450;&#65289;</li>
<li>&#23545;&#40784;&#35201;&#27714;<span class="t-rev-inl t-since-c11"><span>&#65288;&#21487;&#30001; <a href="c-language-_Alignof.html"><code>_Alignof</code></a> &#30830;&#23450;&#65289;</span> <span><span class="t-mark-rev t-since-c11">(C11 &#36215;)</span></span></span></li>
<li><a href="c-language-storage_duration.html">&#23384;&#20648;&#26399;</a>&#65288;&#33258;&#21160;&#12289;&#38745;&#24577;&#12289;&#20998;&#37197;&#12289;&#32447;&#31243;&#23616;&#22495;&#65289;</li>
<li><a href="c-language-lifetime.html">&#29983;&#23384;&#26399;</a>&#65288;&#31561;&#20110;&#23384;&#20648;&#26399;&#25110;&#20020;&#26102;&#65289;</li>
<li>&#26377;&#25928;&#31867;&#22411;&#65288;&#35265;&#19979;&#65289;</li>
<li>&#20540;&#65288;&#21487;&#20197;&#26159;&#19981;&#30830;&#23450;&#30340;&#65289;</li>
<li>&#21487;&#36873;&#39033;&#65292;&#34920;&#31034;&#35813;&#23545;&#35937;&#30340;<a href="c-language-identifier.html">&#26631;&#35782;&#31526;</a></li>
</ul>
<p>&#23545;&#35937;&#30001;<a href="c-language-declarations.html">&#22768;&#26126;</a>&#12289;<a href="c-memory.html">&#20998;&#37197;&#20989;&#25968;</a>&#12289;<a href="c-language-string_literal.html">&#23383;&#31526;&#20018;&#23383;&#38754;&#37327;</a>&#12289;<a href="c-language-compound_literal.html">&#22797;&#21512;&#23383;&#38754;&#37327;</a>&#65292;&#21450;&#36820;&#22238;<a href="c-language-lifetime.html">&#25317;&#26377;&#25968;&#32452;&#31867;&#22411;&#30340;&#32467;&#26500;&#20307;&#25110;&#32852;&#21512;&#20307;</a>&#30340;&#38750;&#24038;&#20540;&#34920;&#36798;&#24335;&#21019;&#24314;&#12290;</p>
<h3><span class="mw-headline" id=".E5.AF.B9.E8.B1.A1.E8.A1.A8.E7.A4.BA">&#23545;&#35937;&#34920;&#31034;</span></h3>
<p>&#38500;&#20102;<a href="c-language-bit_field.html">&#20301;&#22495;</a>&#65292;&#27599;&#20010;&#23545;&#35937;&#37117;&#26159;&#30001;&#19968;&#20010;&#25110;&#26356;&#22810;&#23383;&#33410;&#32452;&#25104;&#30340;&#65292;&#27599;&#20010;&#23383;&#33410;&#30001; <span class="t-lc"><a href="c-types-limits.html">CHAR_BIT</a></span> &#20301;&#32452;&#25104;&#65292;&#32780;&#19988;&#27599;&#20010;&#23545;&#35937;&#21487;&#20197;&#29992; <span class="t-lc"><a href="c-string-byte-memcpy.html">memcpy</a></span> &#22797;&#21046;&#21040; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span><span class="br0">[</span>n<span class="br0">]</span></span></span> &#31867;&#22411;&#30340;&#23545;&#35937;&#20013;&#65292;&#36825;&#37324; <code>n</code> &#26159;&#23545;&#35937;&#30340;&#22823;&#23567;&#12290;&#29983;&#25104;&#30340;&#25968;&#32452;&#20869;&#23481;&#34987;&#31216;&#20026;<i>&#23545;&#35937;&#34920;&#31034;</i>&#12290;</p>
<p>&#33509;&#20004;&#23545;&#35937;&#25317;&#26377;&#30456;&#21516;&#30340;&#23545;&#35937;&#34920;&#31034;&#65292;&#21017;&#23427;&#20204;&#27604;&#36739;&#30456;&#31561;&#65288;&#38500;&#20102;&#23427;&#20204;&#26159;&#28014;&#28857;&#25968;NaN&#30340;&#24773;&#20917;&#65289;&#12290;&#36870;&#21629;&#39064;&#38750;&#30495;&#65306;&#20004;&#20010;&#27604;&#36739;&#30456;&#31561;&#30340;&#23545;&#35937;&#21487;&#20197;&#25317;&#26377;&#19981;&#21516;&#30340;&#23545;&#35937;&#34920;&#31034;&#65292;&#22240;&#20026;&#24182;&#38750;&#23545;&#35937;&#34920;&#31034;&#30340;&#27599;&#19968;&#20301;&#37117;&#38656;&#35201;&#21442;&#19982;&#20854;&#20540;&#12290;&#36825;&#20123;&#20301;&#21487;&#20197;&#29992;&#20110;&#22635;&#20805;&#20197;&#28385;&#36275;&#23545;&#40784;&#35201;&#27714;&#65292;&#31561;&#21516;&#24615;&#26816;&#27979;&#65292;&#25351;&#31034;&#38519;&#38449;&#34920;&#31034;&#31561;&#12290;</p>
<p>&#33509;&#19968;&#20010;&#23545;&#35937;&#34920;&#31034;&#19981;&#34920;&#31034;&#35813;&#23545;&#35937;&#31867;&#22411;&#30340;&#20219;&#20309;&#20540;&#65292;&#21017;&#23427;&#34987;&#31216;&#20026;<i>&#38519;&#38449;&#34920;&#31034;</i>&#12290;&#20197;&#24322;&#20110;&#23383;&#31526;&#31867;&#22411;&#24038;&#20540;&#34920;&#36798;&#24335;&#35835;&#21462;&#30340;&#26041;&#24335;&#35775;&#38382;&#38519;&#38449;&#34920;&#31034;&#26159;&#26410;&#23450;&#20041;&#34892;&#20026;&#12290;&#32467;&#26500;&#20307;&#25110;&#32852;&#21512;&#20307;&#30340;&#20540;&#22987;&#32456;&#19981;&#26159;&#38519;&#38449;&#34920;&#31034;&#65292;&#21363;&#20351;&#20219;&#20309;&#19968;&#20010;&#25104;&#21592;&#30340;&#20540;&#26159;&#38519;&#38449;&#34920;&#31034;&#12290;</p>
<p>&#23545;&#20110; <code>char</code> &#12289; <code>signed char</code> &#12289; <code>unsigned char</code> &#31867;&#22411;&#30340;&#23545;&#35937;&#65292;&#23545;&#35937;&#34920;&#31034;&#30340;&#27599;&#19968;&#20301;&#37117;&#35201;&#27714;&#21442;&#19982;&#20854;&#20540;&#34920;&#31034;&#65292;&#32780;&#19988;&#27599;&#31181;&#21487;&#33021;&#30340;&#20301;&#27169;&#24335;&#37117;&#34920;&#31034;&#19981;&#21516;&#30340;&#20540;&#65288;&#19981;&#20801;&#35768;&#22635;&#20805;&#20301;&#12289;&#38519;&#38449;&#20301;&#25110;&#22810;&#37325;&#34920;&#31034;&#65289;&#12290;</p>
<p><a href="c-language-arithmetic_types.html#.E6.95.B4.E6.95.B0.E7.B1.BB.E5.9E.8B">&#25972;&#25968;&#31867;&#22411;</a>&#65288; short &#12289; int &#12289; long &#12289; long long &#65289;&#23545;&#35937;&#21344;&#29992;&#22810;&#20010;&#23383;&#33410;&#26102;&#65292;&#36825;&#20123;&#23383;&#33410;&#30340;&#29992;&#27861;&#26159;&#23454;&#29616;&#23450;&#20041;&#30340;&#65292;&#19981;&#36807;&#20108;&#31181;&#26377;&#20027;&#23548;&#22320;&#20301;&#30340;&#23454;&#29616;&#26159;<i>&#22823;&#31471; (big-endian)</i> &#65288; POWER &#12289; Sparc &#12289; Itanium &#65289;&#21644;<i>&#23567;&#31471; (littel-endian)</i> &#65288; x86 &#12289; x86-64 &#65289;&#65306;&#22823;&#31471;&#24179;&#21488;&#23558;&#26368;&#39640;&#20301;&#23383;&#33410;&#23384;&#20648;&#20110;&#25972;&#25968;&#25152;&#21344;&#25454;&#30340;&#23384;&#20648;&#21306;&#22495;&#30340;&#26368;&#20302;&#22320;&#22336;&#65292;&#23567;&#31471;&#24179;&#21488;&#23558;&#26368;&#20302;&#20301;&#23383;&#33410;&#23384;&#20648;&#20110;&#26368;&#20302;&#22320;&#22336;&#12290;&#32454;&#33410;&#35265;<a href="https://en.wikipedia.org/wiki/Endianness" class="extiw" title="enwiki:Endianness">&#31471;&#24207;</a>&#12290;&#21442;&#38405;&#19979;&#26041;&#31034;&#20363;&#12290;</p>
<p>&#23613;&#31649;&#22823;&#22810;&#25968;&#23454;&#29616;&#37117;&#19981;&#20801;&#35768;&#25972;&#25968;&#30340;&#38519;&#38449;&#34920;&#31034;&#12289;&#22635;&#20805;&#20301;&#25110;&#22810;&#37325;&#34920;&#31034;&#65292;&#20063;&#36824;&#23384;&#22312;&#20363;&#22806;&#65307;&#20363;&#22914; Itanium &#19978;&#30340;&#25972;&#25968;&#31867;&#22411;&#20540;<a rel="nofollow" class="external text" href="https://blogs.msdn.microsoft.com/oldnewthing/20040119-00/?p=41003">&#23601;&#21487;&#20197;&#26159;&#38519;&#38449;&#34920;&#31034;</a>&#12290;</p>
<h3><span class="mw-headline" id=".E6.9C.89.E6.95.88.E7.B1.BB.E5.9E.8B">&#26377;&#25928;&#31867;&#22411;</span></h3>
<p>&#27599;&#20010;&#23545;&#35937;&#37117;&#25317;&#26377;<i>&#26377;&#25928;&#31867;&#22411;</i>&#65292;&#23427;&#20915;&#23450;&#20309;&#31181;<a href="c-language-value_category.html">&#24038;&#20540;</a>&#35775;&#38382;&#21512;&#27861;&#65292;&#20309;&#31181;&#36829;&#21453;&#20005;&#26684;&#21035;&#21517;&#20351;&#29992;&#35268;&#21017;&#12290;</p>
<p>&#33509;&#23545;&#35937;&#26159;&#30001;<a href="c-language-declarations.html">&#22768;&#26126;</a>&#21019;&#24314;&#30340;&#65292;&#21017;&#35813;&#23545;&#35937;&#30340;&#22768;&#26126;&#31867;&#22411;&#21363;&#26159;&#23545;&#35937;&#30340;<i>&#26377;&#25928;&#31867;&#22411;</i>&#12290;</p>
<p>&#33509;&#23545;&#35937;&#30001;<a href="c-memory.html">&#20998;&#37197;&#20989;&#25968;</a>&#65288;&#21253;&#21547; <span class="t-lc"><a href="c-memory-realloc.html">realloc</a></span> &#65289;&#21019;&#24314;&#65292;&#21017;&#23427;&#27809;&#26377;&#22768;&#26126;&#31867;&#22411;&#12290;&#36825;&#31181;&#23545;&#35937;&#20197;&#19979;&#21015;&#26041;&#24335;&#33719;&#24471;&#26377;&#25928;&#31867;&#22411;&#65306;</p>
<ul>
<li>&#39318;&#27425;&#36890;&#36807;&#25317;&#26377;&#24322;&#20110;&#23383;&#31526;&#31867;&#22411;&#30340;&#31867;&#22411;&#30340;&#24038;&#20540;&#20889;&#20837;&#35813;&#23545;&#35937;&#65292;&#26080;&#35770;&#20309;&#26102;&#35813;&#24038;&#20540;&#30340;&#31867;&#22411;&#37117;&#20250;&#25104;&#20026;&#35813;&#23545;&#35937;&#35813;&#27425;&#20889;&#20837;&#21644;&#25152;&#26377;&#21518;&#32487;&#35835;&#21462;&#30340;<i>&#26377;&#25928;&#31867;&#22411;</i>&#12290;</li>
<li><span class="t-lc"><a href="c-string-byte-memcpy.html">memcpy</a></span> &#25110; <span class="t-lc"><a href="c-string-byte-memmove.html">memmove</a></span> &#22797;&#21046;&#21478;&#19968;&#20010;&#23545;&#35937;&#21040;&#35813;&#23545;&#35937;&#65292;&#26080;&#35770;&#20309;&#26102;&#28304;&#23545;&#35937;&#30340;&#26377;&#25928;&#31867;&#22411;&#65288;&#33509;&#23427;&#26377;&#65289;&#37117;&#20250;&#25104;&#20026;&#35813;&#23545;&#35937;&#35813;&#27425;&#20889;&#20837;&#21644;&#25152;&#26377;&#21518;&#32487;&#35835;&#21462;&#30340;<i>&#26377;&#25928;&#31867;&#22411;</i>&#12290;</li>
<li>&#20219;&#20309;&#20854;&#20182;&#23545;&#26080;&#22768;&#26126;&#31867;&#22411;&#30340;&#23545;&#35937;&#30340;&#35775;&#38382;&#65292;&#26377;&#25928;&#31867;&#22411;&#26159;&#35775;&#38382;&#25152;&#29992;&#30340;&#24038;&#20540;&#31867;&#22411;&#12290;</li>
</ul>
<h3><span class="mw-headline" id=".E4.B8.A5.E6.A0.BC.E5.88.AB.E5.90.8D.E4.BD.BF.E7.94.A8">&#20005;&#26684;&#21035;&#21517;&#20351;&#29992;</span></h3>
<p>&#32473;&#23450;&#19968;&#20010;&#25317;&#26377;<i>&#26377;&#25928;&#31867;&#22411;</i> <code>T1</code> &#30340;&#23545;&#35937;&#65292;&#20351;&#29992;&#30456;&#24322;&#31867;&#22411;&#30340; <code>T2</code> &#24038;&#20540;&#34920;&#36798;&#24335;&#65288;&#20856;&#22411;&#30340;&#26159;&#35299;&#24341;&#29992;&#25351;&#38024;&#65289;&#35775;&#38382;&#23427;&#26159;&#26410;&#23450;&#20041;&#34892;&#20026;&#65292;&#38500;&#38750;&#65306;</p>
<ul>
<li><code>T2</code> &#21644; <code>T1</code> &#26159;<a href="c-language-types.html#.E5.85.BC.E5.AE.B9.E7.B1.BB.E5.9E.8B">&#20860;&#23481;&#31867;&#22411;</a>&#12290;</li>
<li><code>T2</code> &#26159;&#19982; <code>T1</code> <a href="c-language-types.html#.E5.85.BC.E5.AE.B9.E7.B1.BB.E5.9E.8B">&#20860;&#23481;</a>&#30340;&#31867;&#22411;&#30340; cvr &#38480;&#23450;&#29256;&#26412;&#12290;</li>
<li><code>T2</code> &#26159;&#19982; <code>T1</code> <a href="c-language-types.html#.E5.85.BC.E5.AE.B9.E7.B1.BB.E5.9E.8B">&#20860;&#23481;</a>&#30340;&#31867;&#22411;&#30340;&#26377;&#31526;&#21495;&#25110;&#26080;&#31526;&#21495;&#29256;&#26412;&#12290;</li>
<li><code>T2</code> &#26159;&#32858;&#21512;&#20307;&#25110;&#32852;&#21512;&#20307;&#31867;&#22411;&#65292;&#20854;&#25104;&#21592;&#20013;&#21253;&#21547;&#19968;&#20010;&#21069;&#36848;&#31867;&#22411;&#65288;&#36882;&#24402;&#22320;&#21253;&#25324;&#23376;&#32858;&#21512;&#20307;&#25110;&#34987;&#21253;&#21547;&#32852;&#21512;&#20307;&#30340;&#25104;&#21592;&#65289;&#12290;</li>
<li><code>T2</code> &#26159;&#23383;&#31526;&#31867;&#22411;&#65288; <code>char</code> &#12289; <code>signed char</code> &#25110; <code>unsigned char</code> &#65289;&#12290;</li>
</ul>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">7</span><span class="sy4">;</span>
<span class="kw4">char</span><span class="sy2">*</span> pc <span class="sy1">=</span> <span class="br0">(</span><span class="kw4">char</span><span class="sy2">*</span><span class="br0">)</span><span class="br0">(</span><span class="sy3">&amp;</span>i<span class="br0">)</span><span class="sy4">;</span>
<span class="kw1">if</span><span class="br0">(</span>pc<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span> <span class="sy1">==</span> <span class="st0">&#39;\x7&#39;</span><span class="br0">)</span> <span class="br0">{</span> <span class="co1">// &#36890;&#36807; char &#21035;&#21517;&#20351;&#29992;&#26159; OK &#30340;</span>
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">&quot;This system is little-endian&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span> <span class="kw1">else</span> <span class="br0">{</span>
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="st0">&quot;This system is big-endian&quot;</span><span class="br0">)</span><span class="sy4">;</span>
<span class="br0">}</span>
<span class="kw4">float</span><span class="sy2">*</span> pf <span class="sy1">=</span> <span class="br0">(</span><span class="kw4">float</span><span class="sy2">*</span><span class="br0">)</span><span class="br0">(</span><span class="sy3">&amp;</span>i<span class="br0">)</span><span class="sy4">;</span>
<span class="kw4">float</span> d <span class="sy1">=</span> <span class="sy2">*</span>pf<span class="sy4">;</span> <span class="co1">// UB &#65306; float &#24038;&#20540; *p &#19981;&#33021;&#29992;&#26469;&#35775;&#38382; int</span></pre></div>
</div>
<p>&#36825;&#20123;&#35268;&#21017;&#25511;&#21046;&#25509;&#21463;&#20108;&#20010;&#25351;&#38024;&#30340;&#20989;&#25968;&#65292;&#22312;&#36890;&#36807;&#19968;&#20010;&#25351;&#38024;&#20889;&#20837;&#21518;&#65292;&#26159;&#21542;&#24517;&#39035;&#37325;&#35835;&#21462;&#21478;&#19968;&#20010;&#65306;</p>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="co1">// int* &#19982; double* &#19981;&#33021;&#21035;&#21517;&#20351;&#29992;</span>
<span class="kw4">void</span> f1<span class="br0">(</span><span class="kw4">int</span> <span class="sy2">*</span>pi, <span class="kw4">double</span> <span class="sy2">*</span>pd, <span class="kw4">double</span> d<span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// &#20174; *pi &#30340;&#35835;&#21462;&#21487;&#20197;&#21482;&#20570;&#19968;&#27425;&#65292;&#22312;&#24490;&#29615;&#21069;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> i <span class="sy1">&lt;</span> <span class="sy2">*</span>pi<span class="sy4">;</span> i<span class="sy2">++</span><span class="br0">)</span> <span class="sy2">*</span>pd<span class="sy2">++</span> <span class="sy1">=</span> d<span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<div dir="ltr" class="mw-geshi" style="text-align: left;">
<div class="c source-c">
<pre class="de1"><span class="kw1">struct</span> S <span class="br0">{</span> <span class="kw4">int</span> a, b<span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
<span class="co1">// int* &#21644; struct S* &#21487;&#20197;&#21035;&#21517;&#20351;&#29992;&#65292;&#22240;&#20026; S &#25317;&#26377; int &#31867;&#22411;&#30340;&#25104;&#21592;</span>
<span class="kw4">void</span> f2<span class="br0">(</span><span class="kw4">int</span> <span class="sy2">*</span>pi, <span class="kw1">struct</span> S <span class="sy2">*</span>ps, <span class="kw1">struct</span> S s<span class="br0">)</span>
<span class="br0">{</span>
<span class="co1">// &#20174; *pi &#30340;&#35835;&#21462;&#24517;&#39035;&#22312;&#27599;&#27425;&#36890;&#36807; *ps &#20889;&#20837;&#21518;&#36827;&#34892;</span>
<span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu0">0</span><span class="sy4">;</span> i <span class="sy1">&lt;</span> <span class="sy2">*</span>pi<span class="sy4">;</span> i<span class="sy2">++</span><span class="br0">)</span> <span class="sy2">*</span>ps<span class="sy2">++</span> <span class="sy1">=</span> s<span class="sy4">;</span>
<span class="br0">}</span></pre></div>
</div>
<p>&#27880;&#24847; <a href="c-language-restrict.html">restrict &#38480;&#23450;&#31526;</a>&#21487;&#29992;&#20110;&#25351;&#31034;&#20108;&#20010;&#25351;&#38024;&#19981;&#29992;&#20316;&#21035;&#21517;&#20351;&#29992;&#65292;&#21363;&#20351;&#35268;&#21017;&#20801;&#35768;&#23427;&#20204;&#22914;&#27492;&#12290;</p>
<p>&#27880;&#24847;&#31867;&#22411;&#21452;&#20851;&#20063;&#21487;&#20197;&#36890;&#36807;<a href="c-language-union.html">&#32852;&#21512;&#20307;</a>&#30340;&#38750;&#27963;&#36291;&#25104;&#21592;&#36827;&#34892;&#12290;</p>
<h3><span class="mw-headline" id=".E5.AF.B9.E9.BD.90">&#23545;&#40784;</span></h3>
<p>&#27599;&#20010;&#23436;&#25972;<a href="c-language-types.html#.E7.B1.BB.E5.9E.8B.E7.BB.84.E5.88.AB">&#23545;&#35937;&#31867;&#22411;</a>&#25317;&#26377;&#19968;&#20010;&#31216;&#20316;<i>&#23545;&#40784;&#35201;&#27714;</i>&#30340;&#23646;&#24615;&#65292;&#23427;&#26159;&#19968;&#20010; <span class="t-lc"><a href="c-types-size_t.html">size_t</a></span> &#31867;&#22411;&#30340;&#25972;&#25968;&#20540;&#65292;&#34920;&#31034;&#27492;&#31867;&#22411;&#23545;&#35937;&#21487;&#20197;&#20998;&#37197;&#30340;&#30456;&#32487;&#22320;&#22336;&#20043;&#38388;&#30340;&#23383;&#33410;&#25968;&#12290;&#21512;&#27861;&#30340;&#23545;&#40784;&#20540;&#26159;&#20108;&#30340;&#38750;&#36127;&#25968;&#27425;&#24130;&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-c11">
<td>
<p>&#31867;&#22411;&#30340;&#23545;&#40784;&#35201;&#27714;&#21487;&#20197;&#36890;&#36807; <a href="c-language-_Alignof.html"><code>_Alignof</code></a> &#33719;&#24471;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-c11">(C11 &#36215;)</span></td>
</tr>
</table>
<p>&#20026;&#20102;&#28385;&#36275;&#32467;&#26500;&#20307;&#25152;&#26377;&#23545;&#35937;&#30340;&#23545;&#40784;&#35201;&#27714;&#65292;&#19968;&#20123;&#25104;&#21592;&#21518;&#38754;&#21487;&#33021;&#20250;&#25554;&#20837;&#22635;&#20805;&#20301;&#12290;</p>
<div class="t-example">
<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="co2">#include &lt;stdalign.h&gt;</span>
<span class="co1">// struct S &#30340;&#23545;&#35937;&#21487;&#20197;&#20998;&#37197;&#20110;&#20219;&#20309;&#22320;&#22336;</span>
<span class="co1">// &#22240;&#20026; S.a &#21644; S.b &#21487;&#20197;&#20998;&#37197;&#20110;&#20219;&#20309;&#22320;&#22336;</span>
<span class="kw1">struct</span> S
<span class="br0">{</span>
<span class="kw4">char</span> a<span class="sy4">;</span> <span class="co1">// &#25104;&#21592;&#23545;&#35937;&#22823;&#23567;&#65306; 1 &#65292;&#23545;&#40784;&#65306; 1</span>
<span class="kw4">char</span> b<span class="sy4">;</span> <span class="co1">// &#25104;&#21592;&#23545;&#35937;&#22823;&#23567;&#65306; 1 &#65292;&#23545;&#40784;&#65306; 1</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#32467;&#26500;&#20307;&#23545;&#35937;&#22823;&#23567;&#65306; 2 &#65292;&#23545;&#40784;&#65306; 1</span>
<span class="co1">// struct X &#30340;&#23545;&#35937;&#24517;&#39035;&#20998;&#37197;&#20110; 4&#23383;&#33410;&#36793;&#30028;</span>
<span class="co1">// &#22240;&#20026; X.n &#24517;&#39035;&#20998;&#37197;&#20110; 4 &#23383;&#33410;&#36793;&#30028;</span>
<span class="co1">// &#22240;&#20026; int &#30340;&#23545;&#40784;&#35201;&#27714;&#65288;&#36890;&#24120;&#65289;&#26159; 4</span>
<span class="kw1">struct</span> X
<span class="br0">{</span>
<span class="kw4">int</span> n<span class="sy4">;</span> <span class="co1">// &#25104;&#21592;&#23545;&#35937;&#22823;&#23567;&#65306; 4 &#65292;&#23545;&#40784;&#65306; 4</span>
<span class="kw4">char</span> c<span class="sy4">;</span> <span class="co1">// &#25104;&#21592;&#23545;&#35937;&#22823;&#23567;&#65306; 1 &#65292;&#23545;&#40784;&#65306; 1</span>
<span class="co1">// &#21097;&#20313;&#30340;&#19977;&#20010;&#23383;&#33410;&#36827;&#34892;&#31354;&#20301;&#22635;&#20805;</span>
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// &#32467;&#26500;&#20307;&#23545;&#35937;&#22823;&#23567;&#65306; 8 &#65292;&#23545;&#40784;&#65306; 4</span>
<span class="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
<span class="br0">{</span>
<a href="c-io-fprintf.html"><span class="kw851">printf</span></a><span class="br0">(</span><span class="st0">&quot;sizeof(struct S) = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw1">struct</span> S<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;alignof(struct S) = %zu<span class="es1">\n</span>&quot;</span>, alignof<span class="br0">(</span><span class="kw1">struct</span> S<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(struct X) = %zu<span class="es1">\n</span>&quot;</span>, <span class="kw4">sizeof</span><span class="br0">(</span><span class="kw1">struct</span> X<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;alignof(struct X) = %zu<span class="es1">\n</span>&quot;</span>, alignof<span class="br0">(</span><span class="kw1">struct</span> X<span class="br0">)</span><span class="br0">)</span><span class="sy4">;</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(struct S) = 2
alignof(struct S) = 1
sizeof(struct X) = 8
alignof(struct X) = 4</pre></div>
</div>
</div>
<p>&#27599;&#20010;&#23545;&#35937;&#31867;&#22411;&#23558;&#20854;&#23545;&#40784;&#35201;&#27714;&#24378;&#21152;&#20110;&#35813;&#31867;&#22411;&#30340;&#20219;&#20309;&#19968;&#20010;&#23545;&#35937;&#12290;&#25152;&#26377;&#31867;&#22411;&#20013;&#65292;&#26368;&#20005;&#26684;&#65288;&#26368;&#22823;&#65289;&#30340;&#22522;&#30784;&#23545;&#40784;&#26159; <span class="t-lc"><a href="c-types-max_align_t.html">max_align_t</a></span> &#30340;&#23545;&#40784;&#12290;&#26368;&#24369;&#65288;&#26368;&#23567;&#65289;&#30340;&#23545;&#40784;&#26159;&#23383;&#31526;&#31867;&#22411;&#65288; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span></span></span> &#12289;<span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span></span></span> &#21450; <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> &#65289;&#30340;&#23545;&#40784;&#65292;&#19988;&#31561;&#20110; 1&#12290;</p>
<table class="t-rev-begin">
<tr class="t-rev t-since-c11">
<td>
<p>&#33509;&#29992; <a href="c-language-_Alignas.html"><code>_Alignas</code></a> &#20196;&#19968;&#20010;&#23545;&#35937;&#30340;&#23545;&#40784;&#20005;&#26684;&#20110;&#65288;&#22823;&#20110;&#65289; <span class="t-lc"><a href="c-types-max_align_t.html">max_align_t</a></span> &#65292;&#21017;&#23427;&#25317;&#26377;<i>&#25193;&#23637;&#23545;&#40784;&#35201;&#27714;</i>&#12290;&#25104;&#21592;&#25317;&#26377;&#25193;&#23637;&#23545;&#40784;&#30340;&#32467;&#26500;&#20307;&#25110;&#32852;&#21512;&#20307;&#26159;<i>&#36807;&#23545;&#40784;&#31867;&#22411;</i>&#12290;&#26159;&#21542;&#25903;&#25345;&#36807;&#23545;&#40784;&#31867;&#22411;&#26159;&#23454;&#29616;&#23450;&#20041;&#30340;&#65292;&#32780;&#19988;&#23545;&#20110;&#27599;&#31181;<a href="c-language-storage_duration.html">&#23384;&#20648;&#26399;</a>&#30340;&#25903;&#25345;&#21487;&#20197;&#19981;&#21516;&#12290;</p>
</td>
<td><span class="t-mark-rev t-since-c11">(C11 &#36215;)</span></td>
</tr>
</table>
<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>3.15 object (p: 6)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>6.2.6 Representations of types (p: 44-46)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>6.5/6-7 Expressions (p: 77)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>6.2.8 Alignment of objects (p: 48-49)</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>3.2 alignment (p: 3)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>3.14 object (p: 5)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>6.2.6 Representations of types (p: 37-39)</li>
</ul>
</dd>
</dl>
<dl>
<dd>
<ul>
<li>6.5/6-7 Expressions (p: 67-68)</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>1.6 Definitions of terms</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>