gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:12 26 4
gpt4 key购买 nike

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

    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

谢谢。

最佳答案

不同的是,一个是初始化,另一个是[attempted]赋值。这些是不同的结构。

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

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

一旦数组存在,您就必须单独分配给它的元素(直接分配,或通过 std::copymemcpy 或其他类似的东西)。


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

a[3]的话语在声明 中意味着不同的东西。是的,这很困惑。


来一场std::array<std::string_view, 3>的好游戏怎么样? ?

关于c++ - 定义后将值分配给字符串文字数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54591571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com