char txt[20] = "Hello World!\0";
上面的定义分配了多少字节?考虑一个char
占用1个字节,一个占用int
2个字节。请注意,只有一个"
, 并且\0
在最后。如何计算上述定义占用了多少字节?
语句char txt[20]="Hello World!\0"
实际上包括两部分,定义部分和初始化部分。char txt[20]
定义部分告诉编译器保留 20 个字符大小的元素(在本例中为 20 个字节),而不管稍后您将使用什么内容初始化数组。初始化部分="Hello World!\0"
然后用literal 的字符“预填充”保留的内存Hello World!\0
。请注意,实际上没有必要\0
在字符串中明确写入,因为字符串文字本身由\0
-character终止。所以你应该写char txt[20]="Hello World!"
. 如果字符串字面量的长度小于分配的内存就可以了;如果用于初始化的字符串文字的长度超过数组的长度,您至少会收到一个编译器警告。
但是请注意,如果您编写char txt[]="Hello World!"
,则保留的内存长度将与初始字符串文字的长度完全相同。
关于数组初始化,您可以咨询cppreference.com。关于“变量定义”与“变量声明”的讨论,我发现这个SO 答案非常有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句