- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章 程序设计;
全局变量;
? 定义在函数外?的变量是全局变量
? 全局变量具有全局的?存期和作?域
? 它们与任何函数都?关
? 在任何函数内部都可以使?它们;
? 没有做初始化的全局变量会得到0值
? 指针会得到NULL值
? 只能?编译时刻已知的值来初始化全局变量
? 它们的初始化发?在main函数之前;
? 如果函数内部存在与全局变量同名的变量,则全局变 量被隐藏;
? 在本地变量定义时加上static修饰符就成为静态本地 变量
? 当函数离???的时候,静态本地变量会继续存在并保持 其值
? 静态本地变量的初始化只会在第?次进?这个函数时 做,以后进?函数时会保持上次离开时的值;
? 静态本地变量实际上是特殊的全局变量
? 它们位于相同的内存区域
? 静态本地变量具有全局的?存期,函数内的局部作? 域
? static在这?的意思是局部作?域(本地可访问);
? 返回本地变量的地址是危险的
? 返回全局变量或静态本地变量的地址是安全的
? 返回在函数内malloc的内存是安全的,但是容易造成 问题
? 最好的做法是返回传?的指针;
? 不要使?全局变量来在函数间传递参数和结果
? 尽量避免使?全局变量
? 丰?汽?的案?
? *使?全局变量和静态本地变量的函数是线程不安全 的;
宏;
? #开头的是编译预处理指令
? 它们不是C语?的成分,但是C语?程序离不开它们
? #de?ne ?来定义?个宏;
? #de?ne 名字 值
? 注意没有结尾的分号,因为不是C的语句
? 名字必须是?个单词,值可以是各种东?
? 在C语?的编译器开始编译之前,编译预处理程序 (cpp)会把程序中的名字换成值
? 完全的?本替换
? gcc —save-temps;
? 如果?个宏的值中有其他的宏的名字,也是会被 替换的
? 如果?个宏的值超过??,最后??之前的?末 需要加\
? 宏的值后?出现的注释不会被当作宏的值的?部 分;
? #de?ne _DEBUG
? 这类宏是?于条件编译的,后?有其他的编译预处理 指令来检查这个宏是否已经被定义过了;
? __LINE__
? __FILE__
? __DATE__
? __TIME__
? __STDC__;
带参数的宏;
? #de?ne cube(x) ((x)*(x)*(x))
? 宏可以带参数;
? #de?ne RADTODEG(x) (x * 57.29578)
? #de?ne RADTODEG(x) (x) * 57.29578;
? ?切都要括号
? 整个值要括号
? 参数出现的每个地?都要括号
? #de?ne RADTODEG(x) ((x) * 57.29578);
? 可以带多个参数
? #de?ne MIN(a,b) ((a)(b)?(b):(a))
? 也可以组合(嵌套)使?其他宏;
分号?
#de?ne PRETTY_PRINT(msg) printf(msg);
if (n 10)
PRETTY_PRINT(n is less than 10); else
PRETTY_PRINT(n is at least 10);;
? 在?型程序的代码中使??常普遍
? 可以?常复杂,如“产?”函数
? 在#和##这两个运算符的帮助下
? 存在中???化差异
? 部分宏会被inline函数替代;
其他编译预处理指令;
?程序;
? main()?的代码太?了适合分成?个函数
? ?个源代码?件太?了适合分成?个?件
? 两个独?的源代码?件不能编译形成可执?的程序;
? ?个 .c?件是?个编译单元
? 编译器每次编译只处理?个编译单元;
? 在Dev C++中新建?个项?,然后把?个源代码?件 加?进去
? 对于项?, Dev C++的编译会把?个项?中所有的源 代码?件都编译后,链接起来
? 有的IDE有分开的编译和构建两个按钮,前者是对单 个源代码?件编译,后者是对整个项?做链接;
头?件;
? 如果不给出函数原型,编译器会猜测你所调?的函数 的所有参数都是int ,返回类型也是 int
? 编译器在编译的时候只看当前的?个编译单元,它不 会去看同?个项?中的其他编译单元以找出那个函数 的原型
? 如果你的函数并?如此,程序链接的时候不会出错
? 但是执?的时候就不对了
? 所以需要在调?函数的地?给出函数的原型,以告诉 编译器那个函数究竟?什么样;? 把
您可能关注的文档
- 海南大学《概率论与数理统计A1》2019-2020学年第一学期期末试卷A.pdf
- 海南大学《概率论与数理统计》课件 第三章 条件概率与事件的独立性.ppt
- 海南大学《概率论与数理统计》课件 第八章 统计量和抽样分布.ppt
- 海南大学《概率论与数理统计》课件-第1章概率论的基本概念-2.pptx
- 海南大学《概率论与数理统计》课件-第1章随机事件与概率 (1).ppt
- 海南大学《概率论与数理统计》课件-第1章随机事件及其概率.pptx
- 海南大学《概率论与数理统计》课件-第2章随机变量-2.pptx
- 海南大学《概率论与数理统计》课件-第2章随机变量及其分布 (1).pptx
- 海南大学《概率论与数理统计》课件-第3章多维随机变量及其分布.pptx
- 海南大学《概率论与数理统计》课件-第4章随机变量的数字特征-2.pptx
原创力文档


文档评论(0)