C++ C++;为什么赢了';我的文本数组在我用另一个数组覆盖它之后不会改变吗?

C++ C++;为什么赢了';我的文本数组在我用另一个数组覆盖它之后不会改变吗?,c++,character-arrays,C++,Character Arrays,我在Text[Test.TextID]={Text}处得到一个错误在我的文本中超过了骑手。我不确定如何修复它,我尝试了所有方法。您想要分配任务,但编写了初始化 写下以下内容: void main(){ printf("%s\n\n", Text[0]); TextOverrider("Hello"); TextOverrider("Whats"); TextOverrider("Up"); TextOverrider("Dude");

我在
Text[Test.TextID]={Text}处得到一个错误在我的文本中超过了骑手。我不确定如何修复它,我尝试了所有方法。

您想要分配任务,但编写了初始化

写下以下内容:

void main(){
     printf("%s\n\n", Text[0]);
     TextOverrider("Hello");
     TextOverrider("Whats");
     TextOverrider("Up");
     TextOverrider("Dude");
     TextOverrider("Playing");
     TextOverrider("Xbox");
     TextOverrider("Lol");
     TextOverrider("XD");
     TextOverrider("5EVR");
     TextOverrider("Anyonmoose");
     TextOverrider("Hoora");
}

设置新指针。您负责将传递给函数的地址指向调用后不会更改的
char
数组。您不复制字符串,只复制指针。

您有一个由16个指针组成的数组。这是不寻常的(在C++中,你可能想使用<代码> STD::String ),但不是你问题的直接原因。然后尝试voodoo:传递一个名为
Text
的函数参数,并期望编译器猜测您指的是这两个
Text
中的哪一个。如果不起作用,参数会隐藏全局变量。重命名函数参数。

您有几个错误

  • 初始化而不是赋值

    写入
    Text[Test.TextID]=Text
    而不是
    Text[Test.TextID]={Text}

  • 您有一个与函数参数同名的全局变量:

    Text[Test.TextID] = NewText;
    
    这样,全局变量是不可见的,您试图将
    char*
    分配给
    char
    数组的元素,该数组是
    char

    您还可以使用全局作用域运算符
    ::
    ,结果是
    ::Text[Test.TextID]=Text

  • C++
    中,您的
    main
    必须是
    int
    类型,因此
    void main()无效。您应该使用
    intmain()

  • 通常在使用字符文字时,您希望使用
    std::string
    或至少
    const char*


  • 您需要一个赋值,但编写了一个初始化。名为
    Text
    的参数隐藏了同名的全局变量。此操作有效:)谢谢。我想你必须把它用括号括起来,因为它是一个数组。问答中有指针和数组。你能解释一下你想用“it”说什么吗?他当然会犯编译错误。由于参数隐藏全局字符串,因此左侧
    Text[Test.TextID]
    返回参数的第n个字符,而不是第n个全局字符串。或者使用范围解析运算符:
    void TextOverrider(char* NewText){
     Test.TextID < 14 ? Test.TextID++ : Test.TextID = 0;
     Text[Test.TextID] = NewText;
    }
    
    Text[Test.TextID] = NewText;
    
    char* Text[16] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N"};    
    void food(char* Text){
         Text[Test.TextID] = Text;
    }