返回变量地址时出错

时间:2015-11-16 06:25:28

标签: c return-value

我们应该编写一个函数来返回字符串str中第一次出现ch的地址。我编写了下面的代码,它运行并且似乎返回可能正确的数字(我在字符串中为5个字符调用了5次函数,并且返回值以1个字节分隔。)但是,返回语句中的&符号带有悬停文本的红色下划线,"返回值类型与功能类型不匹配。"如果出现错误,我不明白代码是如何构建和运行的。

#include <stdio.h>
#include <string.h>

int mystrchr (char *str, char ch){
    int i;
    for(i=0;i<strlen(str);i++){
        if(str[i]==ch)
        {
            //printf("%c\n",str[i]);
            return &str[i];
        }
    }
}

2 个答案:

答案 0 :(得分:0)

让我告诉你原因: 根据您定义的功能int mystrchr (char *str, char ch){},返回类型为int,但实际值为&str[i];,代码中的类型为char *

所以有警告..

答案 1 :(得分:0)

char* mystrchr (char *str, char ch){
int i;
for(i=0;i<strlen(str);i++){
    if(str[i]==ch)
    {
        break;
    }
}
return &str[i];
}

我同意其他人的意见。