繁体   English   中英

C ++为什么用另一个覆盖文本数组后,它的文本数组不会改变?

[英]C++ Why won't my array of text change after I override it with another?

char* Text[16] = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N"};
struct Test{
     byte TextID;
} Test;

void TextOverrider(char* Text){
     Test.TextID < 14 ? Test.TextID++ : Test.TextID = 0;
     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");
}

我在Text[Test.TextID] = { Text };出错Text[Test.TextID] = { Text }; 在我关于骑手的文字中。 我不确定如何解决它,我尝试了一切。

您有16个指针的数组。 这是不寻常的(在C ++中,您可能想使用std::string ),但不是导致问题的直接原因。 然后尝试voodoo:传递一个称为Text的函数参数,并期望编译器猜测这两个Text的哪一个。 不起作用,该参数隐藏了全局变量。 重命名函数参数。

您需要分配,但是您编写了一个初始化。

改写这个:

void TextOverrider(char* NewText){
 Test.TextID < 14 ? Test.TextID++ : Test.TextID = 0;
 Text[Test.TextID] = NewText;
}

编辑

请记住, Text是一个数组指针,它是用char数组文字的地址初始化的。 分配

Text[Test.TextID] = NewText;

设置一个新的指针。 您有责任将传递给函数的地址指向一个char数组,该数组在调用后不会更改。 您不复制字符串,而仅复制指针。

您有几个错误。

  1. 初始化而不是赋值。

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

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

     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; } 

    这样,全局变量是不可见的,并且您正在尝试将char*分配给char数组的元素,即char

    您还可以使用全局作用域运算符::产生::Text[Test.TextID] = Text;

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

  4. 通常,当您使用字符文字时,您要使用std::string或至少使用const char*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM