§8.3函数的返回值 例无返回值函数 void swap(int x, int y) ★返回语句 i int temp 形式: return(表达式); temp; 或或 return表达式 return temp 冷功能:使程序控制从被调用} 司时把返值带给调用函数 今说明 函数中可有多个 return语句 若元 retur语句,遇}时,自动返回调用函数 若函数类型与 retur语句中表达式值的类型不一致,按前者 为准,自动转换----函数调用转换 ●oid型函数
§8.3 函数的返回值 返回语句 ❖形式: return(表达式); 或 return 表达式; 或 return; ❖功能:使程序控制从被调用函数返回到调用函数中, 同时把返值带给调用函数 ❖说明: ⚫函数中可有多个return语句 ⚫若无return语句,遇}时,自动返回调用函数 ⚫若函数类型与return语句中表达式值的类型不一致,按前者 为准,自动转换------函数调用转换 ⚫void型函数 例 无返回值函数 void swap(int x,int y ) { int temp; temp=x; x=y; y=temp; }
例函数带回不确定值C Chic printstar( void printstarO print("******) i printf( *水水半水半水水*水m maino mal i int a i int a a=printstarO a=printstarO printf("%od", a) printf("%/od", a) 输出:10 编译错误!
printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); } 例 函数带回不确定值 输出:10 void printstar() { printf("**********"); } main() { int a; a=printstar(); printf("%d",a); } 编译错误!
例函数返回值类型转换 maino i float a, b Int c scanf(%f, %f, &a, &b) c=max(a, b) printf("Max is %,c) max(float x, float y) i float z ZXy!xy return (z)
例 函数返回值类型转换 main() { float a,b; int c; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } max(float x, float y) { float z; z=x>y?x:y; return(z); }
§8.4函数的调用 ★调用形式 函数名(实参表); 说明 0实参与形参个数相等,类型一致,按顺序一一对应 实参表求值顺序,因系统而定( Turbo C自右向左)
§8.4 函数的调用 调用形式 函数名(实参表); 说明: ⚫实参与形参个数相等,类型一致,按顺序一一对应 ⚫实参表求值顺序,因系统而定(Turbo C 自右向左)
例参数求值顺序 main( main( i int i-=2, p 〔inti=2,p; p=fi,+1) + printf("%od"p) printf("od",p) int f(int a, int b) int f(int a, int i int c i int c if(ab)c=1 f(ab)c=l else if(a==b)C=0 else ifa==b)c=0 else c=. return(c) return(c) 运行结果:0 运行结果:1
main() { int i=2,p; p=f(i,++i); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 例 参数求值顺序 main() { int i=2,p; p=f(i, i++); printf("%d",p); } int f(int a, int b) { int c; if(a>b) c=1; else if(a==b) c=0; else c=-1; return(c); } 运行结果:0 运行结果:1