浅谈C中的函数,以一个小的加减乘除计算器为例
优雅的使用函数
很多同学第一次学习C语言的时候,对函数的概念并不清晰,其实,用一种通俗且粗暴的方式来理解的话,你可以将函数想象成一个不可见的管道,一端传入参数,一端返回结果,管道中有着各种操作数据的方法,接下来以一个例子来说明:
- 将主方法与具体函数声明与实现分开处理 首先创建一个.h后缀的文件,进行函数原型的声明
int add(int i, int j); int subtract(int i,int j); int multiply(int i,int j); int divide(int i,int j);
- 将函数实现与声明分开,提高可读性 其次创建一个.c后缀的文件进行函数的具体实现
#include "mymath.h"
int add(int i, int j) {
return i + j;
}
int subtract(int i, int j) {
return i - j;
}
int multiply(int i, int j) {
return i * j;
}
int divide(int i, int j) {
if (j == 0) {
return -1;
}
return i / j;
}
- 创建主方法进行调用 最后创建一个main.c文件进行代码调用与其余流程的实现,实现方法很多,大家还需要多多探索
include<stdio.h>
#include "mymath.h"
//函数原型的声明
int main() {
int flag, i, j;
//设置标志位使得其中代码循环
int quit = 0;
while (quit == 0) {
printf("************************
");
printf("* *
");
printf("*1.ADD *
");
printf("*2.SUBTRACT *
");
printf("*3.MULTIPLY *
");
printf("*4.DIVIDE *
");
printf("*5.QUIT *
");
printf("************************
");
printf("select a number for function:
");
scanf("%d", &flag);
//进行分支选择操作
switch (flag) {
case 1:
printf("please input two number for add:
");
scanf("%d%d", &i, &j);
printf("the answer is:%d
", add(i, j));
break;
case 2:
printf("please input two number for subtract:
");
scanf("%d%d", &i, &j);
printf("the answer is:%d
", subtract(i, j));
break;
case 3:
printf("please input two number for multiply:
");
scanf("%d%d", &i, &j);
printf("the answer is:%d
", multiply(i, j));
break;
case 4:
printf("please input two number for divide:
");
scanf("%d%d", &i, &j);
//进行判断防止除零异常
if (j == 0) {
printf("error input for divide by zero
");
break;
}
printf("the answer is:%d
", divide(i, j));
break;
case 5:
//修改标志位跳出循环,结束程序
quit = 1;
return 0;
default:
printf("system error!");
}
}
}
Tips:其中值得讲解的有:
在刚开始学习代码时就要养成良好的编程习惯,不要将所有的代码写在一个文件中,这样不利于阅读,且杂乱不容易纠错;还要进行一定的注释,说明代码的含义,利于后续的维护与合作,不注释的代码都是狗粑粑;很多童靴在学习之初都会迷茫,这很正常,不要焦虑与紧张,多写多练养成编程思维;还有就是函数声明的问题,若你就想写在一个文件中,你可能会遇到方法找不到的问题,这大概率是因为你没有进行函数原型的声明,你可以将方法提到main函数之前,或者进行函数原型声明如图1所示的那种方式进行声明,该错误就会解决。
总结
很多的同学在学习一门语言的时候,可能就是抱着书与视频看啊品啊,但最后的结果都是一无所得,甚至将自己越绕越迷糊,这都是因为对知识理解不透彻,不要小看每一个hello world!所有的代码都要去敲一下,不练习不进步,加油!编码少年们!!!!
