c / c的新手.我对以下代码有疑问:
char* string2char(String command){ if (command.length() != 0) { char *p = const_cast<char*>(command.c_str()); return p; } } void setup() {} void loop() { String string1 = "Bob"; char *string1Char = string2char(string1); String string2 = "Ross"; char *string2Char = string2char(string2); Serial.println(string1Char); Serial.println(string2Char); }
这基本上反复输出:
Ross Ross
我知道我没有理解指针如何在这里工作的概念 – 有人能够解释它吗?我将如何改变它,以便它可以显示:
Bob Ross
解决方法
这个功能:
char* string2char(String command){ if (command.length() != 0) { char *p = const_cast<char*>(command.c_str()); return p; } }
没有多大意义,它按值获取字符串并返回指向其内部缓冲区的指针,并且使用了constnes(不要这样做).当你返回已经被破坏的对象的值时,你会得到一些奇怪的行为,通过ref传递它.另外我很好奇为什么你需要做所有这些事情,你不能只是通过:
Serial.println(string1.c_str()); Serial.println(string2.c_str());