C程序设计(谭浩强)--学习笔记
详见微软技术资源库 (http://msdn.microsoft.com/zh-cn/library/dwhawy9k.aspx#example)
文件读写最常用的函数
- 字符读写函数: fgetc 和 fputc
- 字符串读写函数: fgets 和 fputs
- 数据块读写函数: fread 和 fwrite
- 格式化读写函数: fscanf 和 fprintf
以上函数都要求包含 stdio.h
文件定位
rewind(文件指针); //把文件内部的位置指针移到文件首部;
fseek(文件指针,位移量,起始点); //用于移动文件内部位置指针;
feof(文件指针); //判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则返回0;
ferror(文件指针); //检查文件在用各种输入输出函数进行读写时是否出错。如ferror返回值为0表示正常,否则表示有错
clearerr(文件指针); //本函数用于清除出错标志和文件结束标志,使它们为0;
位运算符
& 与
| 或
^ 异或
~ 取反
<< 左移
>> 右移
位域 (http://baike.baidu.com/view/1256879.htm) -------个人感觉用到的地方不多
printf函数
scanf函数
for 注意事项
数组
在数组名作为函数参数时所进行的传送只是地址的传送,也就是说把实参数组的首地址赋予形参数组名。
形参数组名取得该首地址之后,也就等于有了实在的数组。(此时形参数组中值的变化会导致实参数值中值的变化)
---------------------------------------------------------------------------------------------------
关于被调函数的说明
如果被调函数的返回值是整型或字符型时,可以不对被调函数做说明,直接调用。
这时系统将自动对被调函数返回值按整型处理。
register变量
为了提高效率,C语言允许将局部变量的值防砸iCPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。
由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。
寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量或静态变量说明为"register"。
register型变量常用于作为循环控制变量,这是使用它的高速特点的最佳场合。比较下面两个程序的运算速度。
int fac(int n)
{register int i,f=1;for(i=1;i<=n;i++)f=f*ireturn(f);
}
main()
{int i;for(i=0;i<=5;i++)printf("%d!=%d\n",i,fac(i));
}
说明:
1)只有局部自动变量和形式参数可以作为寄存器变量;
2)一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;
3)局部静态变量不能定义为寄存器变量。
#ifdef
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
static
全局变量和全局静态变量的区别
1)全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是整个工程,在一个文件内定义的全局变量, 在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。
2)全局静态变量是显式用static修饰的全局变量,作用域是所在的文件,其他的文件即使用extern声明也不能使用。
静态局部变量有以下特点:
1)该变量在全局数据区分配内存;
2)静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
3)静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;
4)它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;
C程序设计(谭浩强)--学习笔记相关推荐
- 《C语言程序设计》谭浩强-学习笔记以及课后习题答案(考前复习/考研/专升本)
此笔记是几年前为了本人考试而学而写,今日回首感慨良多,便把尘封多年在旧电脑中的学习笔记翻出来分享给大家 此笔记参考书籍: <C语言程序设计>谭浩强 根据前九章内容主要知识点进行梳理 如果有 ...
- C程序设计谭浩强版总结笔记
结构体 注:结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student).结构体名是由用户指定的,又称"结构体标记",以区别于其他结构体类型. ...
- C程序设计 谭浩强 第九章
结构体 注:结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student).结构体名是由用户指定的,又称"结构体标记",以区别于其他结构体类型. ...
- C程序设计谭浩强第五版课后答案 第三章习题答案
C语言程序设计谭浩强第五版课后答案第三章 1.假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比.计算公式为p=(1+r)np = (1+r)^np=(1+r ...
- C++面向对象的程序设计谭浩强 第六章课后题
以往章节 C++面向对象的程序设计谭浩强 第二章课后题 C++面向对象的程序设计谭浩强 第三章课后题 C++面向对象的程序设计谭浩强 第四章课后题 C++面向对象的程序设计谭浩强 第五章课后题 C++ ...
- C程序设计(谭浩强第五版)总结
C程序设计(谭浩强第五版)总结 本篇文章主要是总结谭浩强第五版C语言书上的重点和易漏点的知识点,其目的主要是给高校期末考试的同学们点参考.本文所参考的书籍是谭浩强的<C程序设计(第五版)> ...
- C语言学习笔记(C程序设计-谭浩强)
入门: 计算机程序: 一组计算机能够识别和执行的指令.计算机的每一个操作都是根据指令进行的,计算机的一切操作都是由程序控制的 计算机指令:指挥机器工作的指示和命令. 指令包含操作码和操作数,操作码决定 ...
- C程序设计-谭浩强 第三版-学习笔记第1章 C语言概述
第一章 C语言概述 1.C语言历史背景 C语言是在B语言的基础上发展起来的,兼具一般高级语言和低级语言的优点,可用来编写系统软件或应用软件. 1972-1973年,贝尔实验室在B语言基础上设计出C语言 ...
- C程序设计-谭浩强 第三版-学习笔记 第2章 程序的灵魂 算法
第 2 章 算法 --程序的灵魂 程序 = 算法 + 数据结构 (沃思,计算机科学家) 一个程序应该包括两方面: 对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构(data stru ...
最新文章
- iOS宏定义的使用与规范
- 求一段内存中的字节型数据的和
- python发送qq邮件列表_Python SMTP发送邮件
- 核心频率个加速频率_流处理器、核心频率、 位宽……这些显卡参数你知道吗?—— 电脑硬件科普篇(八)...
- koa --- seesion实现登录鉴权
- linux主频限制服务,linux抵御DDOS攻击 通过iptables限制TCP连接和频率
- 【C语言】构建一个校园交通查询系统程序。能够规划出任意出发地和目的地之间的最短路径。...
- java访问oracle集群,JAVA查询Oracle数据库集群连接字符串
- nodejs进入mysql数据库_nodejs简单访问及操作mysql数据库的方法示例
- 遇到的问题:uboot下,关闭串口前需要printf打印一个“UART BUS OFF!!!”提示信息,但是打印不出来
- 【系统分析师之路】原创章节 非功能需求设计思维导图
- 「Computer Vision」Note on Kinetics and Two-Stream Inflated 3D ConvNets (I3D)
- Node.js 单元测试:我要写测试 - Mocha - Nodejs开源项目里怎么样写测试、CI和代码测试覆盖率
- P1295 [TJOI2011]书架(线段树dp)
- android 高德地图 lbstraceclient,安卓高德地图定位篇-(1)
- idea String报错问题
- 前端-html-01
- 转载--苹果是怎么吃到的?——职业规划,从了解自己开始
- 金融风控各场景模型策略如何做?系统总结分享,数据风控精选专题集
- mysql安全实验测验答案_实验三_数据库安全性实验报告.doc
热门文章
- 总结2023Android开发面试题(含答案)
- Hi3516开发笔记(二):Hi3516虚拟机基础环境搭建之串口调试、网络连接以及sftp文件传输
- 免费的PDF在线合并工具,拿走不谢!
- Python安装.whl文件流程及问题解决
- RISC-V SiFive U64内核——HPM硬件性能监视器
- 什么是 reactor 模式
- TypeError [ERR_INVALID_ARG_TYPE]: The “path“ argument must be of type string(已解决)
- Vue3加载中(Spin)
- scala利用akka框架封装数据库操作api微服项目
- 树莓派学前班——设置屏幕分辩率