一道争议二级题

来源:百度知道 编辑:UC知道 时间:2024/06/02 19:53:45
以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。
char *fun(char *str, char c)
{ int n=0;char *p=str;
if(p!=NULL)
while(p[n]!=c&&p[n]!= '\0') n++;
if(p[n]== '\0') return NULL;
return(______);

我感觉是str+n啊 而答案是*(str+n)不是说是返回一个地址吗

你说的话没错。看下面代码。是这样的。
#include <stdio.h>
#include <string.h>
char *fun(char *str, char c)
{ int n=0;char *p=str;
if(p!=NULL)
while(p[n]!=c&&p[n]!= '\0') n++;
if(p[n]== '\0') return NULL;
return( str+n); }
main()
{
char str[99]="hello!";
char c='e';
printf("%s ",fun(str,c));
}
VC++执行结果ello!
和题目要求一样。

str+n

答案是错的,地址不用*

你是对的