c - 不使用指针返回多个值的函数

标签 c

如果我创建一个函数,返回多个值到同一个变量,如示例:

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/

相关文章:

c - 如何从文本文件中读取数据并使用 malloc 为文本文件中的每个单词分配内存空间作为二维字符串数组

c - 如何在 C 中对 .txt 文件内的数据进行排序

c - 如何动态分配包含多个数组的结构体?

c - 在 getch() 之后,即使在输入 1-6 之后,程序也会忽略 if。

c - 我应该在 C 语言中长时间使用 sleep() 函数吗?

c - _beginthread 与 CreateThread

c - C 代码片段的解释

c - 为什么 "char array"需要两个 "[]"而 "int array"需要一个 "[]"?

计算文件中的字数?

c - 将 C 数组传递给函数