C++笔记(4)

函数与预处理

函数是程序代码的一个自包含单元,用于完成某一特 定的任务。  有的函数完成某一操作;  有的函数计算出一个值。 通常,一个函数即能完成某一特定操作,又能计算数值。 
为什么要定义函数
避免重复的编程。  使程序更加模块化,便于阅读、修改。 一个程序必须有且只有一个main( )函数,C++从main( ) 函数开始执行。 C++语言中,所有函数都是平行独立的,无主次、相 互包含之分。函数可以嵌套调用,不可嵌套定义

函数分类

从用户使用的角度看,函数有两种:
(1) 系统函数,即库函数。这是由编译系统提供的,用户 不必自己定义这些函数,可以直接使用它们。
(2) 用户自己定义的函数。用以解决用户的专门需要
从函数的形式看,函数分两类:
(1) 无参函数。调用函数时不必给出参数。
(2) 有参函数。在调用函数时,要给出参数。在主调函数 和被调用函数之间有数据传递。

函数参数和函数的值

.1 形式参数和实际参数 在定义函数时函数名后面括号中的变量名称为 形式参数(formal parameter,简称形参)。  形参是被调函数中的变量; 在主调函数中调用一个函数时,函数名后面括 号中的参数(可以是一个表达式)称为实际参数 (actual parameter,简称实参)。  实参是主调函数赋给被调函数的特定值。  实参可以是常量、变量或复杂的表达式,不管是哪 种情况,在调用时实参必须是一个确定的值
**说明:**1
实参变量对形参变量的数据传递是"值传递",即单向传 递,只由实参传给形参,而不能由形参传回来给实参。在 内存中实参、形参分占不同的单元。
4.实参与形参一一对应,类型应相同或赋值兼容。
同的函数中可以使用相同的变量名和形参名,他们是 不同的变量。

注:

**如果函数的类型和return表达式中的类型不一致,则以 函数的类型为准。函数的类型决定返回值的类型。对数值 型数据,可以自动进行类型转换。
**

函数调用的方式

按函数在语句中的作用来分,可以有以下3种函数调用方式:
1. 函数语句 把函数调用单独作为一个语句,并不要求函数带回一个值, 只是要求函数完成一定的操作。printstar();
2. 函数表达式 函数出现在一个表达式中,这时要求函数带回一个确定的 值以参加表达式的运算。如c=2*max(a,b);
3. 函数参数 函数调用作为一个函数的实参。3. 函数参数 函数调用作为一个函数的实参。
在一个函数中调用另一个函数需要具备条件:
(1) 首先被调用的函数必须是已经存在的函数。
(2) 如果使用库函数,应用#include命令将有关头文件 "包含"到本文件中来。
(3) 如果使用用户自定义的函数,函数调用遵循先定义、 后调用的原则,即  被调函数应出现在主调函数之前;如果被调用函数出现在主调函数之后,则函数必须在主调函数 之前进行声明。
在这里插入图片描述

函数的嵌套调用

C语言中,所有函数都是平行独立的,无主次、相互包含之分。 函数可以嵌套调用,不可嵌套定义
在这里插入图片描述

全局变量

(1)程序的编译单位是源程序文件,一个源文件可以包含一 个或若干个函数。 
(2)在函数内定义的变量是局部变量 
(3)在函数之外定义的变量是外部变量,称为全局变量也称全程变量 (4)全局变量的有效范围为从定义变量的位置 开始到本源文件结束。
说明:
(1) 设全局变量的作用是增加函数间数据联系的渠道。
(2) 建议不在必要时不要使用全局变量,因为: ① 全局变量在程序的全部执行过程中都占用存储单元,而 不是仅在需要时才开辟单元。 ② 它使函数的通用性降低了 ③ 使用全局变量过多,会降低程序的清晰性。 (3) 如果在同一个源文件中,***全局***变量与局部变量同名 ,则***在局部***变量的作用***范围***内,***全局变量***被屏蔽, 即它不起作用。

变量作用域小结

变量作用域分为5类  文件作用域  全局变量  函数作用域  局部变量  块作用域  局部变量  函数原型作用域

不同类型的局部变量的特点

动态局部变量(自动变量)(auto):默认,存储在动态区
寄存器变量(register):在CPU内部存储
静态局部变量(static):存储在静态区
动态局部变量未被赋值时,其值为随机值。其作用域的 函数或复合语句结束时,空间被程序收回。
程序执行到静态局部变量时,为其在静态区开辟存 储空间,该空间一直被保留,直到程序运行结束。 由于存储在静态区,静态局部变量或全局变量未赋初 值时,系统自动使之为0。
静态局部变量只被初始化一次。
在这里插入图片描述

注意:

•文件名是C的源文件名,是文本文件,后缀名可以任选。 一个#include语句只能指定一个被包含文件
•包含后所有源文件编译为一个可执行文件
•在#include命令中,文件名可以用尖括号或双撇号括起来。 #include命令的一般形式为: #include <文件名> 或 #include “文件名”

头文件

头文件一般包含以下几类内容:
(1) 对类型的声明。
(2) 函数声明。
(3) 内置(inline)函数的定义。
(4) 宏定义。用#define定义的符号常量和用const声明 的常变量。
(5) 全局变量定义。
(6) 外部变量声明。如entern int a;
(7) 还可以根据需要包含其他头文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值