c编程惯用法
A. 关于自控系统的问题
凯信技术之家。。关于计算机 电子 通信 网络 自动控制的也有很多
F:\学习考研\电子图书\电子宝库
├—215例题解析自动控制原理_0
├—21世纪信息与通信技术教程 多媒体通信_0
├—21世纪信息与通信技术教程 数字电路与FPGA_0
├—21世纪信息与通信技术教程 数字语音:语音编码实用教程_0
├—21世纪信息与通信技术教程 现代通信基础与技术_0
├—21世纪大学计算机应用系列教材 JAVA与面向对象程序设计导论_0
├—21世纪大学计算机系列教材 c语言大学实用教程_0
├—21世纪网络平台大学计算机系列教材 离散数学_0
├—21世纪网络平台大学计算机系列教材 网络平台大学计算机信息技术_0
├—21世纪高等学校应用型规划教材 EDA实用技术教程_0
├—21世纪高等学校应用型规划教材 Protel 99SE实用技术教程_0
├—21世纪高等学校应用型规划教材 电子交易与支付_0
├—21世纪高等学校应用型规划教材 网络及电子商务安全_0
├—21世纪高等学校教材 概率论与数理统计 (第二版)_0
├—21世纪高等学校教材 线性代数 (第二版)_0
├—21世纪高等学校电子信息类专业规划教材 Visual Basic程序设计基础教程_0
├—21世纪高等学校电子信息类专业规划教材 Visual Basic程序设计教程_0
├—21世纪高等学校电子信息类专业规划教材 多媒体课件制作实训教程_0
├—21世纪高等学校电子信息类专业规划教材 网络安全技术基础_0
├—21世纪高等学校电子信息类专业规划教材 网络安全概论_0
├—21世纪高等学校电子信息类专业规划教材 网络系统集成技术_0
├—21世纪高等学校电子信息类专业规划教材 计算机信息管理基础_0
├—21世纪高等学校电子信息类专业规划教材 计算机硬件技术基础_0
├—21世纪高等学校电子信息类教材 数字微波通信系统_0
├—21世纪高等学校规划教材 高等数学_0
├—21世纪高等学校计算机基础教育系列教材 数据库应用与程序设计实验指导_0
├—21世纪高等学校计算机基础教育系列教材 数据库应用与程序设计教程_0
├—21世纪高等学校计算机科学与技术教材 面向对象C++程序设计_0
├—21世纪高等院校教材 电磁场与电磁波_0
├—21世纪高等院校教材 遥感数字图像处理_0
├—21世纪高等院校数字艺术设计系列教材 数字动画设计艺术_0
├—21世纪高等院校电气信息类系列教材 单片机原理与应用_0
├—21世纪高等院校规划教材 DSP原理及应用_0
├—21世纪高等院校规划教材 数据通信与计算机网络_0
├—21世纪高等院校计算机教材系列 C语言程序设计教程_0
├—21世纪高等院校计算机科学与工程系列教材 微型计算机原理与接口技术_0
├—21世纪高等院校计算机科学与技术规划教材 Java程序设计简明教程_0
├—21世纪高等院校计算机科学与技术规划教材 微机原理与接口技术 (80386-Pe_0
├—21世纪高等院校计算机系列教材 Java程序设计基础_0
├—21世纪高等院校计算机系列教材 Java程序设计实验与实训_0
├—21世纪高等院校计算机系列教材 管理信息系统_0
├—21世纪高等院校计算机系列教材 编程逻辑与结构化程序设计 (第三版)_0
├—21世纪高职高专信息技术教材 数据库原理及应用教程_0
├—21高等学校电子信息类专业规划教材 计算机引论_0
├—301例题解析电工电路 (中册)_0
├—372例题解析电工电路 (上册)_0
├—488例题解析电工电路 (下册)_0
├—8051单片机彻底研究 基础篇_0
├—8051单片机彻底研究 实习篇_0
├—8051单片机数据传输接口扩展技术与应用实例_0
├—Adobe 数字艺术中心 InDesign CS标准教材_0
├—Advanced C++ (中文版)_0
├—APSL参数化有限元分析技术及其应用实例_0
├—ASP+SQL Server网络应用系统开发与实例_0
├—ASP信息系统设计与开发实列_0
├—Authorware 6_5多媒体制作基础教程_0
├—BHDL实例剖析_0
├—BIOS、注册表与硬盘终极解析_0
├—Blackfin系列DSP原理与系统设计_0
├—C#Builder编程起跑_0
├—C#大学教程_0
├—C#应用程序开发标准教程_0
├—C#程序设计培训教程_0
├—C#面向对象程序设计:台版_0
├—C++ Templates中文版_0
├—C++Builder 6实用编程100例_0
├—C++同构化对象程序设计原理_0
├—C++多范型设计_0
├—C++大学自学教程(第7版)_0
├—C++捷径教程 第3版_0
├—C++程序设计_0
├—C++程序设计实验指导与实训_0
├—C++编程惯用法——高级程序员常用方法和技巧_0
├—C++网络编程 卷2 基于ACE和框架的系统化复用_0
├—C++面向对象程序设计 (第四版)_0
├—CAXA电子图板XP实用教程_0
├—CCNA学习指南 (中文版) (640-801)_0
├—CDMA 无线通信原理_0
├—CPLD_FPGA可编程逻辑器件应用与开发_0
├—C_0
├—C语言与MATLAB接口:编程与实例_0
├—C语言程序设计2_0
├—C语言程序设计3_0
├—C语言程序设计_0
├—C语言程序设计导学_0
├—C语言精彩编程百例_0
├—Delphi 7_0程序设计教程_0
├—Delphi 7应用教程_0
├—Delphi 7数据库开发教程_0
├—Delphi 7数据库高级教程_0
├—Delphi 7程序设计_0
├—Delphi 7课程设计案例精编_0
├—Delphi 程序设计技能百练_0
├—DELPHI 经典游戏程序设计40例_0
├—Delphi串口通信技术与工程实践_0
├—Delphi数据库开发实例解析_0
├—Delphi数据库编程_0
├—Delphi数据库高级实例导航_0
├—Delphi源代码分析_0
├—Delphi程序设计_0
├—Delphi程序设计实训_0
├—Delphi程序设计教程_0
├—Delphi精要2_0
├—Delphi精要_0
├—DSP 通信工程技术应用_0
├—DSP信号处理技术应用_0
├—DSP技术及应用_0
├—DSP控制系统的设计与实现_0
├—DSP算法设计与系统方案_0
├—DSP系统设计与实践_0
├—DSP芯片的原理与开发应用 (第3版)_0
├—DSP集成开发环境:CCS及DSP_BIOS的原理与应用_0
├—DWDM技术原理与应用_0
├—EDA与数字系统设计_0
├—EDA工程实践_0
├—Enterprise Java Bean程序设计实例详解_0
├—Excel 2003中文版入门与提高_0
├—IBM PC 80X86汇编语言程序设计_0
├—IBM信息集成技术原理及应用_0
├—ICSA密码学指南_0
├—IEEE 802_11无线局域网_0
├—IEEE1394接口技术_0
├—Intel微处理器结构、编程与接口 (第六版)_0
├—Intel汇编语言程序设计 第四版_0
├—IP宽带通信网络技术_0
├—J2EE 应用与实践技巧:JAVA设计模式、自动化与性能_0
├—J2EE网络编程标准教程_0
├—J2METM技术手册_0
├—J2ME开发大全_0
├—Java 2学习指南——Sun Certified Programmer_0
├—Java 2实用教程_0
├—Java 2程序设计技能百练_0
├—Java 2简明教程_0
├—Java Web服务开发_0
├—Java 国际认证(SCJP)典型试题1000例_0
├—Java 模式_0
├—Java 游戏编程_0
├—Java 课程设计案例精编_0
├—Java与CORBA客户 服务器编程 第二版_0
├—Java信息系统设计与开发实例_0
├—Java基础教程_0
├—Java实用系统开发指南_0
├—Java实用编程100例_0
├—Java并发编程:设计原则与模式_0
├—Java手机_PDA程序设计入门_0
├—Java数值方法_0
├—Java数据对象_0
├—Java数据库高级教程_0
├—Java数据结构和算法 (第二版)_0
├—Java极限编程_0
├—JAVA程序设计2_0
├—Java程序设计3_0
├—Java程序设计_0
├—Java程序设计基础 (第3版)_0
├—Java程序设计实战训练_0
├—Java程序设计技巧与开发实例_0
├—Java程序设计教程_0
├—Java程序设计高级主题_0
├—Java算法 (第3版,第1卷)_0
├—Java编程原理:面向工程和科学人员_0
├—JAVA缺陷_0
├—Java网络编程基础_0
├—Java语言程序设计_0
├—Java语言程序设计教程_0
├—Java课程设计_0
├—Java软件开发2_0
├—Java软件开发_0
├—Java项目开发实践_0
├—Java高级实用编程_0
├—Jave 2认证考试学习指南 (第四版) (英文版)_0
├—JBuilder 9_0入门与提高_0
├—JBuilder 9_0程序设计——Java程序员成功之路_0
├—JBuilder精髓_0
├—JSP信息系统设计与开发实例_0
├—MATLAB 6_5及其在信号处理中的应用_0
├—MATLAB 6_5图形图像处理_0
├—MATLAB 7_0实用指南 (上册)_0
├—MATLAB 7_0实用指南 (下册)_0
├—MATLAB M语言高级编程_0
├—Matlab 小波分析工具箱原理与应用_0
├—MATLAB与外部程序接口_0
├—MATLAB仿真技术与应用教程_0
├—MATLAB仿真技术主导实例应用教程_0
├—MATLAB信息工程工具箱技术手册_0
├—MATLAB及其在电路与控制理论中的应用_0
├—Matlab图像处理与应用_0
├—MATLAB图形图像处理应用教程_0
├—MATLAB工具箱应用_0
├—MATLAB应用数学工具箱技术手册_0
├—Matlab接口技术与应用_0
├—MATLAB控制工程工具箱技术手册_0
├—MATLAB数学计算范例教程_0
├—MATLAB有限元分析与应用_0
├—MATLAB电力系统设计与分析_0
├—MATLAB程序设计_0
├—MATLAB符号运算及其应用_0
├—MATLAB自动控制原理习题精解_0
├—MCS-51单片机原理及应用实例_0
├—MCS-51系列单片机原理与接口技术_0
├—MCS-51系列单片机系统及其应用 (第二版)_0
├—Microsoft SQL Server 2000宝典_0
├—OP放大电路设计_0
├—Oracle9i数据库原理与应用教程_0
├—OrCAD电路设计_0
├—PCB电磁兼容技术——设计实践_0
├—PC控制及接口程序设计实例_0
├—PIC 单片机原理与接口技术_0
├—PowerBuilder9_0数据窗口技术_0
├—PowerPCB高速电子电路设计与应用_0
├—Protel 2004电路原理图及PCB设计_0
├—Protel 99 SE印制电路板设计教程_0
├—Protel 99 SE原理图与PCB及仿真_0
├—Protel DXP 电路原理图设计指南_0
├—Protel DXP印制电路板设计指南_0
├—Protel DXP电路原理图与PCB设计_0
├—Protel DXP电路原理图与电路板设计教程_0
├—Protel DXP电路图及电路板设计实用教程_0
├—Protel DXP电路设计与仿真_0
├—Protel DXP电路设计与制版实用教程_0
├—Protel DXP电路设计与应用2_0
├—Protel DXP电路设计入门与应用_0
├—Protel DXP电路设计入门与进阶_0
├—Protel DXP电路设计制版入门与提高_0
├—Protel DXP电路设计标准教程_0
├—PSpice 电路优化程序设计_0
├—PSpice 电路设计实用教程_0
├—PSpice电路原理与实现_0
├—PSpice电路编辑程序设计_0
├—PWM控制与驱动器使用指南及应用电路:单端控制与驱动器部分_0
├—Red Hat Linux安全与优化_0
├—Tanner Pro集成电路设计与布局实战指导_0
├—TMS320C500系列DSP系统设计与开发实例_0
├—TMS320C54x DSP应用程序设计教程_0
├—TMS320LF_LC24系列DSP的CPU与外设_0
├—UML及其建模工具的使用_0
├—UML宝典_0
├—UML工具箱_0
├—USB 接口技术_0
├—Verilog HDL数字设计与综合 (第二版)_0
├—Verilog HDL程序设计教程_0
├—Verlog HDL 综合实用教程_0
├—VHDL与微机接口设计_0
├—VHDL数字系统设计 (第二版)_0
├—VHDL电路设计实用教程_0
├—VHDL电路设计技术_0
├—Visual Basic 6_0实践指导_0
├—Visual Basic 6_0应用编程150例_0
├—Visual Basic 程序设计教程_0
├—Visual Basic6_0数据库开发技术与工程实践_0
├—Visual Basic_NET程序设计实训教程_0
├—Visual Basic程序设计2_0
├—Visual Basic程序设计_0
├—Visual C#_NET程序设计经典_0
├—Visual C++ 6_0应用编程150例_0
├—Visual C++ 6_0数据库开发技术与工程实践_0
├—Visual C++6_0数字图像编码_0
├—Visual C++_MATLAB图像处理与识别实用案例精选_0
├—Visual C++_NET数字图像处理技术与应用_0
├—Visual C++_NET程序设计入门_0
├—Visual C++_NET编程实例_0
├—Visual C++_Turbo C串口通信编程实践_0
├—Visual C++数字图像实用工程案例精选_0
├—Visual C++网络通信程序开发指南_0
├—Visual C++网络通信编程实用案例精选_0
├—Visual FoxPro上机实践指导教程_0
├—Visual FoxPro程序设计教程_0
├—Visual Prolog编程、环境及接口_0
├—VisualC++_NET MFC类库应用详解_0
├—WCDMA技术与系统设计:第三代移动通信系统的无线接入_0
├—WCDMA无线通信技术及演化_0
├—WCDMA移动通信技术_0
├—Win32汇编语言实用教程_0
├—Windows安全性编程_0
├—XML编程实例教程_0
├—·工程数学·复变函数_0
├—《Visual Basic程序设计教程》实验与习题_0
├—《中华人民共和国电子签名法》释义及实用指南_0
├—《汇编语言与微机原理》学习指导与训练_0
├—《集成电子技术基础教程》教学指导书_0
├—三星电子绝处逢生的强悍之道_0
├—三级信息管理技术_0
├—三级信息管理技术:新大纲_0
├—专用集成电路_0
├—世界着名大学核心教材 计算机类 C语言程序设计_0
├—中国半导体行业协会集成电路设计分会推荐教材 集成电路设计与九天EDA工具应用_0
├—中国电子信息产品出口研究报告_2003_0
├—中文 Visual Basic 6_0实例教程_0
├—中文CorelDRAW 11_12时尚创作200例_0
├—中文Visual Basic实例全解教程_0
├—企业商务电子化导论_0
├—企业电子商务_0
├—使用UML进行面向对象的项目管理_0
├—例题解析电子电路:数字篇_0
├—例题解析电子电路:模拟篇_0
├—信号、系统与数字信号处理_0
├—信号、系统与数字信号处理学习指导与实践_0
├—信号与系统典型题解2_0
├—信号与系统典型题解_0
├—信号与系统分析2_0
├—信号与系统分析_0
├—信号与系统学习与考研指导2_0
├—信号与系统学习与考研指导_0
├—信号与系统学习指导2_0
├—信号与系统学习指导3_0
├—信号与系统学习指导4_0
├—信号与系统学习指导_0
├—信号与系统教程2_0
├—信号与系统教程_0
├—信号与系统课程辅导_0
├—信号与线性系统分析 (第二版)_0
├—信号分析与处理_0
├—信号处理中的数学变换和估计方法_0
├—信号处理原理与应用_0
├—信号处理滤波器设计_0
├—信息与传播_0
├—信息与计算科学专业系列教材 数字信号处理_0
├—信息与通信工程研究生系列教材 信息论与编码_0
├—信息与通信工程研究生系列教材 图论及其应用_0
├—信息光学理论与应用_0
├—信息化与中国经济跨越式发展_0
├—信息化工程原理与应用_0
├—信息安全原理与应用 (第三版)_0
├—信息安全教学基础_0
├—信息安全策略与机制_0
├—信息技术与电子政务 (通用版)——信息时代的电子政府_0
├—信息技术与课程整合的理论与方法_0
├—信息技术及其应用_0
├—信息技术基础_0
├—信息技术基础教程_0
├—信息技术基础教程实验及上机指导_0
├—信息技术法 (第二版)_0
├—信息技术的商业价值_0
├—信息方法概论_0
├—信息时代的企业人力资源管理_0
├—信息时代的管理信息系统 (原书第四版)_0
├—信息检索与利用_0
├—信息理论与编码2_0
├—信息理论与编码_0
├—信息竞争论_0
├—信息管理与信息系统专业规划教材 管理信息系统_0
├—信息管理论_0
├—信息系统分析与设计教程_0
├—信息系统升级与整合:策略·方法·技巧_0
├—信息系统安全管理_0
├—信息系统集成技术 (第二版)_0
├—信息系统项目管理导论_0
├—信息经济学_0
├—信息经济学与信息管理_0
├—信息经济学引论:激励与合约 (第二版)_0
├—信息经济论_0
├—信息网络传播权研究_0
├—信息网络经济的管理与调控:美国“新经济周期”研究_0
├—信息论与编码理论 第二版_0
├—信息资源管理_0
├—信息隐藏与数字水印_0
├—信息隐藏技术实验教程_0
├—先进PID控制MATLAB仿真 (第二版)_0
├—光信息网络_0
├—光信息通信技术实用手册_0
├—光纤通信_0
├—光纤通信原理与技术_0
├—光纤通信技术_0
├—光纤通信系统原理与实验教程_0
├—光纤通信系统及其应用_0
├—光纤通信:通信用光纤、器件和系统_0
├—全光光纤通信网_0
├—全国信息技术人才培养工程指定培训教材 平面设计基础_0
├—全国大学生电子设计竞赛获奖作品汇编:第一届-第五届_0
├—全国计算机技术与软件专业技术资格(水平)考试·程序员分册_0
├—全国计算机技术与软件专业技术资格(水平)考试·网络工程师分册_0
├—全国计算机技术与软件专业技术资格(水平)考试·网络管理员分册_0
├—全国计算机技术与软件专业技术资格(水平)考试·软件设计师分册_0
├—全国计算机等级考试三级教程 信息管理技术_0
├—全国计算机等级考试三级模拟题精选与详解 信息管理技术_0
├—全国计算机等级考试三级模拟题解 信息管理技术_0
├—全国计算机等级考试三级辅导 信息管理技术_0
├—全国计算机等级考试二级教程:基础知识和Java语言程序设计_0
├—全国计算机等级考试二级模拟题解:基础知识和Java语言程序设计_0
├—全国计算机等级考试应试辅导 QBASIC语言(二级)难点、错点解析_0
├—全国计算机等级考试教程 信息管理技术 (三级) (2004修订版)_0
├—全国计算机等级考试考点分析、题解与模拟 (三级信息管理技术)_0
├—全国计算机等级考试(三级信息管理技术)一册通_0
├—公司信息战略与管理:教程与案例 (原书第6版)_0
├—内容产业论:数字新媒体的核心_0
├—制造业信息化与信息编码_0
├—动态网页设计与电子商务_0
├—北京市高等教育精品教材立项项目 实用电子电路基础_0
├—半导体分立元器件集成电路装调_0
├—单片开关电源:应用电路·电磁兼容·PCB布线_0
├—单片微型计算机原理、应用及接口技术 (第2版)_0
├—单片机典型模块设计实例导航_0
├—单片机原理与实用技术_0
├—单片机原理与应用2_0
├—单片机原理与应用_0
├—单片机原理及其接口技术 (第二版)_0
├—单片机原理及其接口技术 (第二版)_0
├—单片机原理及其接口技术学习辅导与实践教程_0
├—单片机原理及应用_0
├—单片机原理及接口技术2_0
├—单片机原理及接口技术3_0
├—单片机原理及接口技术_0
├—单片机实用技术_0
├—单片机嵌入式应用的线开发方法_0
├—单片机应用技术_0
├—单片机应用系统设计与产品开发_0
├—单片机控制工程实践技术_0
├—卫星通信系统_0
├—四维时空逻辑_0
├—国外电子与通信教材系列 信号与系统 (第二版)_0
├—国外经典教材 C++数据结构与程序设计_0
├—国外经典计算机科学教材 逻辑与计算机设计基础 (第三版)_0
├—国外着名高等院校信息科学与技术优秀教材 C算法 第一卷,基础、数据结构、排序和搜_0
├—国外着名高等院校信息科学与技术优秀教材 密码学概论 (中文版)_0
├—国外着名高等院校信息科学与技术优秀教材 面向对象编程 C++和Java 比较教程_0
├—国外计算机科学教材系列 现代编译器的Java实现 (第二版)_0
├—国外计算机科学经典教材 JAVA 基础教程:从问题分析到程序设计_0
├—国外计算机科学经典教材 数据结构 Java 语言描述 (第二版)_0
├—国外高校电子信息类优秀教材 (翻译版) 压缩视频通信_0
├—国家信息化技术培训指定教材 硬件维护工程师标准培训教程_0
├—国防科工委十五规划教材 网络与信息安全_0
├—国际电子商务培训认证专用教材 国际电子商务程序设计教程_0
├—国际电子商务概论_0
├—图像信息压缩_0
├—图像数字记录_0
├—图像编码基础和小波压缩技术——原理、算法和标准_0
├—图表细说电子元器件_0
├—图解晶体管实用电路_0
├—图解电工电子基础_0
├—基于Java的计算机图形学_0
├—基于MCS-51单片机的嵌入式系统设计_0
├—声光信号处理及应用_0
├—复变函数与拉普拉斯变换习题指导_0
├—复变函数与积分变换学习指导_0
├—复变函数论与运算微积_0
├—大型软件体系结构:使用UML实践指南_0
├—大学信息技术基础教程_0
├—大学生素质教育系列教材 复变函数学习指导_0
├—大学英语六级词汇背诵词典
├—大学计算机信息技术学习指导_0
├—大学计算机基础教育规划教材 Visual Basic NET程序设计_0
├—大容量数据存储系统编码_0
├—天津市高等学校计算机基础课程规划教材 C程序设计教程 (第二版)_0
├—奇思异想编程序 Delphi篇_0
├—学习指导与题典:离散数学_0
├—学习指导与题典:计算机网络与通信_0
├—完整的数字设计_0
├—实用化工计算机模拟:MATLAB在化学工程中的应用_0
├—实用射频技术_0
├—实用电动机控制电路200例_0
├—实用电工与电子技术问答_0
├—实用电工电路图集_0
├—实用电路基础_0
├—实用软件测试过程_0
├—实验电子技术_0
├—宽带移动通信中的先进信道编码技术_0
├—宽带通信_0
├—宽带通信网与组网技术_0
├—小波分析信息传输基础_0
├—小灵通(PAS)个人通信接入系统 (修订版)_0
├—嵌入式微处理器模拟接口设计 (第二版)_0
├—嵌入式软件测试_0
├—工程电磁场数值计算_0
├—差错控制编码_0
├—常用充电器电路与应用_0
├—应用程序设计编制(Delphi 平台)Delphi 6_0_7_0职业技能培训教程_0
├—建筑物电子信息系统防雷技术设计手册_0
├—建筑电气常用设备模块化控制电路图集_0
├—建筑通信与网络技术_0
├—开发专家之Sun ONE J2EE技术参考手册_0
├—彩色图像工程_0
├—彩色电视机单元电路应用与维修手册_0
├—微型计算机原理与接口技术3_0
├—微型计算机原理与接口技术_0
├—微型计算机硬件技术教程-原理·汇编·接口及体系结构_0
├—微处理机原理与接口技术_0
├—微控制器原理及接口技术实验教程_0
├—微机原理与接口技术2_0
├—微机原理与接口技术4_0
├—微机原理与接口技术_0
├—微机原理与接口技术综合实验教程_0
├—微机原理及接口技术实验教程_0
├—微机原理及软硬件接口技术_0
├—微机接口技术500问_0
├—微波固态电路_0
├—微波工程基础_0
├—微波技术2_0
├—微波技术_0
├—微观信息管理_0
├—快速开发信息管理系统:新平台、新方法_0
├—怎样用电脑设计电子线路_0
├—怎样看楼宇常用设备电气控制电路图_0
├—振荡电路的设计与应用_0
├—捉虫历险记——常见C++Bug大围剿_0
├—控制工程与信号处理_0
├—控制系统MATLAB计算机及仿真 (第二版)_0
├—操作系统原理Linux篇_0
├—数字万用表检测方法与应用 (世纪新版)_0
├—数字与逻辑电路
├—数字专用集成电路的设计与验证_0
├—数字信号处理2_0
├—数字信号处理3_0
├—数字信号处理_0
├—数字信号处理典型题解及自测试题_0
├—数字信号处理原理及实现_0
├—数字信号处理实践方法 (第2版)_0
├—数字信号处理教程:MATLAB释义与实现_0
├—数字信号处理:系统分析与设计_0
├—数字信号微处理器的原理与开发 (第二版)_0
├—数字制造_0
├—数字化战场_0
├—数字化测量技术与应用_0
├—数字化网络化制造技术_0
├—数字图像处理及应用_0
├—数字城堡_0
├—数字城市建设的理论与策略_0
├—数字媒体:作品观摩与点评_0
├—数字广播电视技术文选_0
├—数字微波通信_0
├—数字技术与着作权:观念、规范与实例_0
├—数字时代的影像制作_0
├—数字时代的电视图像_0
├—数字显示测量仪表_0
├—数字电子技术_0
├—数字电子技术基础 (第四版) 全程辅导_0
├—数字电子技术基础 (第四版) 导教·导学·导考_0
├—数字电子技术基础_0
├—数字电视原理_0
├—数字电视广告_0
├—数字电路与逻辑设计教程2_0
├—数字电路与逻辑设计教程_0
├—数字电路设计完全手册_0
├—数字的美术——CorelDRAW Illustrator艺术插画设计经典案例剖析_0
├—数字签名原理及技术_0
├—数字系统设计:从数字技术基础到ASIC设计的解析_0
├—数字系统逻辑设计
├—数字系统逻辑设计3_0
├—数字系统逻辑设计_0
├—数字视频解决方案:创建、编辑与共享数字视频_0
├—数字设计 (第三版)_0
├—数字通信技术_0
├—数字逻辑
├—数字逻辑2_0
├—数字逻辑_0
├—数字逻辑与VHDL设计_0
├—数字逻辑基础
├—数字逻辑基础_0
├—数字逻辑技术基础_0
├—数字逻辑电路_0
├—数字逻辑电路的ASIC设计2_0
├—数字逻辑电路的ASIC设计_0
├—数字逻辑电路设计
├—数字逻辑电路设计2_0
├—数字逻辑电路设计_0
├—数字逻辑电路设计与实现_0
├—数字逻辑的图形方法2_0
├—数字逻辑的图形方法_0
├—数字集成电路与嵌入式内核系统可测试性设计_0
├—数字集成电路:电路、系统与设计 (第二版)_0
├—数字集群 移动通信系统 (第二版)_0
├—数学物理方法_0
├—数学物理方程及其近似方法_0
├—数据库系统工程师教程_0
├—数据库系统工程师考试大纲_0
├—数据结构(
B. C++ 中的Item是什么关键字可以定义什么型的变量
NEW是C 的关键字,能进行类型的检查之类的
malloc是C跟C 都可以用的
不能进行类型检查之类
如果是在C 中,推荐使用new
inline函数区别与普通函数在于调用普通函数时程序有压栈和出栈操作,而inline(内联)函数编译器在预处理的时候会把它的代码加到调用它的函数中,而不用额外的跳转操作,从而提高了程序的效率。
但是inline不允许有switch, 循环等复杂语句。
堆,可用NEW对它分配内存,DELETE销毁内存空间。
栈,是由程序本身建立,分配,消除的内存空间!他服从先进后出(FILO)的原则,从而可以把各个变量按生存期分开!
static 声明的变量在C语言中有两方面的特征:
1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。
Tips:
A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;
D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。
函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。
扩展分析:术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。为了避免引入新的关键字,所以仍使用static关键字来表示这第二种含义。最后,C 重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相同)。
全局变量、静态全局变量、静态局部变量和局部变量的区别变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。
按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。
按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。
从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件
static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;
static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
C 中extern “C”含义深层探索
1.引言
C 语言的创建初衷是“a better C”,但是这并不意味着C 中类似C 语言的全局变量
和函数所采用的编译和链接方式与C 语言完全相同。作为一种欲与C 兼容的语言,C 保留了
一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C 毕竟
是一种面向对象的程序设计语言,为了支持函数的重载,C 对全局函数的处理方式与C 有明
显的不同。
2.从标准头文件说起
某企业曾经给出如下的一道面试题:
面试题
为什么标准头文件都有类似以下的结构?
#ifndef _TEST_H
#define _TEST_H
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* _TEST_H */
分析
显然,头文件中的编译宏“#ifndef _TEST_H、#define _TEST_H、#endif” 的作用是防止
该头文件被重复引用。
那么
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
的作用又是什么呢?
3.深层揭密extern "C"
extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;
其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。
被extern "C"限定的函数或变量是extern 类型的;
extern 是C/C 语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告
诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。记住,下列语句:
extern int a;
仅仅是一个变量的声明,其并不是在定义变量a,并未为a 分配内存空间(特别注意:实
际上现在一般的编译器都会对上述语句作声明处理,但链接器在链接过程中如果没有发现该
变量的定义,一般会在第一次遇到该变量声明的地方,自动定义)。变量a 在所有模块中作为
一种全局变量只能被定义一次,否则会出现连接错误。
通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字
extern 声明。例如,如果模块B 欲引用该模块A 中定义的全局变量和函数时只需包含模块A
的头文件即可。这样,模块B 中调用模块A 中的函数时,在编译阶段,模块B 虽然找不到该
函数,但是并不会报错;它会在连接阶段中从模块A 编译生成的目标代码中找到此函数。
与extern 对应的关键字是static,被它修饰的全局变量和函数只能在本模块中使用。因
此,一个函数或变量只可能被本模块使用时,其不可能被extern “C”修饰。
被extern "C"修饰的变量和函数是按照C 语言方式编译和连接的;
未加extern “C”声明时的编译方式
首先看看C 中对类似C 的函数是怎样编译的。
作为一种面向对象的语言,C 支持函数重载,而过程式语言C 则不支持。函数被C 编
译后在符号库中的名字与C 语言的不同。例如,假设某个函数的原型为:
void foo( int x, int y );
该函数被C 编译器编译后在符号库中的名字为_foo,而C 编译器则会产生像
_foo_int_int 之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,
生成的新名字称为“mangled name”)。
_foo_int_int 这样的名字包含了函数名、函数参数数量及类型信息,C 就是靠这种机制
来实现函数重载的。例如,在C 中,函数void foo( int x, int y )与void foo( int x, float
y )编译生成的符号是不相同的,后者为_foo_int_float。
同样地,C 中的变量除支持局部变量外,还支持类成员变量和全局变量。用户所编写程序的
类成员变量可能与全局变量同名,我们以"."来区分。而本质上,编译器在进行编译时,与函
数的处理相似,也为类中的变量取了一个独一无二的名字,这个名字与用户程序中同名的全
局变量名字不同。
未加extern "C"声明时的连接方式
假设在C 中,模块A 的头文件如下:
// 模块A 头文件 moleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
int foo( int x, int y );
#endif
在模块B 中引用该函数:
// 模块B 实现文件 moleB.cpp
#i nclude "moleA.h"
foo(2,3);
实际上,在连接阶段,连接器会从模块A 生成的目标文件moleA.obj 中寻找
_foo_int_int 这样的符号!
加extern "C"声明后的编译和连接方式
加extern "C"声明后,模块A 的头文件变为:
// 模块A 头文件 moleA.h
#ifndef MODULE_A_H
#define MODULE_A_H
extern "C" int foo( int x, int y );
#endif
在模块B 的实现文件中仍然调用foo( 2,3 ),其结果是:
(1)模块A 编译生成foo 的目标代码时,没有对其名字进行特殊处理,采用了C 语言的
方式;
(2)连接器在为模块B 的目标代码寻找foo(2,3)调用时,寻找的是未经修改的符号名_foo。
如果在模块A 中函数声明了foo 为extern "C"类型,而模块B 中包含的是extern int
foo( int x, int y ) ,则模块B 找不到模块A 中的函数;反之亦然。
所以,可以用一句话概括extern “C”这个声明的真实目的(任何语言中的任何语法特
性的诞生都不是随意而为的,来源于真实世界的需求驱动。我们在思考问题时,不能只停留
在这个语言是怎么做的,还要问一问它为什么要这么做,动机是什么,这样我们可以更深入
地理解许多问题):
实现C 与C 及其它语言的混合编程。
明白了C 中extern "C"的设立动机,我们下面来具体分析extern "C"通常的使用技巧。
4.extern "C"的惯用法
(1)在C 中引用C 语言中的函数和变量,在包含C 语言头文件(假设为cExample.h)
时,需进行下列处理:
extern "C"
{
#i nclude "cExample.h"
}
而在C 语言的头文件中,对其外部函数只能指定为extern 类型,C 语言中不支持extern
"C"声明,在.c 文件中包含了extern "C"时会出现编译语法错误。
笔者编写的C 引用C 函数例子工程中包含的三个文件的源代码如下:
/* c 语言头文件:cExample.h */
#ifndef C_EXAMPLE_H
#define C_EXAMPLE_H
extern int add(int x,int y);
#endif
/* c 语言实现文件:cExample.c */
#i nclude "cExample.h"
int add( int x, int y )
{
return x y;
}
// c 实现文件,调用add:cppFile.cpp
extern "C"
{
#i nclude "cExample.h"
}
int main(int argc, char* argv[])
{
add(2,3);
return 0;
}
如果C 调用一个C 语言编写的.DLL 时,当包括.DLL 的头文件或声明接口函数时,应加
extern "C" 。
(2)在C 中引用C 语言中的函数和变量时,C 的头文件需添加extern "C",但是在C
语言中不能直接引用声明了extern "C"的该头文件,应该仅将C 文件中将C 中定义的extern
"C"函数声明为extern 类型。
笔者编写的C 引用C 函数例子工程中包含的三个文件的源代码如下:
//C 头文件 cppExample.h
#ifndef CPP_EXAMPLE_H
#define CPP_EXAMPLE_H
extern "C" int add( int x, int y );
#endif
//C 实现文件 cppExample.cpp
#i nclude "cppExample.h"
int add( int x, int y )
{
return x y;
}
/* C 实现文件 cFile.c
/* 这样会编译出错:#i nclude "cExample.h" */
extern int add( int x, int y );
int main( int argc, char* argv[] )
{
add( 2, 3 );
return 0;
}
如果深入理解了第3 节中所阐述的extern "C"在编译和连接阶段发挥的作用,就能真正
理解本节所阐述的从C 引用C 函数和C 引用C 函数的惯用法。对第4 节给出的示例代码,
需要特别留意各个细节。
volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。
例如:
volatile int i=10;
int j = i;
...
int k = i;
volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。
而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。
断言(assert)是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的:
assert(a
C. C语言程序设计:现代方法:第2版的目录
第1章c语言概述 1
1.1c语言的历史 1
1.1.1起源 1
1.1.2标准化 1
1.1.3基于c的语言 2
1.2c语言的优缺点 3
1.2.1c语言的优点 3
1.2.2c语言的缺点 3
1.2.3高效地使用c语言 4
问与答 5
第2章c语言基本概念 7
2.1编写一个简单的c程序 7
程序显示双关语 7
2.1.1编译和链接 8
2.1.2集成开发环境 8
2.2简单程序的一般形式 9
2.2.1指令 9
2.2.2函数 9
2.2.3语句 10
2.2.4显示字符串 10
.2.3注释 11
2.4变量和赋值 12
2.4.1类型 12
2.4.2声明 13
2.4.3赋值 13
2.4.4显示变量的值 14
程序计算箱子的空间重量 14
2.4.5初始化 15
2.4.6显示表达式的值 16
2.5读入输入 16
程序计算箱子的空间重量(改进版) 16
2.6定义常量的名字 17
程序华氏温度转换为摄氏温度 17
2.7标识符 18
2.8c程序的书写规范 19
问与答 21
练习题 23
编程题 24
第3章格式化输入/输出 26
3.1printf函数 26
3.1.1转换说明 27
程序用printf函数格式化数 28
3.1.2转义序列 28
3.2scanf函数 29
3.2.1scanf函数的工作方法 30
3.2.2格式串中的普通字符 31
3.2.3易混淆的printf函数和scanf
函数 32
程序分数相加 32
问与答 33
练习题 34
编程题 35
第4章表达式 36
4.1算术运算符 36
程序计算通用产品代码的校验位 38
4.2赋值运算符 39
4.2.1简单赋值 40
4.2.2左值 41
4.2.3复合赋值 41
4.3自增运算符和自减运算符 42
4.4表达式求值 43
4.5表达式语句 45
问与答 45
练习题 47
编程题 49
第5章选择语句 50
5.1逻辑表达式 50
5.1.1关系运算符 50
5.1.2判等运算符 51
5.1.3逻辑运算符 51
5.2if语句 52
5.2.1复合语句 53
5.2.2else子句 53
5.2.3级联式if语句 54
程序计算股票经纪人的佣金 55
5.2.4“悬空else”的问题 56
5.2.5条件表达式 57
5.2.6c89中的布尔值 58
5.2.7c99中的布尔值 58
5.3switch语句 59
程序显示法定格式的日期 61
问与答 62
练习题 65
编程题 67
第6章循环 69
6.1while语句 69
程序显示平方表 71
程序数列求和 71
6.2do语句 72
程序计算整数的位数 73
6.3for语句 73
6.3.1for语句的惯用法 74
6.3.2在for语句中省略表达式 75
6.3.3c99中的for语句 75
6.3.4逗号运算符 76
程序显示平方表(改进版) 77
6.4退出循环 78
6.4.1break语句 78
6.4.2continue语句 78
6.4.3goto语句 79
程序账簿结算 80
6.5空语句 81
问与答 83
练习题 84
编程题 85
第7章基本类型 88
7.1整数类型 88
7.1.1c99中的整数类型 90
7.1.2整数常量 90
7.1.3c99中的整数常量 91
7.1.4整数溢出 91
7.1.5读/写整数 91
程序数列求和(改进版) 92
7.2浮点类型 93
7.2.1浮点常量 94
7.2.2读/写浮点数 94
7.3字符类型 94
7.3.1字符操作 95
7.3.2有符号字符和无符号字符 95
7.3.3算术类型 96
7.3.4转义序列 96
7.3.5字符处理函数 97
7.3.6用scanf和printf读/写字符 98
7.3.7用getchar和putchar读/写
字符 98
程序确定消息的长度 99
7.4类型转换 100
7.4.1常用算术转换 101
7.4.2赋值过程中的转换 102
7.4.3c99中的隐式转换 103
7.4.4强制类型转换 103
7.5类型定义 105
7.5.1类型定义的优点 105
7.5.2类型定义和可移植性 105
7.6sizeof运算符 106
问与答 107
练习题 109
编程题 110
第8章数组 113
8.1一维数组 113
8.1.1数组下标 113
程序数列反向 115
8.1.2数组初始化 115
8.1.3 指定初始化式 116
程序检查数中重复出现的数字 116
8.1.4对数组使用sizeof运算符 117
程序计算利息 118
8.2多维数组 119
8.2.1多维数组初始化 120
8.2.2常量数组 121
程序发牌 121
8.3c99中的变长数组 122
问与答 123
练习题 124
编程题 125
第9章函数 129
9.1函数的定义和调用 129
程序计算平均值 129
程序显示倒计数 130
程序显示双关语(改进版) 131
9.1.1函数定义 132
9.1.2函数调用 133
程序判定素数 134
9.2函数声明 135
9.3实际参数 136
9.3.1实际参数的转换 137
9.3.2数组型实际参数 138
9.3.3变长数组形式参数 140
9.3.4在数组参数声明中使用
static 141
9.3.5复合字面量 141
9.4return语句 142
9.5程序终止 143
9.6递归 144
程序快速排序 146
问与答 147
练习题 150
编程题 153
第10章程序结构 155
10.1局部变量 155
10.1.1静态局部变量 156
10.1.2形式参数 156
10.2外部变量 156
10.2.1示例:用外部变量实现栈 156
10.2.2外部变量的利与弊 157
程序 猜数 158
10.3程序块 161
10.4作用域 162
10.5构建c程序 163
程序给一手牌分类 163
问与答 169
练习题 169
编程题 170
第11章指针 172
11.1指针变量 172
11.2取地址运算符和间接寻址运算符 173
11.2.1取地址运算符 173
11.2.2间接寻址运算符 174
11.3指针赋值 174
11.4指针作为参数 176
程序找出数组中的最大元素和最
小元素 177
11.5指针作为返回值 179
问与答 180
练习题 181
编程题 182
第12章指针和数组 184
12.1指针的算术运算 184
12.1.1指针加上整数 185
12.1.2指针减去整数 185
12.1.3两个指针相减 186
12.1.4指针比较 186
12.1.5指向复合常量的指针 186
12.2指针用于数组处理 186
12.3用数组名作为指针 188
程序 数列反向(改进版) 189
12.3.1数组型实际参数(改进版) 189
12.3.2用指针作为数组名 191
12.4指针和多维数组 191
12.4.1处理多维数组的元素 191
12.4.2处理多维数组的行 192
12.4.3处理多维数组的列 192
12.4.4用多维数组名作为指针 192
12.5c99中的指针和变长数组 193
问与答 194
练习题 195
编程题 197
第13章字符串 198
13.1字符串字面量 198
13.1.1字符串字面量中的转义序列 198
13.1.2延续字符串字面量 199
13.1.3如何存储字符串字面量 199
13.1.4字符串字面量的操作 200
13.1.5字符串字面量与字符常量 200
13.2字符串变量 200
13.2.1初始化字符串变量 201
13.2.2字符数组与字符指针 202
13.3字符串的读和写 203
13.3.1用printf函数和puts函数
写字符串 203
13.3.2用scanf函数和gets函数读
字符串 203
13.3.3逐个字符读字符串 204
13.4访问字符串中的字符 205
13.5使用c语言的字符串库 206
13.5.1strcpy函数 207
13.5.2strlen函数 208
13.5.3strcat函数 208
13.5.4strcmp函数 209
程序 显示一个月的提醒列表 209
13.6字符串惯用法 211
13.6.1搜索字符串的结尾 211
13.6.2复制字符串 213
13.7字符串数组 214
程序 核对行星的名字 217
问与答 218
练习题 220
编程题 222
第14章预处理器 225
14.1预处理器的工作原理 225
14.2预处理指令 227
14.3宏定义 227
14.3.1简单的宏 227
14.3.2带参数的宏 229
14.3.3#运算符 231
14.3.4##运算符 231
14.3.5宏的通用属性 232
14.3.6宏定义中的圆括号 233
14.3.7创建较长的宏 233
14.3.8预定义宏 234
14.3.9c99中新增的预定义宏 235
14.3.10空的宏参数 236
14.3.11参数个数可变的宏 236
14.3.12__func__标识符 237
14.4条件编译 237
14.4.1#if指令和#endif指令 238
14.4.2defined运算符 238
14.4.3#ifdef指令和#ifndef
指令 239
14.4.4#elif指令和#else指令 239
14.4.5使用条件编译 240
14.5其他指令 240
14.5.1#error指令 240
14.5.2#line指令 241
14.5.3#pragma指令 242
14.5.4_pragma运算符 242
问与答 243
练习题 245
第15章编写大型程序 248
15.1源文件 248
15.2头文件 249
15.2.1#include指令 249
15.2.2共享宏定义和类型定义 250
15.2.3共享函数原型 251
15.2.4共享变量声明 252
15.2.5嵌套包含 253
15.2.6保护头文件 253
15.2.7头文件中的#error指令 254
15.3把程序划分成多个文件 254
程序文本格式化 255
15.4构建多文件程序 260
15.4.1makefile 260
15.4.2链接期间的错误 262
15.4.3重新构建程序 262
15.4.4在程序外定义宏 264
问与答 264
练习题 265
编程题 266
第16章结构、联合和枚举 267
16.1结构变量 267
16.1.1结构变量的声明 267
16.1.2结构变量的初始化 269
16.1.3指定初始化 269
16.1.4对结构的操作 270
16.2结构类型 270
16.2.1结构标记的声明 271
16.2.2结构类型的定义 272
16.2.3结构作为参数和返回值 272
16.2.4复合字面量 273
16.3嵌套的数组和结构 274
16.3.1嵌套的结构 274
16.3.2结构数组 274
16.3.3结构数组的初始化 275
程序 维护零件数据库 275
16.4联合 281
16.4.1用联合来节省空间 282
16.4.2用联合来构造混合的数据
结构 284
16.4.3为联合添加“标记字段” 284
16.5枚举 285
16.5.1枚举标记和类型名 286
16.5.2枚举作为整数 286
16.5.3用枚举声明“标记字段” 286
问与答 287
练习题 289
编程题 293
第17章指针的高级应用 294
17.1动态存储分配 294
17.1.1内存分配函数 294
17.1.2空指针 295
17.2动态分配字符串 296
17.2.1使用malloc函数为字符串
分配内存 296
17.2.2在字符串函数中使用动态
存储分配 296
17.2.3动态分配字符串的数组 297
程序 显示一个月的提醒列表
(改进版) 297
17.3动态分配数组 299
17.3.1使用malloc函数为数组分配
存储空间 299
17.3.2calloc函数 300
17.3.3realloc函数 300
17.4释放存储空间 301
17.4.1free函数 301
17.4.2“悬空指针”问题 301
17.5链表 302
17.5.1声明结点类型 302
17.5.2创建结点 303
17.5.3-)运算符 303
17.5.4在链表的开始处插入结点 304
17.5.5搜索链表 306
17.5.6从链表中删除结点 307
17.5.7有序链表 308
程序 维护零件数据库(改进版) 309
17.6指向指针的指针 313
17.7指向函数的指针 314
17.7.1函数指针作为参数 314
17.7.2qsort函数 314
17.7.3函数指针的其他用途 316
程序 列三角函数表 317
17.8受限指针 318
17.9灵活数组成员 319
问与答 320
练习题 323
编程题 325
第18章声明 327
18.1声明的语法 327
18.2存储类型 328
18.2.1变量的性质 328
18.2.2auto存储类型 329
18.2.3static存储类型 329
18.2.4extern存储类型 330
18.2.5register存储类型 331
18.2.6函数的存储类型 332
18.2.7小结 332
18.3类型限定符 333
18.4声明符 334
18.4.1解释复杂声明 335
18.4.2使用类型定义来简化声明 336
18.5初始化式 336
18.6内联函数 337
18.6.1内联定义 338
18.6.2对内联函数的限制 339
18.6.3在gcc中使用内联函数 339
问与答 339
练习题 342
第19章程序设计 345
19.1模块 345
19.1.1内聚性与耦合性 347
19.1.2模块的类型 347
19.2信息隐藏 347
19.3抽象数据类型 350
19.3.1封装 351
19.3.2不完整类型 351
19.4栈抽象数据类型 352
19.4.1为栈抽象数据类型定义接口 352
19.4.2用定长数组实现栈抽象数据
类型 353
19.4.3改变栈抽象数据类型中数据
项的类型 354
19.4.4用动态数组实现栈抽象数据
类型 355
19.4.5用链表实现栈抽象数据类型 357
19.5抽象数据类型的设计问题 359
19.5.1命名惯例 359
19.5.2错误处理 359
19.5.3通用抽象数据类型 359
19.5.4新语言中的抽象数据类型 360
问与答 360
练习题 361
编程题 362
第20章底层程序设计 363
20.1位运算符 363
20.1.1移位运算符 363
20.1.2按位求反运算符、按位与运
算符、按位异或运算符和按
位或运算符 364
20.1.3用位运算符访问位 365
20.1.4用位运算符访问位域 366
程序 xor加密 366
20.2结构中的位域 367
20.3其他底层技术 369
20.3.1定义依赖机器的类型 369
20.3.2用联合提供数据的多个视角 370
20.3.3将指针作为地址使用 371
程序 查看内存单元 371
20.3.4volatile类型限定符 373
问与答 374
练习题 374
编程题 376
第21章标准库 377
21.1标准库的使用 377
21.1.1对标准库中所用名字的
限制 377
21.1.2使用宏隐藏的函数 378
21.2c89标准库概述 378
21.3c99标准库更新 380
21.4(stddef.h):常用定义 381
21.5(stdbool.h):布尔类型和值 381
问与答 382
练习题 382
编程题 383
第22章输入/输出 384
22.1流 384
22.1.1文件指针 385
22.1.2标准流和重定向 385
22.1.3文本文件与二进制文件 385
22.2文件操作 386
22.2.1打开文件 386
22.2.2模式 387
22.2.3关闭文件 388
22.2.4为打开的流附加文件 389
22.2.5从命令行获取文件名 389
程序 检查文件是否可以打开 389
22.2.6临时文件 390
22.2.7文件缓冲 391
22.2.8其他文件操作 392
22.3格式化的输入/输出 393
22.3.1…printf函数 393
22.3.2…printf转换说明 393
22.3.3c99对…printf转换说明的
修改 395
22.3.4…printf转换说明示例 396
22.3.5…scanf函数 398
22.3.6…scanf格式串 398
22.3.7…scanf转换说明 398
22.3.8c99对...scanf转换说明的
改变 400
22.3.9scanf示例 400
22.3.10检测文件末尾和错误条件 401
22.4字符的输入/输出 403
22.4.1输出函数 403
22.4.2输入函数 403
程序 复制文件 404
22.5行的输入/输出 405
22.5.1输出函数 405
22.5.2输入函数 406
22.6块的输入/输出 406
22.7文件定位 407
程序 修改零件记录文件 409
22.8字符串的输入/输出 409
22.8.1输出函数 410
22.8.2输入函数 410
问与答 411
练习题 414
编程题 416
第23章库对数值和字符数据的支持 419
23.1(float.h):浮点类型的特性 419
23.2(limits.h):整数类型的大小 421
23.3(math.h):数学计算(c89) 422
23.3.1错误 422
23.3.2三角函数 422
23.3.3双曲函数 423
23.3.4指数函数和对数函数 423
23.3.5幂函数 424
23.3.6就近取整函数、绝对值函数
和取余函数 424
23.4(math.h):数学计算(c99) 425
23.4.1ieee浮点标准 425
23.4.2类型 426
23.4.3宏 426
23.4.4错误 426
23.4.5函数 427
23.4.6分类宏 427
23.4.7三角函数 428
23.4.8双曲函数 428
23.4.9指数函数和对数函数 429
23.4.10幂函数和绝对值函数 430
23.4.11误差函数和伽玛函数 430
23.4.12就近取整函数 431
23.4.13取余函数 432
23.4.14操作函数 432
23.4.15最大值函数、最小值函数
和正差函数 433
23.4.16浮点乘加 433
23.4.17比较宏 434
23.5(ctype.h):字符处理 434
23.5.1字符分类函数 435
程序 测试字符分类函数 436
23.5.2字符大小写映射函数 437
程序 测试大小写映射函数 437
23.6(string.h):字符串处理 437
23.6.1复制函数 437
23.6.2拼接函数 438
23.6.3比较函数 439
23.6.4搜索函数 440
23.6.5其他函数 442
问与答 442
练习题 443
编程题 444
第24章错误处理 446
24.1(assert.h):诊断 446
24.2(errno.h):错误 447
24.3(signal.h):信号处理 448
24.3.1信号宏 449
24.3.2signal函数 449
24.3.3预定义的信号处理函数 450
24.3.4raise函数 450
程序 测试信号 451
24.4(setjmp.h):非局部跳转 452
程序 测试setjmp和longjmp 452
问与答 453
练习题 454
第25章国际化特性 456
25.1(locale.h):本地化 456
25.1.1类别 456
25.1.2setlocale函数 457
25.1.3localeconv函数 458
25.2多字节字符和宽字符 461
25.2.1多字节字符 461
25.2.2宽字符 461
25.2.3统一码和通用字符集 462
25.2.4统一码编码 462
25.2.5多字节/宽字符转换函数 463
25.2.6多字节/宽字符串转换函数 465
25.3双字符和三字符 465
25.3.1三字符 465
25.3.2双字符 466
25.3.3(iso646.h):拼写替换 467
25.4通用字符名 467
25.5(wchar.h):扩展的多字节和宽字符
实用工具 467
25.5.1流倾向 468
25.5.2格式化宽字符输入/输出
函数 468
25.5.3宽字符输入/输出函数 470
25.5.4通用的宽字符串实用工具 471
25.5.5宽字符时间转换函数 474
25.5.6扩展的多字节/宽字符转换
实用工具 474
25.6(wctype.h):宽字符分类和映射实
用工具 477
25.6.1宽字符分类函数 477
25.6.2可扩展的宽字符分类函数 478
25.6.3宽字符大小写映射函数 478
25.6.4可扩展的宽字符大小写映射
函数 478
问与答 479
练习题 479
编程题 480
第26章其他库函数 482
26.1(stdarg.h):可变参数 482
26.1.1调用带有可变参数列表的
函数 483
26.1.2v…printf函数 484
26.1.3v…scanf函数 485
26.2(stdlib.h):通用的实用工具 485
26.2.1数值转换函数 485
程序 测试数值转换函数 486
26.2.2伪随机序列生成函数 488
程序 测试伪随机序列生成函数 488
26.2.3与环境的通信 489
26.2.4搜索和排序实用工具 490
程序 确定航空里程 491
26.2.5整数算术运算函数 492
26.3(time.h):日期和时间 492
26.3.1时间处理函数 493
26.3.2时间转换函数 495
程序 显示日期和时间 498
问与答 500
练习题 501
编程题 502
第27章c99对数学计算的新增支持 503
27.1(stdint.h):整数类型 503
27.1.1(stdint.h)类型 503
27.1.2对指定宽度整数类型的限制 504
27.1.3对其他整数类型的限制 505
27.1.4用于整数常量的宏 505
27.2(inttypes.h):整数类型的格式
转换 506
27.2.1用于格式说明符的宏 506
27.2.2用于最大宽度整数类型的
函数 507
27.3复数 508
27.3.1复数的定义 508
27.3.2复数的算术运算 509
27.3.3c99中的复数类型 509
27.3.4复数的运算 510
27.3.5复数类型的转换规则 510
27.4(complex.h):复数算术运算 511
27.4.1(complex.h)宏 511
27.4.2cx_limited_range编译
提示 512
27.4.3(complex.h)函数 512
27.4.4三角函数 512
27.4.5双曲函数 513
27.4.6指数函数和对数函数 514
27.4.7幂函数和绝对值函数 514
27.4.8操作函数 514
程序 求二次方程的根 515
27.5(tgmath.h):泛型数学 515
27.5.1泛型宏 516
27.5.2调用泛型宏 517
27.6(fenv.h):浮点环境 518
27.6.1浮点状态标志和控制模式 518
27.6.2(fenv.h)宏 519
27.6.3fenv_access编译提示 519
27.6.4浮点异常函数 520
27.6.5舍入函数 520
27.6.6环境函数 521
问与答 521
练习题 522
编程题 523
附录ac语言运算符 524
附录bc99与c89的比较 525
附录cc89与经典c的比较 529
附录d标准库函数 532
附录eascii字符集 569
参考文献 570
索引 573
D. 大学生自学编程需要看哪些书
此推荐书籍和学习顺序是针对编程学习而言,不是针对计算机专业而言。学习这些书籍后,对于从事软件开发行业,则可以起步更快,而不是等到毕业后才知道。非计算机专业可能转行到软件开发的更是需要学习了。
大一上:
C Primer Plus
说明:大一刚进入大学,对于大学是陌生的,需要一定的时间熟悉。只需要自己学好C语言即可。
大一下:
VS使用:Visual Studio程序员箴言
C和指针
说明:学习编程需要熟悉开发工具,这是编程的基础。而C语言学习也需要加深。
大二上:
数据结构C语言版
C++ Primer Plus
说明:学习了基本的编程语言后,需要开始了解数据接算法基础了。同时,也需要学习面向对象的编程语言了。C++将作为主要的语言推荐,作为修炼大神必备语言基础。
大二下:
Windows程序设计
Linux系统使用
标准程序库STL
说明:语言学的差不多了,就需要了解操作系统的编程。Windows系统的使用则不必专门学习了,接触的多自然也熟悉。但是Linux系统的使用则需要额外的学习一下。然后对于编程需要进一步的学习程序库的使用,学习使用程序库提高开发效率,打好基础。
大三上:
计算机操作系统(非计算机专业自己学)
Boost入门
数据结构C++语言版
Windows核心编程
说明:学完了C++,因为数据结构是软件开发非常中重要的基础,所以再用面向对象思想来学习加深数据结构。在实际开发过程中,很多时候都是用面向对象的方式来做的。然后就是学习操作系统的基础理论和加深Windows编程,再学习一个程序库Boost,以后将会普及,需要提前学好。
大三下:
计算机网络(非计算机专业自己学)
MFC程序设计
Linux编程
说明:计算机网络也是必学的计算机理论,然后接触实际的开发库MFC。作为Windows开发MFC还是需要学习的,学会使用,然后学会MFC的设计思想等,其他框架其实想通的。Linux也需要开始编程了。
大四:
C++编程风格
C++编程惯用法_高级程序员常用用法和技巧
设计模式:可复用面向对象软件的基础
大道至简-软件工程实践者的思想
说明:大四开始面向毕业了,需要学习更多的开发规范,提高编程质量,提高解决问题的能力,需要学习一些高级层次的软件开发思想,毕竟前面已经有很多基础了。这个可以再根据个人的实际情况扩展。