函数
每个程序都会有一个main函数,程序在运行时只运行main函数;若想运行其他的函数,则需要在main函数中调用
函数定义
下面是一个标准的main函数:
int main(){
语句......
return 0;
}
函数由以下几部分组成:
1,函数类型
函数的类型和和变量类型相同,可以为int
double
等类型,类型要在函数定义时要写在函数名前方(与变量的声明意义相同)
2,函数名称
函数名同样与变量命名规范相同,可以为数字、字母、下划线等。
需要注意的是,函数名不能以数字开头,也不能为纯数字
3,传入参数和返回参数
传入参数写在紧跟函数名后的括号内,返回参数可以写在任何地方。需要注意的是,如果一个函数返回了一个参数,那么就说明这个函数已经完成运行 ,即使你下面还有几千行代码,它也不会继续运行。
返回值类型要与函数类型相同!1
不多做解释,直接看示例:
/* 函数1-1 判断素数 */
int isPrime(int n){
if(n < 2) return 0;
for(int i = 2; i <= sqrt(n); i++){
if(n % i == 0) return 0;
}
return 1;
}
上面的函数作用是判断传入的int
类型变量n是否为素数,若是素数,返回1,不是素数返回0; 这是判断素数的标准函数,需要牢记, 遇到判断素数直接调用这个函数肯定不会出错。
我们来分析一下函数1-1
1,函数被定义为int类型,故返回值为0或1,同样为int类型
2,传入的参数n在括号中被定义为int类型,它也可以在这里被定义为其他类型,函数、传入参数和返回参数的类型根据函数的用途而定。
3,一旦返回了0或1,这个函数即终止,不会继续运行,直到下次在main函数里面调用。
例如:传入参数n的值为1时,满足if语句的条件,则函数会直接返回0,同时函数终止;传入的值为4时,满足for循环中的if条件,此时也会被返回0。以上无论那种情况,都不会使函数运行到return 1;这一语句。
/* 函数1-2 求n个0.1的和*/
double average(int n){
double a=0;
for(int i = 1; i <= n; i++){
a+=0.1;
}
return a;
}
从函数1-2可以看出,返回值类型和函数类型必须相同,而参数可以是任意类型。
4,函数的调用
函数定义后,要在main函数中调用才能实现函数的功能。
示例:
/* 函数1-3 到底可不可爱v1 */
void func1(){
printf("我最不可爱!\n");
}
void func2(){
printf("我最可爱!\n");
}
void func3(){
printf("上句话是假的,下句话才是真的\n");
func2();
}
int main(){
func1();
return 0;
}
尝试运行上述代码。
我们来分析一下函数1-3
我们定义了三个函数,分别是func1
func2
func3
,每个函数的功能都是输出一句话。
假如我们只定义函数而不在main函数中调用它,那么它就无法发挥作用。
你也应该知道了函数输出的内容,接下来运行下面这段代码,我们做一个比较。
/* 函数1-4 到底可不可爱v2 */
void func1(){
printf("我最不可爱!\n");
}
void func2(){
printf("我最可爱!\n");
}
void func3(){
printf("上句话是假的,下句话才是真的\n");
func2();
}
int main(){
func1();
func3();
return 0;
}
运行过后的结果你也应该看到了,这就是函数定义与调用的方式。
调用了函数之后,才会真正的实现它的功能,就像只有我们心里想着才能写得出来文字一样。
若函数类型是int,返回值也必须是int类型;函数类型是double,返回值类型也必须是double;其他类型亦然 ↩︎