前言:这一周数据结构的视频笔记没有总结(主要是没有看多少),写博客只有翻出原来的存货,我学习C时函数部分的笔记,其中关于函数具体的声明、定义、调用等具体操作可以看具体的书本理解,但是函数和main( )函数之间的值传递才是要关注的重点。
一、函数的定义和基本形式、
1、定义:函数(function)是完成特定独立程序的代码单元;通过使用函数,使得程序更加的模块化,从而提高了程序代码的可读性,方便后期修改、完善;
2、基本形式(由一个例子引出)
/* 函数举例1 */
#include<stdio.h>
#define NAME "Star Jiang."
#define ADDRESS "101 Malanpo Street."
#define PLACE "NHCU-sao."
#define WIDTH 40
void starbar(void); //函数原型
int main(void)
{
starbar(); //函数调用
printf("%s\n",NAME);
printf("%s\n",ADDRESS);
printf("%s\n",PLACE);
starbar();
return 0;
}
void starbar(void) //函数定义
{
int count;
for(count = 1; count <= WIDTH;count++)
putchar('*');
putchar('\n');
}
三、函数的调用和返回
1、函数的调用
- 调用形式:函数名(参数值)
starbar( );
- ( )起到了表示函数调用的作用
- 即使没有参数也需要
- 如果有参数,则需要给出正确的数量和顺序;
2、函数的返回
1)函数知道每一次哪里调用它,它就返回到正确的位置;
2)从函数中的返回值
- return停止函数的执行,并送回一个值
- return;
- return 表达式;
- 注意:单一出口设计理念,一般就安排一个返回值;
- 如果需要返回多个值,应给考虑用指针返回;
3、没有返回值的函数
调用形式:
- void 函数名(参数表)
- 不能使用带值的return
- 可以没有return
- 调用函数时不能做返回值的赋值;
三、函数的值传递
1、调用函数
- 如果函数有参数,调用时必须传递给它数量、类型正确的值;
如:
double max(double a,double b); //函数原型
{
}
int main()
{
max(12.34,18.57); //函数调用
}
double max(double a,double b) //函数定义
{
}
- 可以传递给函数的值是表达式的结果,这包括
字面量;
变量;
函数的返回值;
计算的结果;
int a,b,c;
a = 5;
b = 6;
c = max(10,12); //字面量
c = max(a,b); //变量
c = max(c,23);
c = max(max(23,25),a); //函数的返回值
c = max(23+25,b); //计算的结果
2、值传递细节
- 每个函数都有自己的变量空间,参数也位于这个独立的空间,和其它函数没有关系;
- 过去,对于函数参数表中的参数,叫做“形式参数”,调用参数时给的值叫“实际参数”;
- 由于容易让初学者误会实际参数就是实际在函数中进行计算的参数,误会调用参数时是“把变量而不是值传进去”。
- 注意:C语言在调用函数时,永远只能传值给函数;