定义后将值分配给字符串文字数组时出错

时间:2019-02-08 11:35:24

标签: c++

当我尝试在定义点初始化字符串文字数组时,它可以正常工作:

    char* arr[3] = { "ahmed"  , "saeed" , "ahmed" }; 

但是当我尝试在定义点之后为其分配这些值时,它从第二个值开始给我一个错误:

char* arr[3] ; 

arr[3] = { "ahmed"  , "saeed" , "ahmed"}; 

这里和发生什么了?

错误:

Severity    Code    Description Project File    Line    Suppression State
Error (active)  E0146   too many initializer values structs_consts  

Severity    Code    Description Project File    Line    Suppression State
Error   C2440   '=': cannot convert from 'initializer list' to 'char *' structs_consts

谢谢。

1 个答案:

答案 0 :(得分:6)

区别在于,一个是初始化,另一个是[尝试]分配。这些是不同的结构。

您无法分配给数组。你就是不行即使可以,您[可能]也无法使用初始化语法来做到这一点。

这是C的规则。为什么?不知道。

一旦数组存在,您就必须分别为其元素分配(直接,通过std::copymemcpy或其他类似方式分配给元素)。


特定的编译器错误是因为您尝试使用表达式a[3]来执行此操作,但这不是数组的名称。数组的名称仅为aa[3]是不存在的元素。

声明中的a[3]所表示的含义有所不同。是的,令人困惑。


一个不错的std::array<std::string_view, 3>游戏怎么样?