![](/img/trans.png)
[英]Why won't the items in my vector change during for-each loop in 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
数组,该数组在调用后不会更改。 您不复制字符串,而仅复制指针。
您有几个错误。
初始化而不是赋值。
写Text[Test.TextID] = Text;
而不是Text[Test.TextID] = { Text };
您有一个与函数参数同名的全局变量:
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;
在C++
您的main
必须是int
类型,因此void main();
是无效的。 您应该使用int main();
通常,当您使用字符文字时,您要使用std::string
或至少使用const char*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.