需不需要返回值,具体看函数类型。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编辑过]