14,标准C

/*
 达内 标准C day14 2013-09-16
预习:
 1,结构体
 2,数据对齐和补齐
 3,联合
 4,枚举
 5,冒泡排序
 */
预处理指令是C语言支持的一种特殊指令
预处理指令以#做开头,不以;做结尾
预处理指令在编译的第一个阶段被处理
所有预处理指令都是用来修改程序源代码的
gcc支持 -E选项 可以察看预处理后的源代码

#define是一个预处理指令,用来定义宏
宏可以用来给数字起名字
编写宏时名字写在前面,内容写在后面,中间不要用赋值操作符,后面不用分号,宏名称中间不要有分号
宏在编译时后直接用数字替换名字

宏和变量是不同的
编写程序时就能确定的数字并且在程序执行过程中绝对不会改变这样的数字可以记录在const 变量中
如果编写程序时不能确定数值必须得在编译的时候才能确定,这样的数字可以使用宏表示

练习
 1,声明一个数组并用0-9中间的数字初始化,在编译时才能数组中的变量个数
 -D[宏名称]=数 gcc file.c
在使用gcc编译的时候可以用-D选项给宏指定数值.

宏同样可以给一个计算公式起名字
宏可以使用参数表示计算公式里还不能确定的部分
宏的参数没有数据类型(宏的参数不仅仅用来表示数字,)

练习:
 1,编写一个带参数的宏计算圆的面积
函数有自己的变量空间
宏没有独立自己空间,没有形参,没有返回值,不应该声明临时变量
如果一个宏需要计算一个结果,则把宏直接写成表达式

练习:
 1,编写一个宏计算出两个数字中的最大值
 2,编写一个宏把一个十六禁止数为转换成十进制数字

宏没有形式参数,宏内部直接对参数进行操作(没有形参实参,直接操作变量,会改变参数的值)

编程演示自增效果说名宏和函数对参数处理的不同
编程演示相反数的宏说明
1,宏的每个数字参数都应该被包含在小括号内
2,宏的整个表达式应该包含在小括号内

练习
 1,编写一个宏计算两个数字的乘积

不要使用自增自减的计算结果作为宏的参数

宏操作符(#,##)这两个操作符都只能针对不代表数字的参数使用。
#操作符可以直接把一个参数转换成字符串字面值(前后各加一个双引号)
##操作符针对一个代表标识符的参数进行操作。可以把这个标识符和其他内容链接起来形成一个新的标识符

条件编译指编译的时候有选择性的编译某些语句忽略另外的语句
gcc -D[宏名称]
#ifdef/#ifndef...#else...#endif 结构可以根据某个宏是否曾经被定义过而从两组语句种选择一种编译

练习
 1,点菜程序
 1表示龙虾,2表示小鸡炖蘑菇,普通客人点菜的时候1回答有,2回答没有
 赵点菜的时候1回答没有,2回答这个真没有

defined(宏名称) 得到bool值
#if...#elif(n次)...#else(可有可无)...#endif
 以上结构也可以实现条件编译,可以根据任何布尔值从多个语句足中选择一组进行编译
以上结构中布尔值计算过程中可以使用任何逻辑操作符
练习
 1,三个不同等级的专卖店
  精品店(120%),普通店(100%),工厂店(80%)

多文件程序编写时,每个函数必须属于某一个文件,一个文件中可以包含多个函数。
多文件程序编译时,需要在gcc命令后写上所有.c源文件的名字(不够正规)
多文件程序编写时一般使用一个.c源文件存储主函数,其他函数存储在另外的.c源文件中
为除了包含主函数的文件以外的每个.c源文件编写一个对应的.h文件(头文件),头文件中应该包含对应.c文件的所有函数声明
凡是没有占内存空间的都可以放头文件里,比如宏,函数声明,                         函数体是占内存的!!!!!!
每个.c源文件应该包含对应的.h头文件,如果一个.c源文件中是用了某个.h头文件中声明的函数则也应该包含它
头文件编写时需要使用条件编译把所有内容包含起来,头文件中用来控制条件编译的宏名称应该和头文件一一对应
#ifndef   __14ADD__
#define   __14ADD__
...
#endif    //避免重复编译

使用extern关键字声明全局变量可以让当前文件中的语句使用其他文件中的全局变量。
使用static静态全局变量不可以被其他文件使用

作业
 1,编写一个宏完成字符变量的大小写转换
 2,用多文件的方法编写一个生成彩票的程序
 彩票数据保存在一个全局数组中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值