gpt4 book ai didi

c - 创建字符数组的方法之间的区别

转载 作者:行者123 更新时间:2023-12-04 09:35:32 25 4
gpt4 key购买 nike

我很好奇在 C 中创建字符数组的不同方法。假设我们要创建一个包含字符串 "John Smith" 的字符数组。我们可以通过显式提供元素的数量来初始化数组,即

char entireName[11] = "John Smith"; 

其中字符J-o-h-n有四个空格,一个为空格, 五个用于 S-m-i-t-h, 一个对于字符串终止符 \0

您也可以通过简单地输入

来完成上述操作
char entireName[] = "John Smith"; 

这两个字符数组由谁编译会有很大的区别吗?是否为两个表达式分配了相同数量的内存,并以相同的速度执行?

真正的区别是什么?

最佳答案

两者相同,但建议使用第二种。

如果您在定义和初始化期间遗漏了数组的大小,编译器将分配适当 所需的大小。与有时使用固定大小的定义相比,这不太容易出错

  1. 我们可能会忘记为空终止符 \0 保留空间。
  2. 我们可以提供比指定大小更多的初始化字符串。

事实仍然存在,启用适当的警告,如果您执行上述操作,您将收到警告,但使用第二种方法,这些情况不会出现,所以不用担心。


编辑:

FWIW,在第二种情况下,数组长度将根据提供的初始化字符串长度决定。正如我们所知,编译器时间字符串无法在运行时调整大小,因此这是第二种方法的唯一可能限制。如果在后面的部分中,您希望数组包含比提供的初始化字符串更大 的内容,则第二种方法不适合。

关于c - 创建字符数组的方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30667334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com