C++报错invalid conversion from 'char' to 'const char*'解决求助
报错原因
你定义的函数返回值类型为const char*(指向字符的常量指针),但找到匹配字符时的返回语句return haystack[i];返回的是单个char类型的字符值,两类类型不匹配,编译器无法完成隐式转换,因此抛出对应错误。
修复方法
将匹配成功后的返回语句修改为返回对应位置的指针即可,两种等价写法二选一:
- 写法1:
return &haystack[i];直接取数组第i位元素的内存地址 - 写法2:
return haystack + i;通过指针偏移得到对应位置的地址
优化后的完整参考代码
可以删除冗余的no变量简化逻辑,同时建议修改函数名避免和标准库自带的strchr冲突:
const char *my_strchr(const char *haystack, const char needle) { int i = 0; while (haystack[i] != '\0') { if (haystack[i] == needle) { return &haystack[i]; } i++; } // 遍历完整个字符串未找到匹配项,返回空指针 return nullptr; }
内容的提问来源于stack exchange,提问作者goby gonagle
相关产品推荐
相关产品推荐

