吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3487|回复: 4
收起左侧

[C&C++ 转载] 【笔记】第七章 函数与预编译(C语言)

[复制链接]
sphao 发表于 2017-7-29 09:41
本帖最后由 sphao 于 2017-7-30 17:59 编辑

第七章 函数与预编译
一 函数
C语言程序的框架有两种
     1. 一个main()                              单框架
     2. 一个main()+多个子函数          复合框架
:
     1. 一个源程序文件可由一个或多个函数组成
     2. 一个C语言程序可以由一个或多个源程序文件组成
     3. C程序执行总是从main()开始, 结束于main(); 可调用其他函数
     4. 函数不能嵌套定义, 但可以互相调用, 不能调用main()
函数的分类:
     (1)无参函数和有参函数
     (2)库函数和用户自定义函数+main()
1. 函数定义
     函数返回值类型 函数名(形式参数列表)
     {
          函数体;

     }
说明:
     (1)函数体可以没有语句, 但是不能没有花括号, 函数名后必须有一对小括号
     (2)定义有参函数是, 形参的定义可以采用传统方式或现代方式两种
     传统方式:
int max(x, y)
int x, y;          不能定义形参以外的其他变量
{     }
     现代方式:
int max(int x, int y)
{     }
     (3)不能在定义函数时在 函数首部后直接跟分号
     (4)定义函数时, 必须采用传统方式或现代方式指定形参的格式
     (5)函数返回值类型: 两类
          void     非void
2. 函数调用: 两种方式
     方式1: 非void型
          变量名=函数名(实参列表);
     方式2: void型
          函数名(实参列表);
3. 函数使用
     (1)原型声明
          方式1: #include<头文件>
          方式2: 声明的格式
          函数类型 函数名(形成类型1 形参1, 形参类型2 形参2...);
          函数类型 函数名(形参类型1, 形参类型2 ...);
     口诀:
          有头有体无分号     定义
          有头有分号             原型声明语句
          函数名(实参);          调用

     (2)函数调用过程
     在进行函数调用时系统将实参值对应的传给形参,是一种值的单向传递
4. 变量三属性: 类型 作用范围 存储类别
4-1. 类型(定义)
4-2. 作用范围
     (1)局部变量(内部变量)
     定义: 在一个函数内部定义的变量为局部变量
     a. 局部变量只能在他所在的函数内有效
     b. 在不同的函数中可以出现同名的变量, 他们分别属于不同的变量
     c. 复合语句中定义的变量只能在此复合语句中有效
     d. 所有形式参数都是局部变量
     (2)全局变量(外部变量)
     定义: 在函数外部定义的变量为全局变量
     a. 全局变量的有效范围是在本文件内从定义该变量的位置开始到本文件结束
     b. 全局变量可以在它的有效范围内被每个函数引用
     c. 在同一文件中若全局变量与局部变量同名,局部变量屏蔽全局变量
4-3. 存储类别
     (1)auto类别变量
     a. auto类别变量用完后释放所占用空间
     b. 局部变量默认为auto类别, 无初始化时, 初始值为随机值
     c. 使用时间短,一般都为auto类别变量
     (2)static类别
     a. static类别从定义到程序运行结束均占用存储空间
     b. 全局变量默认为static类别, 无初始化时, 初值为0
     c. static类别变量只进行一次初始化(变量值画(保护)框, 定义用完就划掉)
       Image.png
     (3)register类别变量     寄存器变量
     a. register类别只能是局部变量才能被说明
     b. 一般不能直接使用
     (4)extern类别变量
     a. extern类别变量可以加大变量的作用范围
       Image.png
     b. 两种说明格式
     格式1. 定义同时说明类别:
          存储类别 类型名 变量名;
     格式2. 分别定义 说明
          类型名 变量名;
          存储类别 变量名;

二 预编译命令
1. 预编译命令     (#)
     文件包含(include)
     #include<>     在指定目录下搜索库文件
     #include" "       范围更大
2.      (#define)
第一种: 无参宏定义
     格式:
          #define 宏名 宏内容
     功能: 用一个制定的标识符(宏名(大写))来代表一串字符(宏内容)
     #define PI 3.141592
              符号常量
宏名     无语法检查
            无类型

     :
     (1)宏名我们一般用大写字母表示, 遵守用户自定义标识符命名规则
     (2)#define可以在函数外定义, 也可以在函数内定义, 但该命令应该在单独一行上
          #undef命令可以提前中止宏名的作用域
     (3)在进行宏定义时, 可以引用已经定义的宏名进行层层置换
     (4)在进行宏替换时, 必须先替换完所有的宏后再运算, 同时替换过程中不能乱加括号--->原模原样替换, 不要乱加括号, 先替换, 再按优先级计算
第二种: 带参宏定义
     格式:
          #define 宏名(参数列表) 宏内容
     功能: 提供了一种更加灵活的替换方式
          #define s(x, y) x*y+2
     :
     (1)在定义有参宏时, 参数列表必须用一对小括号括起且小括号和宏名之间不能有空格
     (2)对有参宏名进行替换时, 需要现将形参改成相应的实参, 并且注意分清形参和实参的对应关系



【笔记】第七章 函数与预编译(C语言)
http://www.52pojie.cn/thread-629758-1-1.html

【笔记】第六章 数组(C语言)
http://www.52pojie.cn/thread-629287-1-1.html
【笔记】第五章 循环结构(C语言)
http://www.52pojie.cn/thread-628823-1-1.html
【笔记】第四章 选择结构(C语言)
http://www.52pojie.cn/thread-627932-1-1.html
【笔记】第三章 顺序结构(C语言)
http://www.52pojie.cn/thread-627411-1-1.html
【笔记】第二章 C语言组成及数据
http://www.52pojie.cn/thread-627006-1-1.html
【笔记】第一章 C语言基础知识
http://www.52pojie.cn/thread-626978-1-1.html








免费评分

参与人数 3吾爱币 +2 热心值 +3 收起 理由
KaQqi + 1 我很赞同!
naqw + 1 + 1 我很赞同!
hanchuangof + 1 + 1 赞一个

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

michaelnin 发表于 2017-7-29 10:02
这个对小白太有用了,顶一个
小表弟 发表于 2017-7-29 10:10
素颜朝天 发表于 2017-7-29 10:50
KaQqi 发表于 2017-7-30 19:02
有返回值的函数我也可以不接受其返回值的。另外返回值为引用也可以作为左值来使用。
extern是在多项目文件经常用到的,不一定只去扩充局部变量的生命期。
看样子楼主是学完了cpp的语法才来做的笔记呀!(只是猜测哦)
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 04:39

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表