2017-08-02 72 views
0

我想在编译期间用最少量的手动工作来初始化char数组。有没有办法用混合字符和“字符串”来初始化数组

是否有此

char arr[5] = {0x4, 'a', 's', 'd' 'c'}; 

char arr[5] = {0x4, "asdc"}; 
+0

这不是[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)?你为什么想要那个'arr'?如果你想在编译时初始化它,它不应该是'const'吗? – Walter

回答

1

你可以在字符的int字符串转义序列整合工作简写格式:

char arr[6] = { "\x04asdc"}; 

编辑:更正阵列的长度。

+4

这个问题是,字符串'“\ x04asdc”'是*六个*字符长。指定一个较小的数组大小是不正确的。 –

+0

@Someprogrammerdude请忽略我以前的评论,我不小心在C页面结束了。 nul终结者的确在C++中明确授权。 – Quentin

1

不,这是不可能的。但是,你可以

char arr[] = "\04asdc"; 

这样做的问题是,是不会正是像你展示原始数组,因为它包含一个字符串结束,因此有六个要素。