<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Sizeof</id>
	<title>Sizeof - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=Sizeof"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Sizeof&amp;action=history"/>
	<updated>2026-07-15T00:24:26Z</updated>
	<subtitle>在这个wiki上该页的修订历史</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=Sizeof&amp;diff=3758113&amp;oldid=prev</id>
		<title>imported&gt;Edcr1790：​/* 语法 */</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=Sizeof&amp;diff=3758113&amp;oldid=prev"/>
		<updated>2023-03-10T07:20:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;语法&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{NoteTA&lt;br /&gt;
|G1=IT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;sizeof&amp;#039;&amp;#039;&amp;#039;是编程语言[[C语言]]和[[C++]]中的[[操作符]]。它能表示[[資料類型]]或對象的存储大小（[[內存]][[字節]]數）&amp;lt;ref&amp;gt;{{Cite web|title=《C++进阶心法》吕吕，王琥编著 北京：北京航空航天大学出版社 2019 第39页|url=http://read.nongyekx.cn/gopreview?title=%E8%AE%A4%E8%AF%86sizeof&amp;amp;ssid=14632755&amp;amp;dxid=000018100337&amp;amp;d=8e3c3b21a44a8c11d74172b6e1362d6fbd0e20b893eba89f021c844e7d07f15c0f1b9316cfc9a9f6c56fbf4bd2de1ce43a49d9fde01250c1ecf10c6374dfb7add785b3506b9d1c060bc1db9dc77cc4650370d978a25d90477530fcd287ecb89365bfa44b4a533fc912972c2c16837ecf42f93884da315839cbe21f01bb3b9672031163040cd092eb9ee918a009417597f0a803132d0164c4f2bfb41159124bf3485ec571d4fe42cab10701363c037e1d76ac32279dc187fbe769e82acf20d9ff8844a3eb7544d606c74177957c2bd2b508df8a3cae3c18592db9d044f1d44524199d1fd374e6afcb90ac03f82c6ea5fcbbf82e6df7d8d1c6ac8fa3caa79fcedff137ac3cdd0e8e3cce457bc90f6f442691be31728f8574b056966bb7c248eb94063cb317a5e02a464355e6ea8bdb4469819b985ca89fc4ac4289198621a8d904b94b518cd4bc34849b2a2c84cb05ef02f3bb875b673915aa6ea13bbd1140892d1eb2d5187d602b9942a875c54292b2ecf40375515e5c83f6a63f3cbc0aaeb87ccde95137f8f848b66af4bef7846d009cfd24be2bf3485c6b239311b9585571dfa7325c13f287e85a41e075a6c89d4d519253a2ff1be99fa79faf9edaccfd408375ea33379b468a4e531bca8fa22f4f8c30b348c0be956bad906bd9299aafd652d6ad976f50f709d269fa9be98cefaf4cac7d66ef59b5e5e07c3e925e71d9082de8bb6cfae2eb94527fefd56f4de35bb1216bcafd0c6e178264607e6d9501a5b9fead7f2cb05a0637f32b7e16bec78c3b37ff88d8e587b02465c840a3c8997ae9c88312d6f6d66f29be6647ca82eace5101b775477aacb4fde364d33fb2ef0b4ccae489238625acfb8ef2513f8ab77eb447722731659fd6fc3c7d735a48de9d1d7c91b7a1c2a547337cfbcd52724e2fb9918a097e5549df99}}&amp;lt;/ref&amp;gt;，存储大小以一個char大小的单位來衡量。因此sizeof (char)等於1 。被計算的数据类型不仅可以是[[原始型別]]，例如[[整数 (计算机科学)|整数]]和[[IEEE 754|浮点]]类型，还可以是[[指標 (電腦科學)|指针]]类型和复合数据类型（[[联合体]]、[[结构体 (C语言)|结构体]]和 C++[[类 (计算机科学)|类]]）。&lt;br /&gt;
&lt;br /&gt;
==语法==&lt;br /&gt;
&amp;lt;code&amp;gt;sizeof&amp;lt;/code&amp;gt;返回的是&amp;lt;code&amp;gt;size_t&amp;lt;/code&amp;gt;数据类型。对于变量作为运算数，可以不加括号；对于数据类型作为运算数，必须加括号。例如：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
char c;&lt;br /&gt;
printf (&amp;quot;%zu,%zu\n&amp;quot;, sizeof c, sizeof (int));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[C++11]]使用该运算符返回[[可变参数模板]]的参数个数：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
template &amp;lt;typename... Args&amp;gt;&lt;br /&gt;
std::size_t GetSize (Args&amp;amp;&amp;amp;... args)&lt;br /&gt;
{&lt;br /&gt;
    /* Get size of parameter pack.*/&lt;br /&gt;
    std::size_t Count= sizeof... (args);&lt;br /&gt;
    return Count;           &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[C99]]支持结构的“可灵活数组”（flexible array）成员：返回結構中包含padding，但不包括“可灵活数组”的佔用空間，此時的功能如同 &amp;lt;code&amp;gt;[[Offsetof|offsetof]](flexarray, array)&amp;lt;/code&amp;gt;。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
struct flexarray {&lt;br /&gt;
    char val;&lt;br /&gt;
    int array[];  /* Flexible array member; must be last element of struct */&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    printf(&amp;quot;sizeof (struct flexarray) == %zu\n&amp;quot;, sizeof (struct flexarray)); //通常结果为：sizeof (struct flexarray) == 4&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
C99还支持动态长度数组，其长度在[[运行时]]确定：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stddef.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
size_t flexsize(int n)&lt;br /&gt;
{&lt;br /&gt;
   char b[n + 3];   /* Variable length array */&lt;br /&gt;
   return sizeof b;  /* Execution time sizeof */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  size_t size = flexsize(10); /* flexsize returns 13 */&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[C++11]]支持获取类的成员的尺寸，不必实例化出对象：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
struct foo {&lt;br /&gt;
  int a;&lt;br /&gt;
  int b;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
int main ()&lt;br /&gt;
{&lt;br /&gt;
  std::cout &amp;lt;&amp;lt; sizeof foo::a &amp;lt;&amp;lt; &amp;quot;\n&amp;quot; &amp;lt;&amp;lt; sizeof (foo) &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==参考文献==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:带有C代码示例的条目]]&lt;br /&gt;
[[Category:C++]]&lt;br /&gt;
[[Category:C語言]]&lt;br /&gt;
[[Category:运算符_(编程)]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Edcr1790</name></author>
	</entry>
</feed>