C语言单元小结(2)

本文详细介绍了C语言中的宏、行缓冲、隐式转换等概念,并探讨了0,'0',''的区别。文章通过实例讲解了函数的使用,包括main函数、递归函数、迭代函数以及其他常见函数的实现,如加减乘除、计算二进制中1的个数、strcmp和memset等函数的模拟实现。

知识点
功能:宏可在预编译时将程序中某些内容直接替换,没有优先级
带参宏:
带参宏与普通函数的比较:
1.带参宏不必指定参数类型,而函数只能传递某个类型的参数。
2.带参宏在预编译时直接替换,比函数调用更有效率,开销更小。
3.带参宏只适用于较小篇幅的函数,否则会大幅增加程序的长度,使得效率反而降低。

带参宏与内联函数的区别:
宏在预编译时替换,而内联函数在编译时替换,两者都可用于简短的功能函数。

由于宏只替换没有优先级的性质,在使用宏时注意括号的添加

实现
1.宏的直接替换
这里写图片描述

2.利用带参宏实现三目运算
这里写图片描述

行缓冲

输出行缓冲:
以\n为输出结束标识符,若没有该换行符,则将一直运算至缓冲区填满后或运算结束后一起输出。
输入行缓冲:
以\n为输入结束标识符,若不键入换行符,则一直等待输入。

隐式转换

知识点
1.低精度向高精度转换安全:float->double
高精度直接截断
2.小范围转换至大范围:->unsigned,char->int
3.输出时也会进行类型转换,若int类型用%u输出,则将转换为unsigned类型后输出。

实现
1.int类型的a转化为float类型,与b相加后截断为int类型赋值给c
这里写图片描述

2.将int类型转换为unsigned int类型
这里写图片描述
也可以写为
这里写图片描述

0,’0’,’\0’的区别

0是数字零
‘\0’是一个char字符,功能是标志一个字符串的结束,对应的数值是0
‘0’是一个char字符,对应的数值是48

函数

知识点

返回类型 函数名(参数)

main函数

知识点
int main (int argc,char *argv[])
int表示返回值为int类型,作为程序的入口,返回值给父进程
argc表示参数个数
argv[]表示参数列表

shell是父进程,传参数给main的argv
实现
功能:argc为传入参数的个数,该程序可以依次打印出argv[]中的参数
这里写图片描述

这里写图片描述

递归函数

知识点
利用栈的构建特性实现层层调用
实现
输出fibo数列的指定位
这里写图片描述

迭代函数

实现
这里写图片描述

其他函数

实例

1.strcmp函数
功能:可以man3看到strcmp函数的返回值,字符串a小于b则返回为负数,等于则返回零,大于则返回正数。由此可见函数返回值的定义、传递和表达。

这里写图片描述

这里写图片描述

这里写图片描述

2.printf函数
功能:查看printf函数的参数传递,可以发现,printf函数参数由右向左传递
这里写图片描述

实践

1.利用函数调用实现加减乘除

知识点
标准格式要求:函数的声明在main之前,末尾需要加分号,定义在函数之后

实现
头文件调用与函数声明
这里写图片描述

main函数
这里写图片描述
这里写图片描述

函数定义
这里写图片描述

2.编写函数,计算数字二进制形式中1的个数

知识点
计算机使用补码存储,本题即为计算补码中1的个数
正数的补码是原码本身,负数的补码是反码加一
正数位移后补零,负数位移后补一
思路
按位将数字与1相与,若结果不为0则该位为1。考虑到负数位移补1陷入死循环的情况,选择位移相与的1,则该1位移后不为1,而是对应位为1。
实现
功能函数
这里写图片描述

主函数
这里写图片描述

3.编写函数,实现strcmp函数功能

功能函数
这里写图片描述

主函数
这里写图片描述

3.编写函数,实现memset函数功能

这里写图片描述

4.编写函数,实现strcpy函数功能

这里写图片描述

5.编辑函数,输入命令显示是否合法

这里写图片描述

这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值