C语言可以实现很多的功能,这些功能都是用函数实现的,如同高中学过的y=f(x)一样。给定一个x,便能求出对应的y值。在此从自定义函数的声明、使用(调用)和常用的输入和输出函数。
函数的定义
自定义函数是根据自己想要实现的功能进行编写的。所以在使用之前需要描述它的功能是什么,即函数的定义。其形式是
返回类型 函数名(参数列表)
{
函数体;
}
返回类型是函数最后要返回的值,如同y=f(x)中的y。其类型与变量的数据类型一样。但是又多了一种类型,是无返回值的函数,其英文单词是void。函数返回的值使用return语句实现的。形式为
return 返回值;
返回值可以是变量、常量或表达式。要求其数值类型与定义时的一样,否则会报错或进行隐式类型转换。当函数遇到return语句的执行完后,后面的代码就不执行,直接跳到被调用函数的下一条语句。
函数名是函数的唯一标识,如同y=f(x)中的f。多个函数定义时,函数名不能相同,并且都要符合C语言标识符的要求。函数名可以与函数内部变量的名称一样,但一般不这样定义。
参数列表是传给函数的值,可以是一个或多个,如同y=f(x)中的x。参数列表我们成为虚参,而传递给参数的值为实参,及调用该函数时的参数为实参。参数列表的具体形式是
参数1类型 参数1名[,参数2类型 参数2名......]
参数类型是之前讲过的,参数名要符合C语言的标识符,每个参数之间要用逗号隔开。当没有一个参数时,可以用void表示。在参数列表中定义的参数可以在参数内部使用,并且初始值为调用时的实参的值,并且是一一对应的。参数列表的变量名与函数内部的变量名可以与其它函数的变量名一样。函数内部的变量称为局部变量。当函数被调用时,会在内存中开辟相应的存储空间,用来存储相应的变量。当函数被调用完后,会清除该空间的内容。所以函数在被调用完后也会清除相应的变量,只有被返回的值被保存。定义在函数外或main函数的称为全局变量,当程序被运行时就开始开辟相应的空间,当程序执行完后才清除相应的空间。各个函数都可以调用定义在函数(包括main函数)外部的全局变量,但要求该变量的定义在函数定义的前面。当全局变量的名和局部变量的名一样时,调用的是局部变量。
函数体是实现函数功能的部分,其内容根据自己要实现的功能进行编写。好的自定义函数不仅函数名与函数要执行的功能一样或相近,而且函数体的代码量简洁、容易等。
函数之间可以相互调用,也可以调用自身。但是被其它函数调用时不能再调用其函数,调用自身除外。不断调用自身的函数可以实现递归的算法,这个在C语言函数举例中讲解。
函数的使用(调用)
函数的调用最好在函数声明的后面进行,否则还得进行函数的声明,即在文件的开头需要告诉编译器本文件有什么函数,形式是
返回类型 函数名(参数列表);
函数的调用的形式是
函数名(实参列表);
如果是有返回值的函数,其形式是
接收返回值的变量=函数名(实参列表);
需要注意的是接收返回值的变量与返回值的数据类型要相同,否则会进行隐式类型转换。
实参列表要与函数定义时的参数列表的个数相同、数据类型一一对应。实参传递的是数值,而不是地址。所以实参传过去的变量的值再被传递函数中无论如何进行其它的赋值,都不会影响实参的值,即使实参和形参的变量名一样。当传递的是变量的地址时,才会改变实参的值,但这个涉及C语言指针的内容,而其内容不仅多,而且还很难。所以不讲该部分的知识,有兴趣的可以参考相关书籍。
输入函数scanf
输入函数是从键盘等输入工具中获取人为输入的数据。其函数名为scanf,定义在stdio.c中,用#include <stdio.h>语句就可以使用该函数的功能,从键盘中获取相应的数值。
scanf函数的使用形式是
scanf("%x,%x......",&变量名1,&变量名2......);
%x是格式控制字符,其常见的有
%d 获取一个整数值(数据类型为int、short等)
%ld 获取一个整数值(数据类型为long)
%lf 获取一个小数(数据类型为double)
%f 获取一个小数(数据类型为float)
%c 获取一个字符(数据类型为char)
%s 获取一个字符串(数据类型为char[],下一文章讲解)
在调用scanf函数时,是将键盘输入的值按scanf中双引号的形式进行排列。当遇到%x(x为d或ld、lf、f、c、s)时查看当前的值是什么,直到遇到非格式控制字符(如空格或形式中的逗号)为该值的结尾,将其值赋给后面的变量。从键盘中获取到的值与双引号后面的变量一一对应。双引号中的格式控制字符要与后面的变量的数量相同、对应数据类型一样。省略号表示可以有多个变量同时通过键盘赋值;逗号为非格式控制字符,可以为空格等字符,是多个变量分隔的标志。如果没有逗号或空格等非格式控制字符的话,会让计算机很难分辨从键盘输入的值的大小。&字符可以按住Shift+7(键盘中横着数字的7,非矩阵中的7)打出,是地址运算符,涉及指针的知识,不再细讲。
输出函数printf
输出函数printf是将字符或变量的值输出到弹出窗口。printf函数的使用形式是
printf("%[n][.m]x......字符串",变量名......);
%x与输入的一样,在这里不再讲解。
[n][.m]是可选项,当要用到时方括号要去掉。n表示输出在弹出框中占用的长度;m表示输出小数后小数点的位数;省略号表示一次可以输出多个变量;字符串可以表示输出信息的提示,前后都可以添加。后面的变量名与前面的%一一对应。与输入函数不一样的是,输出函数的变量前没有地址运算符。
最后说几个常用的转义字符\n和\t。\n在输出函数中表示换一行,一般又在一行信息输出完后;\t表示空几个空格,没有任何的信息,一般为8个。
如果有问题的可以在公众号回复栏中写出问题描述发给我,我看到的话会进行相应的回复。如果发现文章有问题,也欢迎在公众号回复栏中提问,我会查阅资料进行确认并做出修改和回复。
既然阅读了本篇文章,顺便点一下右下边的在看按钮。