【发布时间】:2020-02-11 13:23:33
【问题描述】:
这可能有一个非常简单的解决方案,但我似乎无法弄清楚。我可以找到无数关于如何在 C++ 中创建字符串数组的示例,但我找不到显示如何将赋值分开的示例。
我目前有一个看起来像这样的赋值声明:
static const char *desc[3] = { "apple", "banana", "orange" };
我想做的是将声明和赋值拆分为单独的语句。声明:
static const char *desc[3];
...但我似乎无法弄清楚如何完成任务。我尝试了以下方法:
desc = { "apple", "banana", "orange" }; // Expression must have a modifiable lvalue. error: assigning to an array from an initializer list
*desc = { "apple", "banana", "orange" }; // Too many initializer values. error: cannot convert '<brace-enclosed initializer list>' to 'const char*' in assignment
desc[3] = { "apple", "banana", "orange" }; // Too many initializer values. error: cannot convert '<brace-enclosed initializer list>' to 'const char*' in assignment
*desc[3] = { "apple", "banana", "orange" }; // Expression must have a modifiable lvalue. error: assignment of read-only location '* desc[3]'
【问题讨论】:
-
你必须使用 const char 吗?如果是这样,它只能在创建时初始化。
-
const char *desc[3] = { "apple", "banana", "orange" };不会有问题 -
@DavidC.Rankin 是的,有。我想要一个
if语句,它为desc分配不同的值。 -
你不会被阻止这样做。
const char *desc[3]声明了一个包含 3 个指向const char*的指针的数组。如果您使用const char *desc[3] = { "apple", "banana", "orange" };进行初始化,则没有任何东西可以阻止您稍后对其中一个指针进行分配,if (somecondition) desc[2] = "grapes";(现在您无法修改每个指针指向的 string-literals指针,但您可以更改指针指向的内容) -
我希望全部更改或不更改,因此如果将它们全部更改,则设置初始值是没有意义的,并且有更改每个语句的语句会很烦人元素。
标签: c++ arrays variable-assignment assign variable-declaration