day8函数笔记
函数
定义
当我们需要用到某种重复性较高的功能的时候,为了方便,我们可以将一直要编写的代码提取出来,写在一个{}中,这样的过程,一般就是函数。
在C语言中,定义一个函数的具体语法格式如下:
返回值类型 函数名([[参数类型 参数名1],[参数类型 参数名2],……,[参数类型 参数n]])
{
执行语句
………
return 返回值;
}
函数的写法
需要函数声明的,一般函数的代码就写在main这个主函数的后面。
函数的代码直接写在main函数前面的,就不需要声明。
1.无类型(无返回值),无参数
#include <stdio.h>
void speak();//有函数声明,函数要写在main的下面.
int main() {
speak();//调用函数.
return 0;
}
void speak() {
//函数体
printf("你好啊!\n"); //可以在main函数中看到调用函数的效果
}
2.有类型(有返回值),无参数
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int R() { //无声明,直接写在main函数前面
srand((unsigned int)time(NULL)); //调用随机数
return rand() % 5; //我们需要给一个随机值给下面的代码使用,就需要有一个整数类型的返回值
}
int main(){
char name[5][5] = {1,2,3,4,5};
printf("%s\n", name[R()]);//调用.
return 0;
}
3.无类型(无返回值),有参数
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int R() { //无声明,直接写在main函数前面
srand((unsigned int)time(NULL)); //调用随机数
return rand() % 5;//产生一个随机的整数类型的返回值
}
void print;//声明
int main(){
print(R());//调用了R函数的随机数,以及将它作为参数来使用print函数。
return 0;
}
void print(int data){ //当有一个参数进来后,这个函数就会输出字符数组中的数据。
char name[5][5] = {1,2,3,4,5};
printf("%s\n", name[data]);
}
4.有类型(有返回值),有参数
#include <stdio.h>
int add(int x,int y){//这里的x,y就作为形参的形式存在。
return x+y; //会返回一个x+y的值。
}
int main(){
int a,b;//这里的a,b就作为实参的形式存在
scanf("%d+%d",&a,&b);
printf("a+b=%d\n",add(a,b));
return 0;
}
形参与实参
在定义有参函数时指定的参数x和y是形式参数,简称形参,它们只在形式上存在,并不是真正存在的参数。调用函数时传入的参数(如案例中的scanf里面的(a和b))是实际参数,简称实参,与形参相对,实参则是指实际存在的参数。
函数的返回类型与返回值
-
1函数的返回值通过函数中的return获得,如果函数的返回值为void可以不需要return语句。
-
2函数return语句中的返回值数据类型应该与函数定义时相同。
-
3如果函数中没有return语句,那么函数将返回一个不确定的值。
exit函数与return语句
int test1(){
printf("111111\n");
//return 0;
//exit(0);
//在子函数中调用exit同样代表程序终止,但在子函数中调用return只是子函数终止,程序正常执行
printf("222222\n");
//return 0;
//exit(0);
}
int main(){
test1();
printf("AAAAAA\n");
//exit(100);//exit是C语言的库函数,调用exit的结果就是程序终止
//return 100;//在main函数中调用exit与调用return是一样的
printf("CCCCCCC\n"); return 0;//main函数return代表程序终止
printf("BBBBBB\n");
//exit(100);
//return 0;//可以尝试在不同位置调用。
}

浙公网安备 33010602011771号