“赋值丢弃'const'限定符'非常量指针上的错误

时间:2012-04-11 20:24:31

标签: c pointers const

在以下功能中:

char *mystrtok(const char *input, const char *delim,char *rest) {
    int i;
    for (i = 0; input[i] != *delim && input[i] != '\0'; ++i) {
        continue;
    }
    char *result = malloc(sizeof(char) * (i + 2));
    memcpy(result, input, i + 1);
    result[i + 1] = '\0';
    if (input[i + 1] != '\0') 
        rest = input + i + 2;
    else
        rest = NULL;
    return result;
}

我为行assignment discards 'const' qualifier from pointer target type获取rest = input + i + 2,但是,正如您所看到的,rest不是常量指针。我在这里做错了什么?

3 个答案:

答案 0 :(得分:5)

input是指向常量char的指针,您将其指定给指向非常量 char的指针。 This here对你来说可能是一本有趣的读物。

答案 1 :(得分:0)

将原型更改为

char *mystrtok(const char *input, const char *delim, const char *rest);

答案 2 :(得分:0)

你也可以投出你的输入'带有(char *)类型的变量,可以解决警告。请小心使用这样的显式强制转换,以免自己修改常量。

rest = (char*)input + i + 2;