概述
函数概述
什么是函数? 函数(function)是用于完成特定任务的程序代码的自包含单元。
为什么使用函数?(1)函数可以省去重复代码的编写。如果程序中需要多次使用某特定的功能,编写一个合适的函数即可。(2)即使某种功能在程序中只使用一次,将其以函数的形式实现也是必要的,因为函数使得程序更加模块化,从而有利于程序的阅读、修改和完善。
编写一个简单的函数
/* lethead1.c */
#include <stdio.h>
#define NAME "GIGATHINK, INC."
#define ADDRESS "101 Megabuck Plaza"
#define PLACE "Megapolis, CA 94904"
#define WIDTH 40
void starbar(void); /*声明函数原型 */
int main(void)
{
starbar();
printf("%sn", NAME);
printf("%sn", ADDRESS);
printf("%sn", PLACE);
starbar(); /* 函数调用 */
return 0;
}
void starbar(void) /* 函数的定义 */
{
int count;
for (count = 1; count <= WIDTH; count++)
putchar('*');
putchar('n');
}
- starbar标识符在不同位置使用了三次,(1)函数原型告知编译器starbar( )的函数类型;(2)函数调用导致该函数的执行;(3)函数定义则确切指定了函数的具体功能。
- 任何程序在使用函数之前都需要声明该函数的类型。
void starbar (void);
圆括号表明starbar是一个函数名。第一个void是指函数类型,它的意思是该函数没有返回值。第二个void(括号内)表示该函数不接受任何参数。分号的作用表示该语句是进行函数的声明而不是定义。
- 程序在main()中通过使用函数名后跟圆括号和分号的格式调用函数。
- 程序中starbar()和main()具有相同的定义格式,即首先以类型、名称和圆括号开始,接着是开始花括号、变量声明、函数语句定义以及结束花括号。注意此时定义函数starbar ()后没有封号,这告诉编译器我们是在定义函数,而不是调用它或声明它的原型。
- 把starbar()和main()包含在同一个文件中,也可以将他们放在不同的两个文件之中。单文件形式比较容易编译,而使用两个文件则有利于在不同的程序中使用相同的函数。
- starbar()中的变量count是一个局部(local)变量。这意味着该变量只在starbar()中可用。即使在其他函数中使用名称count也不会冲突。
函数参数
- 定义带有参数的函数:形式参数
void show_n_char (char ch, int num)
这行通知编译器show_n_char ()使用名为ch和num的两个参数,并且这两个参数的类型分别是char和int。变量ch和num被称为形式参数或形式参量。如同函数内部定义的变量一样,形式产量是局部变量,他们是函数私有的。
带参数函数的原型声明
void show_n_char (char ch, int num);
当函数接收参数时,函数原型通过使用一个逗号分隔的类型列表指明参数的个数和类型。
调用带有参数的函数:实际参数
形式参量是被调函数中的变量,而实际参数是调用函数分配给被调函数变量的特定数值。
实际参数可以是常亮、变量或一个复杂的表达式。但无论何种形式的实际参数,执行时首先要计算其值,然后将该值复制给被调函数中相应的形式参量。
使用return从函数中返回一个值
调用函数到被调函数的通信,需要沿反方向传递信息时,可使用函数返回值。
/* lesser.c -- finds the lesser of two evils */
#include <stdio.h>
int imin(int, int);
int main(void)
{
int evil1, evil2;
printf("Enter a pair of integers (q to quit):n");
while (scanf("%d %d", &evil1, &evil2) == 2)
{
printf("The lesser of %d and %d is %d.n",
evil1, evil2, imin(evil1,evil2));
printf("Enter a pair of integers (q to quit):n");
}
printf("Bye.n");
return 0;
}
int imin(int n,int m)
{
int min;
if (n < m)
min = n;
else
min = m;
return min;
}
关键字return指明了其后的表达式的值即是该函数的返回值。
- 也可以在函数的结尾使用以下语句:
return;
这个语句会终止执行函数并把控制放回给调用函数,因为return后没有任何表达式,所以没有返回值,这种形式只能用于void类型的函数中。
函数类型
函数应该进行类型声明,同时其类型应和返回值类型相同。而无返回值的函数应该被声明为void类型。
函数的声明是函数定义的一部分,但需要注意的是该类型指的是返回值类型,而不是函数参数的类型。
double klink (int a, int b)
以上语句表示函数使用两个int型的参数而返回值类型是double。
函数的声明要在使用函数之前进行。
不要把函数的定义和函数的声明混淆,函数的声明只是将函数类型告诉编译器,而函数定义部分则是函数的实际实现代码。
最后
以上就是直率老师为你收集整理的C语言学习:函数的定义、类型、形参、实参、返回值等梳理的全部内容,希望文章能够帮你解决C语言学习:函数的定义、类型、形参、实参、返回值等梳理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复