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++編程慣用法_高級程序員常用用法和技巧
設計模式:可復用面向對象軟體的基礎
大道至簡-軟體工程實踐者的思想
說明:大四開始面向畢業了,需要學習更多的開發規范,提高編程質量,提高解決問題的能力,需要學習一些高級層次的軟體開發思想,畢竟前面已經有很多基礎了。這個可以再根據個人的實際情況擴展。