[英]How to initialize all members of an array of char arrays to one default string?
我想用一个默认字符串"default"
初始化一组char
数组的所有成员。
到目前为止我所拥有的是:
char a[10][8];
for(int i = 0; i < 10; i++)
{
strcpy(&a[i][0],"default");
}
或者:
char a[10][8] = {
{"default"}, {"default"}, {"default"}, {"default"}, {"default"},
{"default"}, {"default"}, {"default"}, {"default"}, {"default"}
};
C 语法中有没有办法以更简单的方式缩写它?
我知道有类似的问题如何将数组的所有成员初始化为相同的值? 但那里的答案集中在如何用int
值初始化一维int
数组,而不是用字符串初始化二维char
数组。
您链接问题的答案之一显示了我所知道的缩短初始化的唯一(特定于编译器的)方法:
char a[10][8] = { [0 ... 9] = {"default"} };
这是在指定初始值设定项下记录的 GCC 扩展。
请注意, ...
符号之前的空格是强制性的; 否则,您有一个浮点文字0.
(由于“最大咀嚼”规则)它不能用作下标。 之后的空间是对称的,尽管不是绝对必要的。 (我很惊讶,他们没有选择像一个冒号:
分隔的数字-有会是作为唯一的其他点没有混乱的危险,冒号出现的标签后或三元?:
运营商,这显然是在这里不相关。我也很失望这样的事情没有添加到 C99 或更高版本中作为指定初始化程序功能的一部分。毕竟,Fortran 66(又名 Fortran IV)有一种重复“初始化程序”的机制!)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.