【发布时间】:2021-09-07 06:36:01
【问题描述】:
我知道如何用两种不同的方式在 C 中初始化字符串。
char str[] = "abcd";
char str[] = {'a','b','c','d','\0' };
显然写"abcd" 而不是{'a','b','c','d','\0' } 既省时又舒适。
有什么特别的原因可以像最后一行那样初始化字符串吗?它在某些情况下有用还是多余?
【问题讨论】:
-
不,没有意义。您显示的两条线严格等效。
-
第二种形式适用于任何聚合初始化。第一种形式是 char 数组的特殊形式
-
在这种情况下它们是等价的,但是你不能这样做
char* str = {'a','b','c','d','\0' };但你可以这样做char* str = "abcd";因为后者首先创建一个未命名的数组,然后将str指针分配给它,而前者只是等待初始化为数组的字符列表。 -
您的意思是“使用它没有意义吗?”还是“提供它的语言没有意义吗?”?语言提供它并不是毫无意义的,因为它显然是初始化任何类型数组的普通和通用方法。初始化一个真正的字符串是否有用取决于你。 (我,我很少使用它。)
标签: c string initialization