1
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 };我在骑手的文本中出现错误。我不确定如何解决它,我尝试了一切。

4

3 回答 3

2

你有一个包含 16 个指针的数组。这很不寻常(在 C++ 中您可能想要使用std::string),但不是问题的直接原因。然后你尝试巫术:你传递一个命名的函数参数Text,并期望编译器猜测Text你的意思是两个 s 中的哪一个。不起作用,参数隐藏了全局。重命名函数参数。

于 2014-09-24T13:20:22.593 回答
0

你有几个错误。

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

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

    您还可以使用全局范围运算符::导致::Text[Test.TextID] = Text;

  3. C++你的mainmust 是 type int,所以void main();是无效的。你应该使用int main();

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

于 2014-09-24T13:32:14.483 回答
0

你想要一个任务,但你写了一个初始化。

改为这样写:

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

编辑

请记住,这Text是一个数组指针,它使用char数组文字的地址进行初始化。那作业

Text[Test.TextID] = NewText;

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

于 2014-09-24T13:19:42.570 回答