1个C语言程序放在若干个源文件(程序编译单位),一个源文件有若干个函数;
函数间相互调用,主函数不能被调用;
无参函数/有参函数(主函数通过参数向其传递数据);
空函数 dummy();
return(函数返回值);
#include<stdio.h>
int main()
{
void printstar();//声明函数
void print_message();
printstar();//调用函数
print_message();
printstar();
return 0;
}
void printstar()//定义函数
{
printf("********\n");
}
void print_message()
{
printf("how are you doin'\n");
}
#include<stdio.h>
void main()
{
int max(int x,int y);//形参
//定义函数时指定了返回值的类型
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b);//实参
printf("Max is %d",c);
}
int max(int x,int y)
{
int z;
z=x>y?x:y;
return(z);//返回值
}
int max(int x,int y)
{
return(x>y?x:y);//返回值
}
传值:实参向形参单向传递值,顺序对应;形参(可以是表达式,但必须能确定值)只有在函数被调用时,在被分配内存单元;调用结束后形参单元被释放,实参单元保留内存并维持原值;
C语言中,不说明类型的函数按整形处理;函数的制定类型与return表达式的类型一致;无返回值的函数类型使用void(空类型)定义;
函数调用可以作为一个函数的实参:m=max(a,max(b,c));
/*****实参求值的顺序*****/
#include<stdio.h>
void main()//vc++是stdcall调用方法(自右向左)
{
int f(int a,int b);//函数声明
int i=2,p;
p=f(i,++i);//函数调用
/*自右向左:f(3,3)*/
/*自左向右:f(2,3)*/
printf("%d\n",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;
}
/**对被调用函数作声明**/
#include<stdio.h>
void main()
{
float add(float x,float y);//对被调用函数add声明
float a,b,c;
scanf("%f,%f",&a,&b);
c=add(a,b);
printf("sum is %f\n",c);
}
float add(float x,float y)
{
float z;
z=x+y;
return(z);
}
/**库函数:指数函数pow**/
#include<stdio.h>
#include<math.h>
int main(void)
{
double x=2.0,y=3.0;
printf("%lf raiser to %lf is %lf\n",x,y,pow(x,y));
return 0;
}
/**pow.c**/
double