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