微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从char *函数返回指针

如何解决如何从char *函数返回指针

我正在做由教授分配的练习。问题是: 编写函数myStrChr()。该函数具有两个参数:指向C样式字符串中第一个字符的const char * s和char c。返回指向c出现在s中的第一个外观的指针,如果c不出现在s中,则返回nullptr(0)。

我一直在尝试,但仍然无法找出解决错误方法:“从const char *到char *的无效转换”或“从char *到const char *的无效转换” 请让我修理。

merge

解决方法

如注释中所述,您需要在整个函数中始终使用 const char*,或者,如果需要 ,则返回{ )char*,那么您需要在返回之前显式消除常量。

但是您的代码中还有其他问题!最严重的是,第二个for循环在找到匹配项时不会停止:您应尽快找到字符的地址

第二(但不那么严重),您实际上不需要两个循环-您可以简单地合并两个循环,然后返回指向找到的字符的指针,或者,如果循环结束而没有找到匹配项,则返回{{1} }。

以下是该功能的简化版本:

nullptr

如果要求您的函数返回非常量const char* mystrChr(const char* s,char c) { while (*s) { // Shorthand way of writing "while (*s != '\0')" if (*s == c) return s; // Found a match,so return current pointer! ++s; } return nullptr; // No match found - return signal null pointer } 指针,则可以在返回之前进行显式强制转换:

char*

编辑:如果如注释中所述,如果要传递char* mystrChr(const char* s,char c) { while (*s) { if (*s == c) return const_cast<char*>(s); // Cast away the constness ++s; } return nullptr; // The cast is not required when using nullptr } 字符作为nul参数,则您想返回字符串的“结束标记”的地址(实际上,std::strchr function可以),您可以通过在循环后修改c语句来做到这一点:

return

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。