[ 收藏 ] [ 简体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

     经部  史类  子部  集部  古籍管理  古籍工具书  四库全书  古籍善本影音本  中国藏书
  •  文化

     文化评述  文化随笔  文化理论  传统文化  世界各国文化  文化史  地域文化  神秘文化  文化研究  民俗文化  文化产业  民族文化  书的起源/书店  非物质文化遗产  文化事业  文化交流  比较文化学
  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

     执业资格考试用书  室内设计/装潢装修  标准/规范  建筑科学  建筑外观设计  建筑施工与监理  城乡规划/市政工程  园林景观/环境艺术  工程经济与管理  建筑史与建筑文化  建筑教材/教辅  英文原版书-建筑
  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

     园艺  植物保护  畜牧/狩猎/蚕/蜂  林业  动物医学  农作物  农学(农艺学)  水产/渔业  农业工程  农业基础科学  农林音像
  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

  •  保健/养生

  •  体育/运动

  •  手工/DIY

  •  休闲/爱好

  •  英文原版书

  •  港台图书

  •  研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学

  •  音乐
     音乐理论

     声乐  通俗音乐  音乐欣赏  钢琴  二胡  小提琴
  • C++面向對像程序設計(第2版)
    該商品所屬分類:研究生 -> 工學
    【市場價】
    297-430
    【優惠價】
    186-269
    【作者】 龔曉慶、付麗娜、朱新懿、李康 
    【所屬類別】 圖書  教材  研究生/本科/專科教材  工學 
    【出版社】清華大學出版社 
    【ISBN】9787302458838
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:32開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787302458838
    叢書名:重點大學計算機專業繫列教材

    作者:龔曉慶、付麗娜、朱新懿、李康
    出版社:清華大學出版社
    出版時間:2017年02月 


        
        
    "
    編輯推薦
    l  教材強調C 11的實用性和易用性,具有以下特色:l  所有示例程序均使用C 11標準編寫,並在GNU GCC編譯環境下調試通過。l  從C 語言的語法、語義和語用三個層面著手,除了詳細介紹C 的各種語法概念及其語義之外,更著重其語用知識:在特定情況下應該使用何種語法結構,用它們來解決什麼樣的問題。l  在習題的思考題部分增加了一些軟件公司的C 筆試題,以便讀者深入了解C 在實際中的應用。l  穿插介紹了一些實用的編程經驗,例如程序的多文件組織、變量命名、函數的設計、類的設計、錯誤處理技術等。 
    內容簡介
    本書在第1版的基礎上針對新的C 11標準重新撰寫,講解如何用C 11編寫面向對像程序。本書以面向對像概念為主線索,內容由淺入深,主要包括:面向對像基礎,C 語言概覽和語言基礎,復合類型,函數,類和對像,構造函數和析構函數,運算符重載,組合與繼承,虛函數與多態性,模板與泛型編程,標準庫容器和異常處理。
    本書內容體繫組織符合高校課程開設特點,適合作為高等院校計算機及相關專業本科生的C 程序設計教材,也可作為學習C 和面向對像程序設計的參考讀物。
    目錄

    第1章 面向對像基礎 1
    1.1 程序設計範型 1
    1.2 面向對像的基本概念 2
    1.2.1 對像和類 3
    1.2.2 封裝和信息/實現隱藏 4
    1.2.3 接口、實現和消息傳遞 6
    1.2.4 繼承 8
    1.2.5 多態性 10
    1.2.6 類之間的關繫 12
    1.3 面向對像程序的特點 13
    1.4 面向對像方法發展簡史 14
    1.5 小結 16
    1.6 習題 16

     


    第1章  面向對像基礎          1


                
    1.1  程序設計範型      1


                
    1.2  面向對像的基本概念 2


                
    1.2.1  對像和類  3


                
    1.2.2  封裝和信息/實現隱藏     4


                
    1.2.3  接口、實現和消息傳遞  6


                
    1.2.4  繼承  8


                
    1.2.5  多態性       10


                
    1.2.6  類之間的關繫  12


                
    1.3  面向對像程序的特點 13


                
    1.4  面向對像方法發展簡史      14


                
    1.5  小結      16


                
    1.6  習題      16


    第2章  C 語言概覽  17


                
    2.1  C 語言的特點   17


                
    2.1.1  C 的發展和標準化         17


                
    2.1.2  C 的特點         18


                
    2.2  個C 程序  19


                 2.2.1 
    程序基本結構  20


                
    2.2.2  程序的編譯和運行  21


                
    2.3  輸入和輸出 22


                
    2.3.1  標準輸入輸出  23


                
    2.3.2  注釋  24


     


    2.4  集成開發環境的使用   25


    2.4.1 
    使用IDE開發C 程序      25


    2.4.2 
    Code::Blocks使用示例       26


    2.5 
    C 語言特性概覽 32


    2.6  小結        33


    2.7  習題        33


    第3章  C 語言基礎  35


    3.1  基本內置類型        36


    3.1.1 
    算術類型    37


    3.1.2 
    帶符號和無符號類型         39


    3.1.3 
    字面值常量         40


    3.1.4 
    數據的輸入和輸出    42


    3.2  變量和常量   45


    3.2.1 
    變量定義    45


    3.2.2 
    標識符         45


    3.2.3 
    初始化         46


    3.2.4 
    賦值    47


    3.2.5 
    類型轉換    48


    3.2.6 
    變量聲明    48


    3.2.7 
    名字的作用域    49


    3.2.8 
    const對像  51


    3.2.9 
    常量表達式和constexpr   52


    3.2.10 
    auto和decltype        53


    3.3  運算符和表達式   54


    3.3.1 
    基本概念    54


    3.3.2 
    算術運算符         55


    3.3.3 
    關繫和邏輯運算符    55


    3.3.4 
    賦值運算符         56


    3.3.5 
    自增和自減         57


    3.3.6 
    位運算符    57


    3.3.7 
    sizeof運算符      58


    3.3.8 
    條件運算符         58


    3.3.9 
    逗號運算符         59


    3.3.10 
    類型轉換  59


    3.4  語句        62


    3.4.1 
    簡單語句和復合語句         62


    3.4.2 
    聲明語句    63


    3.4.3 
    if語句 63


    3.4.4 
    switch語句          65


    3.4.5 
    while語句   69


    3.4.6 
    for語句       70


    3.4.7 
    do-while語句      72


    3.4.8 
    break和continue語句       74


    3.4.9 
    goto語句    75


    3.5  編程示例:顯示素數   76


    3.6  小結        78


    3.7  習題        78


    第4章  復合類型          83


    4.1  指針和引用   83


    4.1.1 
    指針    84


    4.1.2 
    new和delete      87


    4.1.3 
    引用    90


    4.1.4 
    右值引用    92


    4.1.5 
    const限定指針和引用       93


    4.2  結構體、聯合和枚舉   97


    4.2.1 
    結構體         97


    4.2.2 
    聯合    99


    4.2.3 
    枚舉    100


    4.3  內置數組        101


    4.3.1 
    定義和初始化數組    101


    4.3.2 
    訪素    102


    4.3.3 
    數組與指針         103


    4.3.4 
    字符數組和C風格字符串         104


    4.4  標準庫類型string 105


    4.4.1 
    定義和初始化string對像 106


    4.4.2 
    string對像上的操作  106


    4.4.3 
    處理string對像中的字符 109


    4.5  標準庫類型vector         112


    4.5.1 
    定義和初始化vector 113


    4.5.2 
    向vector素         114


    4.5.3 
    訪問vecto素         115


    4.6  迭代器   116


    4.7  編程示例:文件數據處理   118


    4.7.1 
    算法和數據結構         118


    4.7.2 
    文件讀寫    119


    4.7.3 
    字符串流    121


    4.7.4 
    完成的程序         123


    4.8  小結        124


    4.9  習題        125


    第5章  函數          127


    5.1  函數基礎        127


    5.1.1 
    函數定義    128


    5.1.2 
    函數調用    128


    5.1.3 
    函數聲明    130


    5.1.4 
    遞歸函數    131


    5.2  參數傳遞        131


    5.2.1 
    按值傳遞    132


    5.2.2 
    按引用傳遞         135


    5.2.3 
    參數傳遞方式的選擇         138


    5.2.4 
    數組參數    138


    5.2.5 
    main()函數的參數      138


    5.2.6 
    不定個數的參數         139


    5.3  返回類型和return語句        140


    5.3.1 
    返回值         141


    5.3.2 
    返回引用    141


    5.3.3 
    返回列表    143


    5.3.4 
    main()函數的返回值  143


    5.3.5 
    尾置返回類型    144


    5.4  函數重載        144


    5.4.1 
    重載函數    144


    5.4.2 
    重載函數的調用         145


    5.4.3 
    重載函數的判斷         146


    5.4.4 
    重載函數解析    147


    5.5  特殊用途的函數特征   151


    5.5.1 
    默認實參    151


    5.5.2 
    inline函數   152


    5.5.3 
    constexpr函數   153


    5.6  函數指針        155


    5.6.1 
    定義函數指針    155


    5.6.2 
    使用函數指針    155


    5.6.3 
    函數指針的數組         156


    5.6.4 
    函數指針形參    157


    5.7  作用域和存儲類別        158


    5.7.1 
    作用域         159


    5.7.2 
    存儲類別和存儲空間分配         163


    5.8 
    namespace     164


    5.8.1 
    命名空間的定義         164


    5.8.2 
    命名空間成員的使用         166


    5.8.3 
    標準命名空間std       168


    5.9  程序代碼組織        169


    5.9.1 
    聲明和頭文件包含    169


    5.9.2 
    函數代碼的組織         169


    5.9.3 
    命名空間的代碼組織         170


    5.9.4 
    鏈接指示符:extern“C”        171


    5.10 
    設計高質量的函數      171


    5.10.1 
    創建函數的理由       171


    5.10.2 
    函數的命名       172


    5.10.3 
    如何使用函數的參數       173


    5.10.4 
    設置函數的返回值  174


    5.11 
    小結      174


    5.12 
    習題      175


    第6章  類和對像          180


    6.1  類的定義        180


    6.1.1 
    基本語言定義的ADT         181


    6.1.2 
    數據成員與成員函數         182


    6.1.3 
    數據成員的類內初始化    183


    6.1.4 
    成員函數的類外定義         183


    6.1.5 
    類代碼的組織    184


    6.1.6 
    包含守衛    185


    6.2  訪問控制和封裝   186


    6.2.1 
    信息隱藏的必要性    186


    6.2.2 
    訪問限定符         187


    6.2.3 
    類和對像    188


    6.2.4 
    this指針      191


    6.2.5 
    訪問器和修改器         192


    6.2.6 

    6.2.7 
    進一步的隱藏    195


    6.3  構造函數和析構函數   199


    6.3.1 
    構造函數    200


    6.3.2 
    構造函數初始化列表         201


    6.3.3 
    委托構造函數    202


    6.3.4 
    析構函數    204


    6.4 
    const成員      206


    6.4.1 
    const數據成員  206


    6.4.2 
    const成員函數  207


    6.4.3 
    mutable成員      209


    6.4.4 
    const用法小結  211


    6.5 
    static成員      212


    6.5.1 
    static數據成員  213


    6.5.2 
    static成員函數  215


    6.5.3 
    單件模式    216


    6.5.4  static用法小結  217


    6.6  指向成員的指針   217


    6.6.1 
    數據成員的指針         217


    6.6.2 
    成員函數的指針         219


    6.7  類設計的例子        220


    6.7.1 
    類的設計    221


    6.7.2 
    類的UML表示法       221


    6.7.3 
    動態字符棧類    222


    6.7.4 
    字符串類    223


    6.7.5 
    單鏈表類    226


    6.8  小結        228


    6.9  習題        229


    第7章  對像的初始化、復制和銷毀          235


    7.1  對像的初始化和銷毀   235


    7.1.1 
    對像的初始化    238


    7.1.2 
    默認構造函數    239


    7.1.3 
    隱式類型轉換構造函數    240


    7.1.4 
    析構函數    241


    7.1.5 
    拷貝控制成員    243


    7.2  拷貝構造函數        245


    7.3  拷貝賦值運算符   249


    7.4  對像復制和移動   253


    7.4.1 
    移動構造函數和移動賦值運算符    254


    7.4.2 
    成員函數的復制和移動版本    258


    7.4.3 
    是否要定義拷貝控制成員         259


    7.4.4 
    交換操作    259


    7.5  編譯器合成的成員函數        264


     


    7.5.1 
    =delete         266


    7.5.2 
    =default       266


    7.6  引用計數和寫時復制技術   267


    7.6.1 
    內置指針實現引用計數    268


    7.6.2 
    智能指針    270


    7.6.3 
    智能指針實現引用計數    274


    7.7  小結        276


    7.8  習題        276


    第8章  運算符重載     279


    8.1  基本概念        279


    8.1.1 
    運算符函數         280


    8.1.2 
    運算符重載的限制    280


    8.1.3 
    慎用運算符重載         281


    8.2  常用運算符的重載        282


    8.2.1 

    8.2.2 

    8.2.3 
    運算符函數的參數和返回類型         289


    8.2.4 
    非成員運算符和成員運算符    290


    8.2.5 
    重載輸入輸出運算符         290


    8.2.6 
    重載賦值運算符         292


    8.3  重載下標運算符   292


    8.4  用戶定義的類型轉換   294


    8.4.1 
    類型轉換運算符         294


    8.4.2 
    自動類型轉換可能引起的二義性問題    297


    8.5  函數調用運算符   298


    8.5.1 
    函數對像    298


    8.5.2 
    lambda函數        299


    8.5.3 
    標準庫定義的函數對像    302


    8.5.4 
    標準庫函數bind         303


    8.6  小結        304


    8.7  習題        305


    第9章  組合與繼承     307


    9.1  組合——復用類的實現        307


    9.1.1 
    對像成員與組合關繫         308


    9.1.2 
    對像成員的初始化    310


    9.1.3 
    復用類的實現    311


    9.1.4 
    指針成員與聚合關繫         312


    9.1.5 
    指針成員與關聯關繫         314


    9.2  繼承——復用類的接口        315


    9.2.1 
    繼承的語法         315


    9.2.2 
    派生類成員的訪問控制    316


    9.2.3 
    公有繼承和私有繼承         320


    9.2.4 
    派生類對像的創建和撤銷         322


    9.2.5 
    繼承與特殊成員         326


    9.3  派生類與基類的不同   327


    9.3.1 
    覆蓋與同名隱藏         327


    9.3.2 
    擴充接口    331


    9.4  派生類向基類的類型轉換   332


    9.5  組合與繼承的選擇        335


    9.5.1 
    組合的應用         336


    9.5.2 
    繼承的應用         337


    9.5.3 
    組合的例子         339


    9.6.4 
    繼承的例子         342


    9.6  多重繼承        347


    9.6.1 
    多重繼承引起的二義性    348


    9.6.2 
    虛基類         350


    9.7  小結        351


    9.8  習題        352


    第10章  虛函數與多態性   358


    10.1 
    派生類向基類的類型轉換 358


    10.2 
    虛函數 361


     10.2.1  聲明虛函數    361


     10.2.2  虛函數的覆蓋規則         365


     10.2.3  虛析構函數    368


     10.2.4  實現多態性的步驟         369


    10.3 
    動態綁定的實現 371


    10.4 
    抽像類 375


    10.5 
    RTTI      378


     10.5.1 
    dynamic_cast與向下類型轉換     378


     10.5.2  typeid       381


    10.6 
    類層次設計的例子      382


     10.6.1  模仿釣魚的例子    382


     10.6.2  零件庫存管理的例子    385


    10.7 
    小結      390


    10.8 
    習題      390


    第11章  模板與泛型編程   394


    11.1 
    函數模板      394


     11.1.1  函數模板的定義    395


     11.1.2  函數模板的實例化         397


     11.1.3  函數模板的重載    398


    11.2 
    類模板 399


     11.2.1  類模板的定義         400


     11.2.2  類模板的實例化    401


     11.2.3  類模板的成員函數         401


     11.2.4  模板的非類型參數         402


     11.2.5  類模板的靜態數據成員         403


     11.2.6  類模         403


    11.3 
    模板的編譯 404


     11.3.1  模板的代碼組織    405


     11.3.2  顯式實例化    408


    11.4 
    模板的更多特性 408


     11.4.1  模板的默認實參    408


     11.4.2  模板特化         409


     11.4.3  可變參數模板         410


    11.5 
    模板和代碼復用 412


    11.6 
    小結      413


    11.7 
    習題      413


    第12章  標準庫容器和算法       414


    12.1 
    容器和算法概覽 414


     12.1.1  容器概覽         414


     12.1.2  容器操作概覽         415


     12.1.3  算法概覽         417


    12.2 
    順序容器      417


     12.2.1  通用操作         418


     12.2.2  特有操作         421


     12.2.3  順序容器適配器    424


     12.2.4 
    string類的額外操作      425


    12.3 
    迭代器 428


     12.3.1  迭代器的運算         428


     12.3.2  與迭代器有關的容器操作    430


     12.3.3  反向迭代器    431


    12.4 
    關聯容器      432


     12.4.1 
    pair類型 433


     12.4.2  關聯容器的操作    433


     12.4.3 
    map 435


     12.4.4 
    set   436


    12.5 
    泛型算法      437


     12.5.1  查找         439


     12.5.2  排序         439


    12.6 
    小結      440


    12.7 
    習題      440


    第13章  異常處理       442


    13.1 
    異常處理機制      442


     13.1.1  拋出異常         443


     13.1.2 
    try語句塊       445


     13.1.3  異常處理流程         449


     13.1.4  異常對像         451


    13.2 
    捕獲異常      451


     13.2.1  重新拋出異常         454


     13.2.2  捕獲所有異常         455


     13.2.3  程序終止         455


    13.3 
    noexcept說明      456


    13.4 
    標準異常      458


     13.4.1  自定義異常類型    460


     13.4.2  處理類類型的異常         460


    13.5 
    其他錯誤處理技術      460


     13.5.1  輸入數據檢驗         461


     13.5.2  斷言         461


     13.5.3  錯誤數據處理         462


     13.5.4  審慎使用異常         463


    13.6 
    小結      464


    13.7 
    習題      465


     

    前言
    序言
    媒體評論
    評論
    在線試讀
    函 數本章學習目標:* 掌握函數定義、調用和聲明的語法;* 理解向函數傳入參數和從函數返回值的過程;* 理解不同的參數傳遞方式:按值、按引用、按指針;* 理解函數重載的概念和語法規則,了解重載函數的解析過程;* 理解inline函數的特點和適用性;* 理解默認實參的含義、語法和作用;* 了解constexpr函數的含義和作用;* 了解函數指針的語法和用途;* 理解名字的作用域、對像的存儲類別和存儲空間分配方式;* 了解命名空間的作用、定義和使用語法;* 理解C 程序的分別編譯機制和頭文件的作用;* 了解設計高質量的函數要遵循的一些指導原則。本章討論C 的函數機制。函數主要用來實現各種算法,由這些算法完成特定的任務。C 程序由函數構成,函數之間通過傳遞參數和返回值進行通信。C 支持按值和按引用傳遞參數。C 允許重載函數,即幾個不同的函數可以使用相同的名字,編譯器會選擇與函數調用相匹配的版本。函數中可以定義自己的數據,這些數據不在整個程序中使用,可以將其限制在一定的訪問範圍內。作用域提供了一種機制,讓程序員能夠限制程序中聲明的各種名字的可見性。本章還將介紹C 程序中的各種作用域以及對像的 存儲方式。5.1 函數基礎函數是一個命名的代碼塊,通過調用函數可以執行相應的代碼。在第4章的程序中調用過一些庫函數,如strlen()、toupper()。程序員也可以編寫並使用自己的函數,需要定義函數、聲明函數、調用函數。5.1.1 函數定義函數可以被看作是一個由用戶定義的操作。函數一般用一個名字表示,即函數名。函數的操作數稱為參數,由參數列表指定。函數的結果稱為返回值,返回值的類型稱為函數返回類型。函數執行的動作在函數體中指定。返回類型、函數名、參數列表和函數體構成了函數定義。函數定義的語法形式為 返回類型 函數名(參數列表) { 函數體 }下面是一個求階乘的函數定義的例子: // n! = 1 * 2 * … * (n-1) * n int fact (int n)//函數名fact,返回類型int,一個int類型的形參n { //函數體 int ret = 1; while ( n 1 )//求階乘 ret *= n--; return ret;//返回結果 }這個函數名為fact,返回int類型的結果,需要一個int類型的參數;花括號“{}”括起來的是函數體,函數體由語句序列構成。函數的參數列表不能省略。如果函數沒有任何參數,可以用空參數表或void參數表表示。例如,下面的兩個聲明是等價的: int foo ();//隱含定義空形參表 int foo (void);//與C語言兼容的寫法參數列表由逗號分隔的形參類型列表構成,每個形參類型之後跟一個可選的形參名字。例如: int print (int value, int base){ … } int exchange (int v1, int v2){ … }如果形參沒有名字,則該參數不能在函數體中使用。例如: int print (int value, int) {…//第二個參數沒有名字,不能在函數體中使用 }函數返回類型可以是內置類型、復合類型或用戶自定義的類類型。函數和內置數組不能用作返回類型,但是,可以返回函數指針和數組首地址。函數必須指定一個返回類型,沒有指定返回類型的函數聲明或定義會引起編譯錯誤。如果函數不返回任何結果,可以將其返回類型聲明為void。5.1.2 函數調用函數名後緊跟著調用操作符“()”時,該函數就被調用執行。如果函數定義要求接收參數,在調用這個函數時就需要為這些參數提供相應的數據,形式為: 函數名(實參列表);例如,要調用fact()函數,必須提供一個整數作為實參,調用得到的結果也是一個整數: //在main()函數中調用fact()函數並接收其返回結果 int main(){ int val = fact(5);//調用fact()函數,實參為5,結果保存在val中 cout "5! = " val endl; return 0; }函數定義中的參數被稱為形式參數,簡稱形參。在調用函數時提供的數據稱為實際參數,簡稱實參。C 程序在編譯時會對每個函數調用的實參執行參數類型檢查。若實參類型與相應的形參類型不匹配,如果有可能,就會應用一個隱式的類型轉換;如果不可能進行隱式轉換或者實參的個數不正確,就會產生一個編譯錯誤。例如: //--------------------------------------------------------- fact("hello");//錯誤:實參類型不正確 fact();//錯誤:實參數量不足 fact(10, 3, 2);//錯誤:實參數量過多 fact(3.14);//正確:該實參能轉換為int類型,3 //對下面的函數func()的定義 void func(int* pi){...} //a和b的定義如下 int a = 10; const int b = 5; // 則下面的兩個調用 func( a);//正確:形參int*類型,實參int*類型,類型匹配 func( b);//錯誤:實參const int*類型,不能轉換為int*類型 //如果有函數goo()定義如下 void goo(const int* cp){...} goo( a);//正確:實參int*類型,可以轉換為形參const int*類型 goo( b);//正確:實參const int*類型,匹配 //---------------------------------------------------------函數調用時完成兩項工作:一是用實參初始化函數對應的形參,二是將控制權轉移給被調用的函數。此時,主調函數的執行暫時中斷,被調函數開始執行。當遇到return語句時,結束函數的執行。return語句有兩個作用:一是返回return語句中的值(如果有的話),二是將控制權從被調函數轉移回主調函數。函數的返回值用於初始化調用表達式的結果,之後繼續完成調用所在的表達式的剩餘部分。例如,在main()函數中調用fact(5)時,執行fact的步是創建一個變量n並用實參5初始化,接著執行fact的函數體,直到遇到return ret,此時,返回ret中的值120,並將控制權交回給main()函數。函數調用表達式fact(5)的結果,即返回值120,用來初始化main()函數中的變量val,接著繼續main()函數的執行。5.1.3 函數聲明函數在使用之前必須聲明。一個函數可以在程序中多次聲明。函數定義也可以被用作聲明,但是函數在程序中隻能定義一次。函數聲明由函數返回類型、函數名和形參列表構成。例如: int fact(int n);//階乘函數的聲明在函數聲明中,形參的名字不是必需的,如果有,函數聲明中的形參名也可以和函數定義中的形參名不同,但有意義的參數名可以提高程序的可讀性。例如,求兩點(x1,y1)和(x2,y2)之間的距離的函數distance()的三個不同聲明: //形參有名字,但是不能清晰反映出其用途 double distance(double a, double b, double c, double d); //形參沒有名字,需要額外注釋說明各個參數的作用 double distance(double, double, double, double); //形參的名字能說明數據的含義,有助於理解程序 double distance(double x1, double y1, double x2, double y2);函數名、函數返回類型和形參列表構成了函數原型。函數原型規定了函數的接口,接口描述了調用函數時需要提供的參數的類型和個數,以及函數返回結果的類型。函數原型說明了調用該函數所需的全部信息,函數的用戶對函數接口編程。函數聲明說明了函數的接口,它將函數返回值的類型以及參數的類型和數量告訴編譯器。編譯器根據函數聲明檢查函數調用有沒有提供相應的實參,如何到指定的位置取得返回值。C 允許將一個程序放在多個文件中,分別編譯這些文件,然後將它們鏈接起來。在這種情況下,假如編譯器正在編譯main()函數所在的源文件,而main()函數調用了在另一個源文件中定義的函數func(),此時編譯器不能停下正在進行的編譯工作去訪問另一個文件中的函數代碼。如果調用的函數位於庫中,情況也是如此。如果在調用函數func()的源文件中都事先聲明了該函數,編譯器根據函數原型就可以進行函數調用的檢查了。為了避免同一函數的多次聲明出現不一致,一般將函數聲明放在頭文件中,在定義該函數的源文件和調用該函數的源文件中包含這個頭文件即可。例如下面的三個文件: //---------------------------------------------------------- //頭文件fact.h int fact(int n);//函數聲明 //----------------------------------------------------------
     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部