
了解C函数
其实,我一直认为函数应该在学会了数据类型后,就开始学函数。因为,int main(),这就是一个函数,一开始很多新手不知道这个是做什么。还有scanf("%d",&num);和printf("%d",num);这几个都是函数,都有函数返回和函数参数。
在C语言里,函数带来的功能非常方便,它能让你一整个庞大的程序代码细分到每个功能一个函数块。
也就是说,没有函数,你的程序从头到位一大片都是代码,而且很多代码会经常重复用到,这样费时费力,如果有问题还不好调试。有了函数后,哪里有问题点哪里,哪里要重复使用就一个函数就搞定。
本身计算机的功能就是做重复的事代替人力,但你代码若是没用掌控好。那就是不断地人力去维护重复的事了。
函数的基本使用为
#include<stdio.h>
函数类型 函数名(参数); //函数声明;
int main()
{
代码语句;
函数名(参数); //函数插入;
代码语句;
return 0;
}
函数类型 函数名(参数) //函数的构建;
{
函数内的语句;
return 函数类型; //函数的返回;
}
函数怎么形成
就比如 int main();这个主函数,他的数据类型是int整形,这代表这个函数内的内容到最后会有个返回值也是int类型的,比如 return 0;
而main这个是函数名,这个在创建函数时,名字你来取,但要取的有作用的,比如这个说 int xunhuan();告诉自己,这个函数是用来循环用的,其实函数的构建和定义数据类型差不多,只不过数据类型都是已经由官方做好了,而函数由你按照你当前的程序来结合构建,就像:
数据类型
int num=10; //数据类型 数据名称=值;
而函数
int num(int num); //函数类型 函数名(在内存开辟了一个int类型位置);
{
num+=num;
return num; //经过计算后返回最终的值给主函数main使用;
}
main主函数在内存有自己的一块地盘。而构建函数也是在内存中申请一块临时的地盘来操作更方便的计算,用完后就消失,直至下一次在使用,就在临时又划分一块地盘给构建函数。
这样不影响一个主程序有很多的代码在运行,占内存。
(参数)这个括号如果没有参数,一般就是 int hanshu(void);直接void赋空就可以,如果有参数的话,就声明进参数的类型就。这个什么意思呢。
#include <iostream>
void shuchu(int, int); //函数要先声明才能使用
int main(void)
{
shuchu(10,20); //使用函数,顺便放入实参10,20为实参
return 0;
}
void shuchu(int a, int b) //创建函数,声明两个int参数。
{
int c = a + b; //这个在实参10.20放入后,他自动变成a=10,b=20;c=10+20;
printf("%d", c)
}
以上就是一个带有参数的函数的使用方法;
函数的压栈,出栈
函数有个压栈,出栈的知识非常值得注意,在函数内嵌套函数。一个函数初始值时1,他被自己嵌套5次,就是在即嵌套自己的函数。举例:
#include <iostream>
void shuchu(int); //函数要先声明才能使用,void代表时没有返回值的函数。
int main(void)
{
shuchu(10); //使用函数,顺便放入实参,10为实参
return 0;
}
void shuchu(int a) //创建函数,声明int参数。
{
if (a < 60) //判断这个实参的值,如果小于60,就继续嵌套;
{
shuchu(a + 10); //没嵌套一次就加10. 其实到这里,已经类似于循环体了,因为判断小于60,就一直循环嵌套下去。
printf("%d\n", a);
}
}
上面应该很清楚了吧,如果我们运行后,发现他并不是10,20,30,40,50顺序出来,而是50,40,30,20,10.先从最后得出的值优先出来?这是为什么?
这里我们就先说压栈。
(头脑先想象一个杯子,对,就是杯子,cup。)
其实刚才那个函数第一次的值我们得知就是实参刚放进去的值,实参是10.shuchu函数得到的第一次值是10.然后函数会拿10去判断。10<60。他就先把这个10放入杯底。再然后用10+10=20,再去第二次判段,20<60?那20就继续放入杯子,压在10上面,然后在20+10=30去判断60,还是小于60,那就吧30在放入杯子……
就这样顺序的放入后,变成从杯底往杯口看上去,依次最低部是10,20,30,40,50;
然后是出栈。
从刚才的压栈得知函数的嵌套会让前面的先放入杯底,后面的放在杯口,那出栈呢?当然是从杯口先出去,就像倒水一样倒出来,最后shuchu函数嵌套的几次函数输出的是50,40,30,20,10.