需不需要返回值,具体看函数类型。void类型不需要。你这个子函数,可以通过指针改变原函数对应变量的值。
和返回值没关系。当然,你也可以用返回值对原变量赋值来进行更改。

程序代码:#include<stdio.h>
typedef struct node{
int s;
}STU;
int N;
void fun1(STU a[],STU*s)
{
int i;
*s=a[0];
for(i=1;i<N;i++)
if(s->s>a[i].s)*s=a[i];
return;//这句话可有可无,主要是为了示范void函数里其实也是允许return的,这个技巧未来你写递归的时候会用得着。但注意,return 后面不允许跟任何数据
}
STU* fun2(STU a[],STU*s)//s完全不用。仅仅是依靠p指针把结果传递出去而已
{
int i;
STU* p=&a[0];
for(i=1;i<N;i++)
if(p->s>a[i].s)p=&a[i];
return p;
}
int main()
{
N =4;
STU a[]={2,3,1,4};
STU Min1={0};//个人习惯 给每个变量初始化
fun1(a,&Min1);
printf("%d\n",Min1.s);
STU*Min2=NULL;//所有指针都尽量在声明定义的时候就初始化
Min2=fun2(a,&Min2);
printf("%d\n",Min2->s);
return 0;
}[此贴子已经被作者于2016-9-23 23:36编辑过]
