函数分为库函数和自定义函数两种,库函数直接调用就行,无需其他说明。而对于自定义函数能够分为两大类:1.有返回值函数;2.无返回值函数。
1.有返回值函数,返回一个固定值,也可结合if等语句,返回多个值,但最终输出的只有一个固定值。在定义时候要确定是什么样函数类型,比如返回值为整数,定义为int cylinder(int radius),调用时候分为两种:①赋值:volume=函数(radius),注意此时调用用的函数不必要说明是什么类型的形参。②输出:printf("%d",函数(radius))。
2.无返回值函数,因为不知道要返回什么值,因此不能说明函数类型,定义时候用void。因此void pyramid (int n),调用时,直接把实参带进去就行,比如pyramid(6)。
变量:为了更简单,不用一次一次调用,实现共用,出现了全局变量,全局变量在定义时,应该放在主函数外,这样能够实现在调用函数与主函数之间数据贯通,比如:
#include<stdio.h>
int x1=30, x2=40; //全局变量
void sub(int x,int y);
int main(void)
{
int x3=10,x4=20;
sub(x3,x4);
printf("%d,%d,%d,%d\n",x3,x4,x1,x2);
return 0;
}
void sub(int x,int y)
{
x1=x;
}
运行到调用函数后,x1被赋值为10,如果不定义全局变量,x1为10只能出现在调用函数里面,出不来的,定义全局变量后,x1实现共用,因此输出结果为10,20,10,40
静态变量:上次函数调用后,值仍然保留,直到下次调用,继续能使用。第一次运行这个调用函数时,a为1,然后再++后为2,第二次再运行时候,带入上一次运行结果a为2,进行运算,再++后为3。
int fun(int X)
{
static int a=1;
a++;
,,,,,,
}
注意易错点:1.调用函数后跟结构体,不能带;符号,因为是一个整体。2.for循环的最前面for(i=1,z=x;i<10,i++)的i=1,z=x只能执行一次。3.调用函数返回值阔以是一个表达式。比如
int f(int x)
{
return x*x*x;
}