char * strFind(const char * str,const char * substr)
{
int i,j;
int m= strlen(str);
int n= strlen(substr);
for ( i=0;i<=m-n;++i)
{
for ( j=0;j<n;++j)
{
if(str[i+j]!=substr[j])break;
}
if (j==n)
{
return str+i;
}
}
return NULL;
}
VC++6.0的环境。会提示无法将const char*转换成char*。去掉形参里的const修饰就没有问题。为什么。返回的话没有修改吧。吧str+i改成str同样不行。
形参是char *类型,实参是cons chart *类型时,编译程序会给出错误信息,意思是被调函数可以改变串的内容,而实参又是const类型,这样的实参不允许改变,二者之间不能融合,即使函数不改变形参的内容也不行。
但形参是const char *,实参是 char *是可行的,当要返回形参指针时,其返回类型必须是const char *。
/*
Yes.
Press any key to continue
*/
#include <stdio.h>