下标值既不是数组也不是指针,也不是向量(char位置)

时间:2015-11-19 16:52:30

标签: c

我已经阅读了一些有关此内容的帖子,但我仍然无法修复我的代码。

int numericValue(char s, int i) {
    if (strcmp(s[i], "$") == 0)
        return 0;
    else
        return value(s[i]) + numericValue(s, i + 1);
}

这是我的代码,如果我为int numericValue(char s, int i)更改int numericValue(char *s, int i),我会收到此警告:

  

传递' strcmp'的参数1在没有强制转换[-Wint-conversion]的情况下从整数生成指针。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

如果您只是想比较两个字符,请使用下面的双等号(==)并注意美元符号周围的单引号,因为字符文字用单引号括起来,

int numericValue(char* s, int i) {
if (s[i] == '$')
    return 0;
else
    return value(s[i]) + numericValue(s, i + 1);
}

将使用strcmp来比较两个字符串,但在您的情况下,您将字符传递给strcmp作为第一个参数,这是一个不匹配。请参阅下面的strcmp签名:

int strcmp(const char *s1, const char *s2);