当参数是常量字符指针时返回字符指针

问题描述 投票:0回答:1

在学校的一次练习中,我被要求实现以下功能 char *index(const char * s, int c); char *rindex(const char * s, int c);

在我使用编译器标记进行编译之前,我并不觉得有任何麻烦 讲师概述了我们将其放入 makefile 中,然后它无法编译,因为我正在使用 指向字符串中常量字符的非常量指针。

您不应该能够将常量指针的地址分配给非常量指针,这是有道理的,因为它首先违背了 const 关键字的目的。

我不明白的是该函数应该如何返回指向第一个/最后一个出现的指针 当返回不是 const char 时,字符串中字符 c 的值。

我调整了我的函数以使用 const char* 参数,但是如果不更改返回类型就不可能返回,我不能这样做,因为原型应该与 C 中的实际索引和 rindex 函数相同。

我想我的问题是,这些函数如何返回指向常量字符串中的字符的指针,而它们本身又不是 const char*?

c linux constants
1个回答
0
投票

通过忽略警告,这意味着生成的可执行文件可能会调用 未定义的行为。

采用

const char *
的函数可以接受例如字符串文字。如果您将非常量字符指针返回到该字符串文字的任何部分,则它可以用于写入该内存,此时“任何事情”都可能发生,尽管分段错误是更可能的选项之一。

© www.soinside.com 2019 - 2024. All rights reserved.