c – 字符串到char *函数

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());

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...