浅谈C 语言基础知识(二)—— 函数
导语
在前面内容中我们知道了基本的 C 语言的基本的数据类型,在我们的第一个程序"hello.world !"中,在程序的开头,我们调用了一个<stdio.h>的头文件,因为我们用到了其中的一个输出函数, printf函数,那么我们可不可以自己定义函数呢?应该如何来编写程序呢?
今天的内容:
- C语言函数的产生
- C语言自定义函数
- C语言函数的参数和返回值
- C语言函数的声明以及函数定义
- C语言局部变量和全局变量
1. 函数的产生:
上次的程序中还有很多C语言书的代码只有几十行,但是在真正的编程中,我们需要完成的代码将非常大,所以将代码合理的分为不同的区块是很有必要的, 每一个区块具有相对独立的功能,并为其它程序提供对外调用的参数和返回值,这样由多个区域组成的程序才会让程序阅读者更方便的理解程序设计的理念。并可以通过函数让功能被封装起来,使得一个功能可以在不同的情况下被其它功能调用,函数就由此产生了
2. 定义函数又有什么好处呢?
- 代码结构化,增加可阅读性
2.可移植性,复用性
下面让我们来看看函数的定义与使用。
3. 函数的定义:
返回值 函数名称(参数1,参数二,...){
}
例子:
void test(){
if(2>3)
return; //提前中断函数
}
大家可以发现,定义的是没用定义返回值的,但是 在函数体中有return语句,这里给大家讲解一下,return 的用法:
1, 返回值
2,结束当前程序
上面就是return 的第二种用法
4. 函数的声明与定义:
函数声明:
返回类型 函数名(参数类型1 参数名1,·····,参数类型n 参数名n);
如:
int fun(int a, int b);
void display(void);
float fn1(float x);
函数定义:
返回类型 函数名(参数类型1 参数名1,·····,参数类型n 参数名n)
{
函数体······
}
如:
int fun(int a,int b)
{ int c;
c=a+b;
return c;
}
5. 局部变量与全局变量
全局变量和局部变量的区别如下:
-
作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
-
内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区
-
生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了
-
使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量
需要注意一点的是,局部变量不能赋值为同名全局变量的值。
6. 任务:
ATM机的操作界面:
* * *****
欢迎光临
* * *****
请输入密码:123
错误-> 密码错误请重新输入: 最多输入4 -> 此卡已冻结 请联系客服 -> 退出
正确->
1.取款
请输入取款金额:200-> 取款成功 当前余额为20
->余额不足 是否继续Y/N
2.存款
请输入金额:2000 -> 存款成功 当前余额:3000!
3.更改密码
请输入原始密码->请设置密码->请确认密码
4.退出
请选择操作:
用函数实现
主要部分:
bool loginATM(void);
void welcome(void);
void exitATM(int status);
//定义一个全局变量
int orgPassword = 123;
int main(int argc, const char * argv[]) {
//欢迎界面
welcome();
//登录
bool result = loginATM();
return 0;
}
bool loginATM(void){
int password = 0;
int wrongTime = 0;
while(1){
printf("请输入密码:");
scanf("%d", &password);
if (password == orgPassword) {
return true;
}else{
wrongTime++;
if (wrongTime == 4) {
exitATM(EXIT_FAILURE);
}else{
printf("密码错误,");
}
}
}
}
void welcome(void){
printf("***************\n");
printf(" 欢迎使用ATM\n");
printf("***************\n");
}
void exitATM(int status){
printf("*************************\n");
printf(" 感谢你的使用 再见!!!\n");
printf("*************************\n");
exit(status);
}
结果跟昨天的是一样
45587.gif
学习感悟:
一开始以为C语言超级简单,通过每天的学习,才发现其实C语言有很多东西已经遗忘或者不会,很多之前没有在意的东西,其实非常重要,深有体会的就是,代码是写出来的,是要多写才会出来的。
网友评论