257 lines
31 KiB
HTML
257 lines
31 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>数组初始化</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_array_initialization skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading">数组初始化</h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="c.html">c</a>‎ | <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><a href="c-language-initialization.html">初始化</a><a href="c-language-array.html">数组</a>类型的对象时,初始化器必须是一个<a href="c-language-string_literal.html">字符串字面量</a>(可选地在花括号中),或是一个花括号环绕的被初始化数组成员列表:</p>
|
|
<table class="t-sdsc-begin">
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
<tr class="t-sdsc">
|
|
<td><code><b>=</b></code> <span class="t-spar">字符串字面量</span></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>=</b></code> <code><b>{</b></code> <span class="t-spar">表达式</span> <code><b>,</b></code> <code><b>...</b></code> <code><b>}</b></code></td>
|
|
<td>(2)</td>
|
|
<td><span class="t-mark-rev t-until-c99">(C99 前)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
<tr class="t-sdsc">
|
|
<td><code><b>=</b></code> <code><b>{</b></code> <span class="t-spar">指派符</span><span class="t-mark">(可选)</span> <span class="t-spar">表达式</span> <code><b>,</b></code> <code><b>...</b></code> <code><b>}</b></code></td>
|
|
<td>(2)</td>
|
|
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="10" class="t-sdsc-sep"></td>
|
|
</tr>
|
|
</table>
|
|
<div class="t-li1"><span class="t-li">1)</span> 字符串字面量初始化器,对应字符及宽字符数组</div>
|
|
<div class="t-li1"><span class="t-li">2)</span> 作为数组成员初始化器的<span class="t-rev-inl t-until-c99"><span>常量</span> <span><span class="t-mark-rev t-until-c99">(C99 前)</span></span></span>表达式的逗号分隔列表<span class="t-rev-inl t-since-c99"><span>,可以使用形为 <code><b>[</b></code> <span class="t-spar">常量表达式</span> <code><b>]</b></code> <code><b>=</b></code> 的数组指派符</span> <span><span class="t-mark-rev t-since-c99">(C99 起)</span></span></span></div>
|
|
<p>可初始化已知大小的数组和未知大小的数组<span class="t-rev-inl t-since-c99"><span>,但不可初始化 VLA</span> <span><span class="t-mark-rev t-since-c99">(C99 起)</span></span></span>。</p>
|
|
<p>任何未被显示初始化的数组元素均被<a href="c-language-initialization.html#.E9.9B.B6.E5.88.9D.E5.A7.8B.E5.8C.96">零初始化</a>。</p>
|
|
<h3><span class="mw-headline" id=".E4.BB.8E.E5.AD.97.E7.AC.A6.E4.B8.B2.E5.88.9D.E5.A7.8B.E5.8C.96">从字符串初始化</span></h3>
|
|
<p><a href="c-language-string_literal.html">字符串字面量</a>(可选地在花括号中)可以用作匹配数组类型的初始化器:</p>
|
|
<ul>
|
|
<li>通常字符串字面量<span class="t-rev-inl t-since-c11"><span>及 UTF-8 字符串字面量</span> <span><span class="t-mark-rev t-since-c11">(C11 起)</span></span></span>可用于初始化任何字符类型( <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span></span></span> 、 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">signed</span> <span class="kw4">char</span></span></span> 、 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">unsigned</span> <span class="kw4">char</span></span></span> )的数组。</li>
|
|
<li>L 前缀的宽字符串字面量可用于初始化任何与 <span class="t-lc">wchar_t</span> 兼容(忽略 cv 限定)的类型的数组。</li>
|
|
</ul>
|
|
<table class="t-rev-begin">
|
|
<tr class="t-rev t-since-c11">
|
|
<td>
|
|
<ul>
|
|
<li>u 前缀宽字符串字面量可用于初始化任何与 <span class="t-lc">char16_t</span> 兼容(忽略 cv 限定)的类型的数组。</li>
|
|
<li>U 前缀宽字符串字面量可用于初始化任何与 <span class="t-lc">char32_t</span> 兼容(忽略 cv 限定)的类型的数组。</li>
|
|
</ul>
|
|
</td>
|
|
<td><span class="t-mark-rev t-since-c11">(C11 起)</span></td>
|
|
</tr>
|
|
</table>
|
|
<p>字符串字面量的连续字节,或宽字符串字面量的连续宽字符,包含空终止字节/字符,会初始化数组的元素:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">char</span> str<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="st0">"abc"</span><span class="sy4">;</span> <span class="co1">// str 拥有类型 char[4] 并保有 'a', 'b', 'c', '\0'</span>
|
|
<span class="kw4">wchar_t</span> wstr<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span> <span class="sy1">=</span> L<span class="st0">"猫"</span><span class="sy4">;</span> <span class="co1">// wstr 拥有类型 wchar_t[4] 并保有 L'猫', L'\0', L'\0', L'\0'</span></pre></div>
|
|
</div>
|
|
<p>若数组大小已知,则它可以比字符串字面量的大小少一,此情况下空终止字符被忽略:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">char</span> str<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> <span class="st0">"abc"</span><span class="sy4">;</span> <span class="co1">// str 拥有类型 char[3] 并保有 'a', 'b', 'c'</span></pre></div>
|
|
</div>
|
|
<p>注意这种数组的内容是可更改的,不同于直接以 <span class="t-c"><span class="mw-geshi c source-c"><span class="kw4">char</span><span class="sy2">*</span> str <span class="sy1">=</span> <span class="st0">"abc"</span><span class="sy4">;</span></span></span> 访问字符串常量。</p>
|
|
<h3><span class="mw-headline" id=".E4.BB.8E.E8.8A.B1.E6.8B.AC.E5.8F.B7.E7.8E.AF.E7.BB.95.E5.88.97.E8.A1.A8.E5.88.9D.E5.A7.8B.E5.8C.96">从花括号环绕列表初始化</span></h3>
|
|
<p>当数组以花括号环绕的初始化器列表初始化时,首个初始化器初始化序号为零的数组元素<span class="t-rev-inl t-since-c99"><span>(除非指定了指派符)</span> <span><span class="t-mark-rev t-since-c99">(C99 起)</span></span></span>,而每个<span class="t-rev-inl t-since-c99"><span>不含指派符的</span> <span><span class="t-mark-rev t-since-c99">(C99 起)</span></span></span>后继的初始化器所初始化的数组元素,序号比前一个初始化器所初始化的多一。</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">int</span> x<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">3</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// x 拥有类型 int[3] 并保有 1,2,3</span>
|
|
<span class="kw4">int</span> y<span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">3</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// y 拥有类型 int[5] 并保有 1,2,3,0,0</span>
|
|
<span class="kw4">int</span> z<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">0</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// z 拥有类型 int[3] 并保有全零</span></pre></div>
|
|
</div>
|
|
<p>在初始化已知大小数组时,提供多于元素数量的初始化器是错误(除了从字符串字面量初始化字符数组)。</p>
|
|
<table class="t-rev-begin">
|
|
<tr class="t-rev t-since-c99">
|
|
<td>
|
|
<p>指派符导致接下来的初始化器初始化指派符所描述的数组元素。然后初始化以向前顺序持续,从指派符所描述元素的下一个元素开始。</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">int</span> n<span class="br0">[</span><span class="nu0">5</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">5</span>,<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">1</span>,<span class="nu0">2</span>,<span class="nu0">3</span>,<span class="nu0">4</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 保有 1,2,3,4,5</span>
|
|
|
|
<span class="kw4">int</span> a<span class="br0">[</span>MAX<span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span> <span class="co1">// 开始初始化 a[0] = 1, a[1] = 3, ...</span>
|
|
<span class="nu0">1</span>, <span class="nu0">3</span>, <span class="nu0">5</span>, <span class="nu0">7</span>, <span class="nu0">9</span>, <span class="br0">[</span>MAX<span class="sy2">-</span><span class="nu0">5</span><span class="br0">]</span> <span class="sy1">=</span> <span class="nu0">8</span>, <span class="nu0">6</span>, <span class="nu0">4</span>, <span class="nu0">2</span>, <span class="nu0">0</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="co1">// 对于 MAX=6 ,数组保有 1,8,6,4,2,0</span>
|
|
<span class="co1">// 对于 MAX=13 ,数组保有 1,3,5,7,9,0,0,0,8,6,4,2,0(“稀疏数组”)</span></pre></div>
|
|
</div>
|
|
</td>
|
|
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
|
</tr>
|
|
</table>
|
|
<p>在初始化未知大小的数组时,指派初始化器的最大下标会确定所声明的数组大小。</p>
|
|
<h3><span class="mw-headline" id=".E5.B5.8C.E5.A5.97.E6.95.B0.E7.BB.84">嵌套数组</span></h3>
|
|
<p>若数组的元素是数组、结构体或联合体,则对应的花括号环绕的初始化器列表中的初始化器是任何对于那些成员合法的初始化器,除了它们的花括号可以按如下方式省略:</p>
|
|
<p>若嵌套初始化器从左花括号开始,则整个直到其右花括号为止的初始化器初始化对应的数组元素:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">int</span> y<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span> <span class="co1">// 4 个 3 个 int 的数组的数组( 4*3 矩阵)</span>
|
|
<span class="br0">{</span> <span class="nu0">1</span> <span class="br0">}</span>, <span class="co1">// 0 行初始化到 {1, 0, 0}</span>
|
|
<span class="br0">{</span> <span class="nu0">0</span>, <span class="nu0">1</span> <span class="br0">}</span>, <span class="co1">// 1 行初始化到 {0, 1, 0}</span>
|
|
<span class="br0">{</span> <span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">1</span> <span class="br0">}</span>, <span class="co1">// 2 行初始化到 {0, 0, 1}</span>
|
|
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 3 行初始化到 {0, 0, 0}</span></pre></div>
|
|
</div>
|
|
<p>若嵌套初始化器不从左花括号开始,则只有的来自列表的充足的初始化器会被用于说明子数组、结构体或联合体;任何剩下的初始化器都被留作初始化下一个数组元素:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">int</span> y<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span> <span class="co1">// 4 个 3 个 int 的数组的数组( 4*3 矩阵)</span>
|
|
<span class="nu0">1</span>, <span class="nu0">3</span>, <span class="nu0">5</span>, <span class="nu0">2</span>, <span class="nu0">4</span>, <span class="nu0">6</span>, <span class="nu0">3</span>, <span class="nu0">5</span>, <span class="nu0">7</span> <span class="co1">// 0 行初始化到 {1, 3, 5}</span>
|
|
<span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 1 行初始化到 {2, 4, 6}</span>
|
|
<span class="co1">// 2 行初始化到 {3, 5, 7}</span>
|
|
<span class="co1">// 3 行初始化到 {0, 0, 0}</span>
|
|
|
|
<span class="kw1">struct</span> <span class="br0">{</span> <span class="kw4">int</span> a<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span>, b<span class="sy4">;</span> <span class="br0">}</span> w<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span> <span class="br0">{</span> <span class="nu0">1</span> <span class="br0">}</span>, <span class="nu0">2</span> <span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 结构体的数组</span>
|
|
<span class="co1">// { 1 } 被视为完整花括号的初始化器,用于数组的 #0 元素</span>
|
|
<span class="co1">// 该元素初始化为 { {1, 0, 0}, 0}</span>
|
|
<span class="co1">// 2 被视为数组的 #1 元素的首个初始化</span>
|
|
<span class="co1">// 该元素初始化为 { {2, 0, 0}, 0}</span></pre></div>
|
|
</div>
|
|
<table class="t-rev-begin">
|
|
<tr class="t-rev t-since-c99">
|
|
<td>
|
|
<p>数组指代器可以嵌套;对于嵌套数组的带方括号常量表达式跟在对于外层数组的带方括号常量表达式之后:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">int</span> y<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">1</span>, <span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">1</span>, <span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">1</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 0 行初始化为 {1, 0, 0}</span>
|
|
<span class="co1">// 1 行初始化为 {0, 1, 0}</span>
|
|
<span class="co1">// 2 行初始化为 {1, 0, 0}</span>
|
|
<span class="co1">// 3 行初始化为 {0, 0, 0}</span></pre></div>
|
|
</div>
|
|
</td>
|
|
<td><span class="t-mark-rev t-since-c99">(C99 起)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.B3.A8.E8.A7.A3">注解</span></h3>
|
|
<p>数组初始化器中的子表达式<a href="c-language-eval_order.html">求值顺序</a>在 C 中是不定序的(但在从 C++11 开始的 C++ 中不是):</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">int</span> n <span class="sy1">=</span> <span class="nu0">1</span><span class="sy4">;</span>
|
|
<span class="kw4">int</span> a<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>n<span class="sy2">++</span>, n<span class="sy2">++</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 未指明,但是是良定义行为,</span>
|
|
<span class="co1">// n 自增二次(以任意顺序) </span>
|
|
<span class="co1">// a 初始化为 {1, 2} 和为 {2, 1} 均合法</span>
|
|
<a href="c-io-puts.html"><span class="kw836">puts</span></a><span class="br0">(</span><span class="br0">(</span><span class="kw4">char</span><span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">)</span><span class="br0">{</span><span class="st0">'0'</span><span class="sy2">+</span>n<span class="br0">}</span> <span class="sy2">+</span> n<span class="sy2">++</span><span class="br0">)</span><span class="sy4">;</span> <span class="co1">// 未定义行为:</span>
|
|
<span class="co1">// n 的自增和读取是无序的</span></pre></div>
|
|
</div>
|
|
<p>在 C 中,初始化器的花括号列表不能为空。 C++ 允许空列表:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">int</span> a<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">0</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// C 与 C++ 中均为清零块作用域数组的合法途径</span>
|
|
<span class="kw4">int</span> a<span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// C 中非法但在 C++ 中合法的清零块作用域数组的途径</span></pre></div>
|
|
</div>
|
|
<p>与所有其他<a href="c-language-initialization.html">初始化</a>一样,在初始化静态或线程局域<a href="c-language-storage_duration.html">存储期</a>的数组时,初始化器列表中的每个表达式都必须是<a href="c-language-constant_expression.html">常量表达式</a>:</p>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="c source-c">
|
|
<pre class="de1"><span class="kw4">static</span> <span class="kw4">char</span><span class="sy2">*</span> p<span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><a href="c-memory-malloc.html"><span class="kw403">malloc</span></a><span class="br0">(</span><span class="nu0">1</span><span class="br0">)</span>, <a href="c-memory-malloc.html"><span class="kw403">malloc</span></a><span class="br0">(</span><span class="nu0">2</span><span class="br0">)</span><span class="br0">}</span><span class="sy4">;</span> <span class="co1">// 错误</span></pre></div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E7.A4.BA.E4.BE.8B">示例</span></h3>
|
|
<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="kw4">int</span> main<span class="br0">(</span><span class="kw4">void</span><span class="br0">)</span>
|
|
<span class="br0">{</span>
|
|
<span class="co1">// 下列四个数组的声明是相同的</span>
|
|
<span class="kw4">short</span> q1<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
|
|
<span class="br0">{</span> <span class="nu0">1</span> <span class="br0">}</span>,
|
|
<span class="br0">{</span> <span class="nu0">2</span>, <span class="nu0">3</span> <span class="br0">}</span>,
|
|
<span class="br0">{</span> <span class="nu0">4</span>, <span class="nu0">5</span>, <span class="nu0">6</span> <span class="br0">}</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw4">short</span> q2<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">2</span>, <span class="nu0">3</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">0</span>, <span class="nu0">4</span>, <span class="nu0">5</span>, <span class="nu0">6</span><span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw4">short</span> q3<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
|
|
<span class="br0">{</span>
|
|
<span class="br0">{</span> <span class="nu0">1</span> <span class="br0">}</span>,
|
|
<span class="br0">}</span>,
|
|
<span class="br0">{</span>
|
|
<span class="br0">{</span> <span class="nu0">2</span>, <span class="nu0">3</span> <span class="br0">}</span>,
|
|
<span class="br0">}</span>,
|
|
<span class="br0">{</span>
|
|
<span class="br0">{</span> <span class="nu0">4</span>, <span class="nu0">5</span> <span class="br0">}</span>,
|
|
<span class="br0">{</span> <span class="nu0">6</span> <span class="br0">}</span>,
|
|
<span class="br0">}</span>
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw4">short</span> q4<span class="br0">[</span><span class="nu0">4</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">3</span><span class="br0">]</span><span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span><span class="nu0">1</span>, <span class="br0">[</span><span class="nu0">1</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">2</span>, <span class="nu0">3</span>, <span class="br0">[</span><span class="nu0">2</span><span class="br0">]</span><span class="sy1">=</span><span class="nu0">4</span>, <span class="nu0">5</span>, <span class="nu0">6</span><span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
|
|
<span class="co1">// 下标能与枚举常量关联</span>
|
|
<span class="co1">// 使用带指派符的数组:</span>
|
|
<span class="kw2">enum</span> <span class="br0">{</span> RED, GREEN, BLUE <span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span>nm<span class="br0">[</span><span class="br0">]</span> <span class="sy1">=</span> <span class="br0">{</span>
|
|
<span class="br0">[</span>RED<span class="br0">]</span> <span class="sy1">=</span> <span class="st0">"red"</span>,
|
|
<span class="br0">[</span>GREEN<span class="br0">]</span> <span class="sy1">=</span> <span class="st0">"green"</span>,
|
|
<span class="br0">[</span>BLUE<span class="br0">]</span> <span class="sy1">=</span> <span class="st0">"blue"</span>,
|
|
<span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
</div>
|
|
<h3><span class="mw-headline" id=".E5.BC.95.E7.94.A8">引用</span></h3>
|
|
<div class="t-ref-std-11">
|
|
<ul>
|
|
<li>C11 标准(ISO/IEC 9899:2011):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>6.7.9/12-38 Initialization (p: 140-144)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<div class="t-ref-std-c99">
|
|
<ul>
|
|
<li>C99 标准(ISO/IEC 9899:1999):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>6.7.8/12-38 Initialization (p: 126-130)</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
<div class="t-ref-std-c89">
|
|
<ul>
|
|
<li>C89/C90 标准(ISO/IEC 9899:1990):</li>
|
|
</ul>
|
|
<dl>
|
|
<dd>
|
|
<ul>
|
|
<li>3.5.7/12- Initialization</li>
|
|
</ul>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|