Arrays 无法初始化字符数组

Arrays 无法初始化字符数组,arrays,c++11,char,Arrays,C++11,Char,我正在试图了解以下代码不起作用的原因: void test2() { char ulu[256]; ulu[]{ "Hello","Hello" }; } 但这个代码是有效的: struct my_test { char test_array[256]; }; void test() { my_test test_array[]{ "hello", "hello" }; printf("%s", test_array); } 我希望两个代码都会失败

我正在试图了解以下代码不起作用的原因:

void test2() {
    char ulu[256];
    ulu[]{ "Hello","Hello" };

}
但这个代码是有效的:

struct my_test
{
    char test_array[256];
};

void test() {
    my_test test_array[]{ "hello", "hello" };
    printf("%s", test_array);
}
我希望两个代码都会失败,但只有第一个会失败

有人能给我解释一下为什么在声明和初始化变量test_数组作为my_测试类的对象时它会起作用吗

我收到一个错误声明:

a value of type "const char *" cannot be used to initialize an entity of type "char"
提前感谢您的帮助

由于test()使用,因此编译正确。 test2()似乎在执行赋值。赋值时不能使用统一初始化。

因为test()使用统一初始化,所以编译正确。 test2()似乎在执行赋值。分配时不能使用统一初始化

有人能解释一下为什么它在声明和初始化时有效吗 变量test_数组作为my_测试类的对象

这不是正确的语法

你想要的是这样的:

char ulu[][256] {
  "Hello",
  "Hello"
};

for (auto const& i : ulu)
  std::cout << i << '\n';
更现代的方法是使用
std::vector
std::array

有人能解释一下为什么它在声明和初始化时有效吗 变量test_数组作为my_测试类的对象

这不是正确的语法

你想要的是这样的:

char ulu[][256] {
  "Hello",
  "Hello"
};

for (auto const& i : ulu)
  std::cout << i << '\n';

一种更现代的方法是使用
std::vector
std::array

也许您想要
charulu[][256]={“Hello”,“Hello”}?也许你想要
字符[][256]={“你好”,“你好”}
Hello
Hello