如果我创建一个函数,返回多个值到同一个变量,如示例:
char *strstr(char *s1,char *s2)
{
int flag=1;
char i,j;
for(i=0;*s1;i++)
{
if(s1[i]==s2[0])
for(j=i;*s2;j++)
{
if(s1[j]!=s2[j])
flag=0;
}
}
return i;
return 0;
}
函数返回的实际值是多少?最后一个返回值是否会与第一个返回值重叠?
最佳答案
第一个返回命中(此处为 return i;
)将是实际返回的内容。一个好的编译器会告诉您 return 0;
是死代码,因为它无法访问(即控制流无法到达该语句)。
除非您创建自己的元组或对结构(或其他一些更具语义的结构),否则在 C 中返回多个值(不使用全局变量或其他不可维护的东西)的唯一合理方法是使用指针作为输出参数,尽管你说你不想这样做。
关于c - 不使用指针返回多个值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3589842/