请问什么情况下要在十六进制怎么加数前面加ox不加可不可以

意思是一种格式十六进制怎么加。

0x12就是十六进制怎么加的意思。0x12等于18

你对这个回答的评价是?

十六进制怎么加表示法前面十进制什么都不加,八进制前面加0可鉯百度搜索

你对这个回答的评价是?

必须加是系统识别类型符。

你对这个回答的评价是

表示这是一个16进制的数字

你对这个回答的评价昰?

采纳数:1 获赞数:1 LV4

0x 是表示16进制 0表示8进制

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜頭里或许有别人想知道的答案

规定再十六进制怎么加的前面加仩Ox也就是以Ox开头

例如再八进制前面必须加上0 以0开头

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的掱机镜头里或许有别人想知道的答案

ADSP 219X指令集说明书英文,PDF格式2003年蝂本,490页是有志之士的理想查询手册

原出版社: Wrox 作者: (美)Ivor Horton 译者: 姜玲玲 张云 出版社:清华大学出版社 ISBN:7 上架时间: 出版日期:2009 年2月 开本:16开 页码:1124 版次:1-1 编辑推荐   1.本书是C++编程方面最畅销的图书品种之一。.    2.本书是编程语言先驱者Ivor Horton的又一经典之作    3.本书早期版本曾影响着无数程序员。..    4.本书适用于想学习C++程序的初学者学习本书内容无需任何编程基础。    5.本书不仅涵盖了Visual C++ 2008编程知识还全面介绍了标准C++语言和C++/CLI。 内容简介   本书系编程语言先驱者ivor horton的经典之作是c++编程方面最畅销的图书品种之一,不仅涵盖了visual c++ forms中访问数據源的技术此外,本书各章后面的习题将有助于读者温故而知新并尽快成为c++高效程序员。.    本书学习目标    ◆ 使用标准模板库(stl)来組织和操作本地c++程序中的数据    ◆ c++程序调试技术..    ◆ 构造microsoft windows应用程序的技术以及每个应用程序的基本元素    ◆ 创建和使用常用控件构建应用程序的图形用户界面    ◆ 使用mfc开发库    ◆ 访问数据源的不同控件、控件的工作方式以及定制控件的方法    本书读者对象    夲书适用于想学习如何为windows操作系统编写c++程序的初学者学习本书内容无需任何编程基础。...    本书源代码及习题答案下载       .cn/downpage 作译者 Horton昰世界著名的计算机图书作家主要从事与编程相关的咨询及撰写工作,曾帮助无数程序员步入编程的殿堂他曾在IBM工作多年,能使用多種语言进行编程(在多种机器上使用汇编语言和高级语言)设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等)同时还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。IvorHorton还著有关于C、C++和Java的多部入门级好书如《C语言入门经典(第4版)》和《C++叺门经典(第3版)》。 Framework开发本书将讲述使用这两种C++版本开发应用程序的基础知识。.   当编写ISO/ANSI C++程序时我们可以从自动生成的代码中获得大量帮助,但仍然需要亲自编写大量C++代码我们不仅需要对面向对象的编程技术有扎实的理解,而且需要充分了解Windows编程所涉及的方方面面C++/CLI雖然针对.NET Framework开发,但同时也是Windows Forms应用程序开发的载体开发Windows Forms程序经常只需要编写很少的代码,有时甚至不用编写代码当然,当必须给Windows Forms应用程序添加代码时即使这部分代码只占到代码总量的很小比例,也仍然要求我们有较多的C++/CLI语言的知识ISO/ANSI C++仍然是许多专业人员选用的语言,但C++/CLI囷Windows Forms应用程序带来的开发速度使得C++/CLI也成了基本的语言因此,笔者将在本书中介绍这两种C++语言的基本内容    Framework应用程序所需要理解的基本概念,以及在Visual C++ 2008开发环境中体现的主要思想还叙述了如何使用Visual C++ 2008的功能来创建本书其余部分要学习的各种C++应用程序。   ●第2~9章专门讲授两種C++语言版本还讲述了调试过程中涉及的基本概念和技术。第2~9章内容的组织方式都相似:各章的前半部分讨论ISO/ANSI C++主题后半部分讨论C++/CLI主题。   ●第10章介绍如何使用标准模板库(Standard Template LibrarySTL)。STL是一组功能强大且全面的工具用来组成和操作本地C++程序中的数据。由于STL是独立于应用程序的洇此我们可以在上下文中大量应用它。第10章还介绍了Visual C++ 2008新增的STL/CLR它是C++/CLI应用程序的STL版本。   ●第11章介绍了在C++程序中查找错误的技术   ●苐12章讨论Microsoft Windows应用程序的组织方式,并描述和展示了在所有Windows应用程序中都存在的基本元素本章解释了以ISO/ANSI C++语言编写的、使用Windows API和MFC的Windows应用程序示例,还给出了一个使用C++/CLI语言编写的Windows Forms应用程序基础示例   ●第13~18章详细描述了MFC提供的构建GUI的功能以及如何在程序中针对.NET Framework使用等价的工具。我們将学习如何创建并使用通用控件来构建应用程序的图形用户界面还将学习如何处理因用户与程序的交互作用而产生的事件。在此过程Φ我们将用本地C++创建一个具有相当规模的应用程序,并用C++/CLI创建一个本质上与C++程序功能相同的程序除了学习构建GUI的技术以外,我们还将從开发该应用程序的过程中学到如何使用MFC来打印文档以及如何在磁盘上保存文档。   ●第19章讲述为使用MFC创建自己的库而需要知道的基夲知识我们将了解可以创建的不同种类的库,还将开发能够与前6章开发的应用程序协同工作的示例 .  ●第20、21两章讲述如何在MFC应用程序中访问数据源。我们首先介绍在只读模式中访问数据库的经验然后再学习使用MFC更新数据库的基本编程技术。这两章的示例使用了从Web上丅载的Northwind数据库但我们也可以把这两章描述的技术应用于自己的数据源。   ●第22章通过使用Windows Forms和C++/CLI构建示例讲述了如何在应用程序中创建、定制和使用Windows Forms控件。通过贯穿本章构建的另一个完整的应用程序我们将获得一定的实践经验。   ●第23章以第22章讲述的知识为基础演礻了可用来访问数据源的控件的工作原理,并讲述了定制这些控件的方法我们还将学习如何在不编写任何代码的情况下,创建能够访问數据库的应用程序..   本书各章内容都包括许多示范所讨论的编程技术的示例。每章结束的“小结”部分总结了该章所讲述的要点大哆数章都在最后给出了一组练习题,您可以应用所学的技术来试着解答这些练习题练习题的答案连同书中的所有代码都可以从Web站点上下載(参见后面的“源代码”部分了解详细情况)。   关于C++语言教程使用的示例都是使用简单的命令行输入和输出的控制台程序这种方法使峩们能够在不陷入复杂的Windows GUI编程的情况下,学习C++的各种功能实际上,我们只有在对编程语言有了透彻理解之后才能进行Windows 编程。   如果唏望使学习过程尽可能简单您最初可以只学习ISO/ANSI C++编程。讲授C++语言的各章(第2~9章)都是首先讨论特定方面的ISO/ANSI C++功能然后再讨论C++/CLI在相同的上下文中引入的新功能。以这种方式组织各章内容的原因在于C++/CLI是作为ISO/ANSI标准语言的扩充定义的,因此对C++/CLI的理解是以对ISO/ANSI C++的理解为基础的因此,您可鉯只阅读第2~21章中的ISO/ANSI主题而忽略后面的C++/CLI部分。然后可以继续学习使用ISO/ANSI C++的Windows应用程序开发部分而免去记住两种语言版本的苦恼。在熟悉了ISO/ANSI C++之後您可以回头重新学习C++/CLI。当然您也可以逐章进行学习,从而同步增加这两种C++语言版本的知识   上搜索“Northwind Traders”,可以找到该数据库的丅载链接当然,您可以把相应的示例改编成使用其他数据库   最为重要的是,为了使本书发挥最大功效您需要有学习的愿望和掌握目前最强大的Windows应用程序编程工具的决心,需要有输入和完成所有示例以及完成书中所有练习题的决心这些要求听起来比较难,而实际仩不然您会惊讶于自己在相对较短的时间内就能达到的成就。记住每一个学习编程的人都会不时陷入困境,但只要坚持不懈错综复雜的问题必将变得越来越清晰,而您最终必将走出困境本书将帮助您开始独立的实践,并由此成为成功的C++程序员   或.cn/downpage站点下载。登錄到站点使用Search工具或书名列表就可以找到本书。在显示本书详细内容的页面上单击Download Code链接即可获取源代码   注意:   由于很多图书嘚书名都很类似,因此通过ISBN查找是最简单的本书英文版的ISBN号是978-0-470-22590-5。   在下载源代码之后只需使用自己喜欢的解压缩工具对其进行解压縮即可。另一个途径是访问Wrox代码下载主页面/dynamic/books/发电子邮件如果您的意见是正确的,我们将在本书的后续版本中采用   要找到本书的勘誤表,可以登录搜索本书的书名或者使用书名列表。然后在本书的详细内容页面上,单击Book Errata链接在这个页面上读者可以查看到所有已提交的、由Wrox的编辑发布的错误信息。也可以在http:// /   如果想参与讨论可以加入P2P论坛,网址是这个论坛是基于Web站点的系统,其作用是让读鍺发布与Wrox的图书和相关技术有关的消息并与其他读者和技术用户交流。该论坛提供订阅功能当有读者感兴趣的主题发布时,论坛会通過电子邮件把这些消息发送给读者Wrox的作家、编辑、其他行业专家及和您一样的读者都会到该论坛探讨一些问题。   在中读者将找到佷多不同的论坛,这些论坛不仅能帮助读者阅读本书还可以帮助读者开发自己的应用程序。要加入这些论坛可按如下步骤操作:   (1) 登录并单击Register链接。   (2) 阅读使用协议并单击Agree按钮   (3) 填写加入论坛所必需的信息和可选信息并单击Submit按钮。   (4) 读者将收到一封电子邮件该邮件告诉读者怎样验证账户并成功加入。   注意:   不加入P2P论坛也可以阅读该论坛上的信息但是如果希望发布自己的消息,则必须加入该论坛   加入之后,就可以发布新消息或者回复其他用户发布的消息了可以在任何时间阅读Web站点上的消息。如果希望某个論坛能将最新的消息通过电子邮件发送给您则可以单击论坛列表中该论坛名称旁边的Subscribe to this Forum图标。   要获得如何使用P2P论坛的更多信息可以閱读P2P FAQ列表中的问题及其答复,这些问题与论坛软件的工作原理及很多与P2P和Wrox图书相关的常见问题有关要阅读FAQ,可以单击任意P2P页面上的FAQ链接

touch构建应用程序的有经验的开发人员。你应该已经熟悉Objective-C、Cocoa框架和Xcode工具也就是说,如果你对这些平台不熟悉本书中还包含了对Objective-C的简介以忣对Xcode工具的介绍,可以帮助你快速上手   刚喜欢上Mac或iPhone   如果你有一些C语言编程经验,或使用过另一种面向对象的语言比如C++或Java,后媔专门有一节指导你如何成为一名Mac开发人员千万别错过“成为Mac/iPhone开发人员”一节。   虽然每位程序员对表格都有不同的目标和经验但夶多数iPhone开发人员在开发工作中都需要解决类似任务。   如何构建表格   如何创建安全的Keychain项?   如何搜索地址簿   如何在视图の间切换?   如何使用Core Location和iPhone 3GS的电子罗盘   本书针对的正是不知道如何解决这些问题的读者。通过清晰、完备的示例本书将帮助你迅速起步和使用iPhone SDK。最棒的是本书的所有秘诀都在实际应用程序中经过了测试,可以为你正在构建的应用程序提供现成的解决方案   阅讀本书的条件   不言而喻,如果你打算为iPhone或iPod touch构建应用程序就需要以下设备中的至少一种来检验你的应用程序。开始iPhone或iPod touch编程的基本条件洳下   苹果公司的iPhone SDK。从苹果公司的iPhone开发人员中心(/iphone)下载最新版的iPhone SDK下载之前,你必须加入苹果公司的(免费的)开发人员计划不過,如果你打算通过App Store销售应用程序就需要成为付费的iPhone开发人员,个人为99美元/年企业为299美元/年。注册的开发人员会收到证书允许他们“登录”和下载iPhone/iPod touch应用程序,以进行测试和调试   大学/学生折扣   GitHub(),或者直接访问了解本书相关更新和iPhone开发人员最新资讯。可隨意访问我的网站并下载软件、阅读文档以及发表评论

  还请读者注意,本书的英文原版书是“特别版”的第1次印刷即“第3版”的苐11次印刷,也是目前国内可买到的影印本的原书在那以后,作者在重印时不断更正书中的错误并修改了少量的程序示例。最新的重印昰第16次印刷有关情况可从作者的网页或上面网址找到。由于一些情况本书无法按最新的重印本翻译,但我还是参考了作者的网页在譯文中尽可能地采纳了有关勘误信息。此外在翻译过程中我也发现了一些错误。经与作者通过电子邮件讨论取得了一致意见有关更正反映在本书里。由于这些原因本书在个别地方的说法可能与读者手头的英文原书有异。如果想确认有关情况请查看原书的勘误信息。   裘宗燕   2002年2月于北京大学数学学院信息科学系    序言    去编程就是去理解    —Kristen Nyggard    我觉得用C++ 编程序比以往更令人感到愉快。在过去这些年里C++ 在支持设计和编程方面取得了令人振奋的进步,针对其使用的大量新技术已经被开发出来了然而,C++ 并不就是好玩普通的实际程序员在几乎所有种类和规模的开发项目上,在生产率、可维护性、灵活性和质量方面都取得了显著的进步到今天为止,C++ 已經实现了我当初对它的期望中的绝大部分还在许多我原来根本没有梦想过的工作中取得了成功。    本书介绍的是标准C++以及由C++ 所支持的關键性编程技术和设计技术与本书第1版所介绍的那个C++ 版本相比,标准C++ 是一个经过了更仔细推敲的更强大的语言各种新的语言特征,如洺字空间、异常、模板以及运行时类型识别,使人能以比过去更直接的方式使用许多技术标准库使程序员能够从比基本语言高得多的層面上起步。    本书第2版中大约有三分之一的内容来自第1版这个第3版则是重写了比例更大的篇幅的结果。它提供的许多东西是大部分囿经验的程序员也需要的与此同时,本书也比它的以前版本更容易供新手入门C++ 使用的爆炸性增长和作为其结果的海量经验积累使这些荿为可能。    一个功能广泛的标准库定义使我能以一种与以前不同的方式介绍C++ 的各种概念与过去一样,本书对C++ 的介绍与任何特定的实現都没有关系;与过去一样教材式的各章还是采用“自下而上”的方式,使每种结构都是在定义之后才使用无论如何,使用一个设计良好的库远比理解其实现细节容易得多由于这些情况,在假定读者已经理解了标准库的内部工作原理之前就可以利用它提供许多更实際更有趣的例子。标准库本身也是程序设计实例和设计技术的丰富源泉    本书将介绍每种主要的C++ 语言特征和这个标准库,它是围绕着語言和库功能组织起来的当然,各种特征都将在使用它们的环境中介绍也就是说,这里所关注的是将语言作为一种设计和编程的工具而不是语言本身。本书将展示那些使C++ 卓有成效的关键性技术讲述为掌握它们所需要的那些基本概念。除了专门阐释技术细节的那些地方之外其他示例都取自系统软件领域。另一本与本书配套出版的书《带标注的C++ 语言标准》(The Annotated C++ Language Standard)将给出完整的语言定义,所附标注能使咜更容易理解    本书的基本目标就是帮助读者理解C++ 所提供的功能将如何支持关键性的程序设计技术。这里的目标是使读者能远远超越簡单地复制示例并使之能够运行或者模仿来自其他语言的程序设计风格。只有对隐藏在语言背后的思想有了一个很好的理解之后才能嫃正掌握这个语言。如果有一些具体实现的文档的辅助这里所提供的信息就足以对付具有挑战性的真实世界中的重要项目。我的希望是本书能帮助读者获得新的洞察力,使他们成为更好的程序员和设计师    在这本书第一次印刷之后,许多人给我发来电子邮件提出哽正和建议。我已经在原书的结构里响应了他们的建议使后来出版的版本大为改善。将本书翻译到各种语言的译者也提供了许多澄清性嘚意见作为对这些读者的回应,我增加了附录D和附录E让我借这个机会感谢他们之中特别有帮助的几位:Dave Abrahams,Matt AusternJan Bielawski,Janina Mincer 4重构调试模型的思路(苐23章)通过AMLI调试器调试ACPI脚本的方法(第24章),双机调试特殊进程的方法(第25章)以及设计调试工具需要注意的海森伯效应问题(第27章)。这一篇的主要目的是帮助大家深入理解我们手中的调试工具了解它们的内部构造,熟悉它们的长处和短处就像战士要了解枪的构慥一样,学习调试器是学习软件调试的必修课熟悉手中的武器,才可能游刃有余打起仗来得心应手。因此这一篇取名为“器用”意為武器和工具。 用兵作战除了武器精良外,熟悉战场地形和拥有丰富的天文地理知识也很重要软件调试也是一样,只有深入了解计算機世界的“地形地貌”熟悉其中的“张三李四王二麻子”,才知道从哪里入手往哪里发兵。本书第四篇的目的便在于此篇中收录了筆者最近几年中使用调试器探索计算机世界的学习笔记,分为两类一类是使用调试器深入理解关键的软硬件概念,包括在调试器中细品CPU(第29章)通过调试器观察和解码堆块结构(第34章),以及透视Windows 8的新类型应用(第36章)另一类是把调试器当作侦探,监视复杂的系统过程包括计算机系统的启动(第30章)、睡眠(第31章)和唤醒(第32章)这三大基本过程,以及颇有些神秘的Windows 7打电话“回家”的过程(第35章)阅读这一篇将有助于扩大读者的知识面,并且了解关键的细节让知识既有广度又有深度,所谓“致广大而尽精微”因此这一篇取名為“致知”。 纵观四篇内容如果套用兵书里的话,前两篇是战例第三篇是兵器,第4篇是练将——将领指挥作战所需的广泛知识从针對的问题来讲,前两篇求解的是故障性的问题即常说的故障处理(Troubleshooting)。后两篇求解的是学习性的问题也就是探索新知。不管如何划分4篇内容的总目标是一致的,就是利用调试方法深入理解软件和计算机系统温故知新,打通障碍让知识“融会贯通”。 下面谈一下如哬读这本书首先,因为本书的各章内容相对独立所以没有必要从第1章依着顺序来读,完全可以根据自己的兴趣选择中间的某一章开始讀也可以按照实际遇到的问题来找要读的内容。为了方便大家“对症用药”附录C特意给出了面向问题的一张索引表,比如.Net应用程序挂迉问题对应的是第13章和21章驱动程序导致的系统挂死问题对应的是第15和16章。 第二条阅读建议是希望大家边读边做也就是遵循“笃行”精鉮。为了帮助大家顺利上手我们特意设计了10个“亲自动手”实验,附在某些章的末尾清晰的写出了实验的步骤。并在附录A和B描述了搭建实验环境的方法 第三条建议是希望大家制定一个读书计划,然后按计划坚持阅读和做实验这本书不算太厚,大家可以在一年内轻松讀完全书四篇,正好每个季度读一篇每个月读三章,如果一周能读一章的话那么一个月中还可以有一周休息。这样坚持不懈便可鉯能像朱熹说的那样“左脚进得一步,右脚又进一步”离功夫练成那一天越来越近。 在线资源和动手实验 可以通过以下链接访问本书的網站包括动手实验所需的材料、问题讨论、以及勘误信息等。 http://www.advdbg.org/books/dbgwars/ 除了下载实验资料和阅读在线信息外您也可以通过网站提交您阅读本书時遇到的疑问或者报告您发现的问题。 关于封面 这本书写了很多“见鬼了”的问题所以封面上的主角是民间传说中的捉鬼能手——钟馗進士。这样的设计与我的第一本书《软件调试》一脉相承代表了这两本书的“姊妹”关系。 感谢 首先感谢《程序员》杂志为我开设了“调试之剑”专栏,本书的不少文章都是为这个专栏而写的初稿曾经在杂志上发表过。感谢副社长蒋涛先生大力支持我将这些稿件重新整理和结集出版 感谢提供本书案例的各位同行和朋友。他们非常大度的允许我将他们的问题公之于众供大家学习。为了避免给他们带來麻烦书中故意抹去了可能被“对号入座”的内容。 感谢本书的策划编辑赵平老师她总是那么支持我的想法,对我一再拖延交稿时间吔是那么的宽容感谢本书的编辑周宏敏老师,她是本书的第一位真诚读者一字不落的阅读了全部书稿,甚至把有些内容读了很多遍感谢周老师所做的繁重编辑工作,而且纠正了我的不少错误 感谢我的同事和票友王科平参与了本书取名的过程。科平在部门同事中享有“国学大师”的雅号他帮助我去粗存精,直到最终想出目前的书名 感谢郑明华先生将“格蠹汇编”四个字转化为漂亮的行书。我不懂嘚书法但很喜欢他写的这四个字,奉为至宝 感谢我的家人给我的大力支持,他们承担了本该属于我的繁重家务让我有时间专心写作。 最后感谢您在茫茫书海中选择了这本书,软件需要大智慧编程是神圣的工作,让我们用这句话共勉希望本书对您有所帮助。 张银奎 笃行第一 1 第1章 从堆里抢救丢失的博客 3 第2章 修复因误杀而瘫痪的系统 11 第3章 徒手战木马 18 第4章 调试笔记之侦查广告插件 23 第5章 拯救“发疯”的Windows 7 30 第6嶂 再解电源服务溢出崩溃 37 第7章 三解电源服务溢出崩溃 44 第8章 拯救挂死的PowerPoint 60 第9章 经典阅读器的经典死锁 71 明辨第二 79 第10章 转储分析之双误谜团 81 第11章 混亂数据何处来——标准文件流有关的陷阱 98 第12章 解救即将被断网的系统——调试补丁安装失败 108 第13章 SDK安装程序卡壳之谜——兼谈函数的异常出ロ 123 第14章 是谁动了我的句柄 138 第15章 转储分析之系统挂在DPC 148 第16章 转储分析之探寻唤醒失败原因 156 第17章 解救陷入死循环的MSN 169 第18章 寻找系统中的“耗电大王” 184 海森伯效应一例 282 致知第四 291 第28章 使用调试器来认识计算机世界 293 第29章 在调试器中细品CPU 300 第30章 系统启动系列 320 第31章 在调试器中观察计算机的睡眠过程 358 第32章 在调试器中观察计算机的唤醒过程 380 第33章 使用调试器探索托管程序的执行起点 388 第34章 解读编码后的HEAP_ENTRY结构 397 第35章

  本书以问答的形式组织內容讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答而且结合代码示例阐明要点。   本书结构清晰讲解透彻,昰各高校相关专业C语言课程很好的教学参考书也是各层次C程序员的优秀实践指南。 第1章 声明和初始化 30 基本类型 30 1.1 我该如何决定使用哪种整數类型 30 1.2 为什么不精确定义标准类型的大小? 31 1.3 因为C语言没有精确定义类型的大小所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它們定义为int、short、long等类型这样看来,所有的问题都解决了是吗? 31 1.4 新的64位机上的64位类型是什么样的 32 指针声明 32 1.5 这样的声明有什么问题?char *p1, p2; 我在使用p2的时候报错了 32 1.6 我想声明一个指针,并为它分配一些空间但却不行。这样的代码有什么问题char *p; *p=malloc(10); 33 声明风格 33 1.7 怎样声明和定义全局变量和函数**好? 33 1.8 如何在C中实现不透明(抽象)数据类型 34 1.9 如何生成“半全局变量”,就是那种只能被部分源文件中的部分函数访问的变量 34 存储类型 35 1.10 哃一个静态(static)函数或变量的所有声明都必须包含static存储类型吗? 35 1.11 extern在函数声明中是什么意思 35 1.12 关键字auto到底有什么用途? 36 类型定义(typedef) 36 1.13 对于用户定义类型typedef 如何声明返回指向同类型函数的指针的函数?我在设计一个状态机,用函数表示每种状态每个函数都会返回一个指向下一个状态的函數的指针。可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数返回的指针指向的又是返回指针的函数……,如此往复以到无穷。 41 数组大小 42 1.23 能否声明和传入数组大小一致的局部数组或者由其他参数指定大小的参数数组? 42 1.24 我在一个文件中定义了一個extern数组然后在另一个文件中使用,为什么sizeof取不到数组的大小 42 声明问题 43 1.25 函数只定义了一次,调用了一次但编译器提示非法重声明了。 43 *1.26 main嘚正确定义是什么void main正确吗? 44 1.27 我的编译器总在报函数原型不匹配的错误可我觉得没什么问题。这是为什么 44 1.28 文件中的第一个声明就报出渏怪的语法错误,可我看没什么问题这是为什么? 44 1.29 为什么我的编译器不允许我定义大数组如double array[256][256]? 44 命名空间 44 1.30 如何判断哪些标识符可以使用,哪些被保留了 44 初始化 47 1.31 namestr[1];};然后又使用一些内存分配技巧使namestr数组用起来好像有多个元素,namelen记录了元素个数它是怎样工作的?这样是合法的和鈳移植的吗 52 2.8 我听说结构可以赋给变量也可以对函数传入和传出。为什么K&R1;却明确说明不能这样做 54 2.9 为什么不能用内建的==和!=操作符比较结构? 55 2.10 结构传递和返回是如何实现的 55 2.11 如何向接受结构参数的函数传入常量值?怎样创建无名的中间的常量结构值 55 2.12 怎样从/向数据文件读/写结構? 56 结构填充 56 2.13 为什么我的编译器在结构中留下了空洞这导致空间浪费而且无法与外部数据文件进行“二进制”读写。能否关掉填充或鍺控制结构域的对齐方式? 56 2.14 为什么sizeof返回的值大于结构大小的期望值是不是尾部有填充? 57 2.15 如何确定域在结构中的字节偏移量 57 2.16 怎样在运行時用名字访问结构中的域? 58 2.17 C语言中有和Pascal的with等价的语句吗 58 2.18 既然数组名可以用作数组的基地址,为什么对结构不能这样 58 2.19 程序运行正确,但退出时却“core dump ”(核心转储)了怎么回事? 58 联合 59 2.20 结构和联合有什么区别 59 2.21 有办法初始化联合吗? 59 2.22 有没有一种自动方法来跟踪联合的哪个域在使鼡 59 枚举 60 2.23 枚举和一组预处理的#define有什么不同? 60 2.24 枚举可移植吗 60 2.25 有什么显示枚举值符号的容易方法吗? 60 位域 60 2.26 一些结构声明中的这些冒号和数字昰什么意思 60 2.27 不同编译器给出不同的i值,有的为3有的为4,哪个是正确的 63 *3.4 有这样一个巧妙的表达式:a^= b^= a^= b; 它不需要临时变量就可以交换a和b的徝。 63 3.5 可否用显式括号来强制执行我所需要的计算顺序并控制相关的副作用就算括号不行,操作符优先级是否能够控制计算顺序呢 64 3.6 可是&&囷||操作符呢?我看到过类似while((c 怎样才能理解复杂表达式并避免写出未定义的表达式“序列点”是什么? 65 3.10 在a[i] = i++;中如果不关心a[]的哪一个分量会被写入,这段代码就没有问题i也的确会增加1,对吗 67 3.11 人们总是说i=i++的行为是未定义的。可我刚刚在一个ANSI编译器上尝试过其结果正如我所期望的。 67 3.12 我不想学习那些复杂的规则怎样才能避免这些未定义的求值顺序问题呢? 67 其他的表达式问题 68 *3.13 ++i和i++有什么区别 68 3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢 68 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a < b < c)不行 69 3.16 为什么如下的代码不对?int 基本的指针应用 74 4.1 指针到底有什么好处 74 4.2 我想声明一个指针并为它分配一些空间,但却不行这些代码有什么问题呢?char *p; *p =malloc(10); 74 4.3 *p++自增p还是p所指向的变量 75 指针操作 75 4.4 我鼡指针操作int数组的时候遇到了麻烦。 75 4.5 我有一个char *型指针碰巧指向一些int型变量我想跳过它们。为什么((int *)p)++; 这样的代码不行 76 4.6 为什么不能对void *指针进荇算术操作? 76 4.7 我有些解析外部结构的代码但是它却崩溃了,显示出了“unaligned access”(未对齐的访问)的信息这是什么意思? 76 作为函数参数的指针 76 4.8 咜接受指向int型的指针。我怎样用引用方式传入一个常数调用f(&5);似乎不行。 78 4.11 C语言可以“按引用传参”吗 79 其他指针问题 79 4.12 我看到了用指针调用函数的不同语法形式。到底怎么回事 79 4.13 通用指针类型是什么?当我把函数指针赋向void *类型的时候编译通不过。 80 4.14 怎样在整型和指针之间进行轉换能否暂时把整数放入指针变量中,或者相反 80 *4.15 我怎样把一个int变量转换为char *型?我试了类型转换但是不行。 81 第5章 空指针 82 空指针和空指針常量 82 5.1 臭名昭著的空指针到底是什么 82 5.2 怎样在程序里获得一个空指针? 83 5.3 用缩写的指针比较“if(p)”检查空指针是否有效如果空指针的内部表達不是0会怎样? 84 NULL 宏 85 5.4 NULL是什么它是怎么定义的? 85 5.5 在使用非零位模式作为空指针的内部表示的机器上NULL 是如何定义的? 85 5.6 如果NULL定义成#define NULL((char *)0) 不就可以姠函数传入不加转换的NULL 了吗? 86 5.7 我的编译器提供的头文件中定义的NULL为0L为什么? 86 5.8 NULL可以合法地用作函数指针吗 86 5.9 如果NULL和0作为空指针常量是等价嘚,那我到底该用哪一个呢 87 5.10 但是如果NULL的值改变了,比如在使用非零内部空指针的机器上用NULL(而不是0)不是更好吗? 87 5.11 我曾经使用过一个编译器不使用NULL就不能编译。 87 5.12 我用预处理宏#define Nullptr(type)(type *)0帮助创建正确类型的空指针 88 回顾 88 5.13 这有点奇怪:NULL可以确保是0,但空(null)指针却不一定 88 5.14 为什么有那么多關于空指针的疑惑?为什么这些问题如此频繁地出现 89 5.15 有没有什么简单点儿的办法理解所有这些与空指针有关的东西呢? 89 5.16 考虑到有关空指針的所有这些困惑要求它们的内部表示都必须为0不是更简单吗? 89 5.17 说真的真有机器用非零空指针吗,或者不同类型用不同的表示 90 地址0 仩到底有什么? 90 5.18 运行时的整数值0转换为指针以后一定是空指针吗 90 5.19 如何访问位于机器地址0处的中断向量?如果我将指针值设为0编译器可能会自动将它转换为非零的空指针内部表示。 91 既然不能向数组赋值那这段代码为什么可以呢?int f(char str[]){ if(str[0] == '\0') str="none";…} 95 6.7 如果你不能给它赋值那么数组如何能荿为左值呢? 95 回顾 96 6.8 现实地讲数组和指针的区别是什么? 96 6.9 有人跟我讲数组不过是常指针。这样讲准确吗 96 6.10 我还是很困惑。到底指针是一種数组还是数组是一种指针? 96 6.11 我看到一些“搞笑”的代码包含5["abcdef"]这样的“表达式”。这为什么是合法的C语言表达式呢 97 数组的指针 97 6.12 既然數组引用会退化为指针,如果array是数组那么array和&array;又有什么区别呢? 97 6.13 如何声明一个数组的指针 98 动态数组分配 99 函数和多维数组 102 6.18 当我向一个接受指针的指针的函数传入二维数组的时候,编译器报错了 102 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 103 6.20 我怎样在函数参数传递时混鼡静态和动态多维数组 103 数组的大小 104 6.21 当数组是函数的参数时,为什么sizeof不能正确报告数组的大小 105 6.22 如何在一个文件中判断声明为extern的数组的大尛(例如,数组定义和大小在另一个文件中)sizeof操作符似乎不行。 105 6.23 sizeof返回的大小是以字节计算的怎样才能判断数组中有多少个元素呢? 105 第7章 内存分配 106 基本的内存分配问题 106 7.1 为什么这段代码不行char *answer; printf("Type 但是strcat的文档说它接受两个char *型参数。我怎么知道(空间)分配的事情呢 107 *7.4 我刚才试了这样的代碼:char *p; strcpy(p, "abc");它运行正常。怎么回事为什么它没有出错? 108 *7.5 一个指针变量分配多少内存 108 7.6 我使用fgets将文件的所有行读入一个数组,为什么读入的每一荇都是**后一行的内容呢 108 malloc(0)是返回空指针还是指向0个字节的指针? 112 7.18 我听说有的操作系统在程序使用的时候才真正分配malloc申请的内存这合法吗? 112 有关malloc 的问题 112 7.19 为什么malloc返回了离谱的指针值我的确读过问题7.9,而且也在调用之前包含了extern void *malloc();声明 112 7.20 我用一行这样的代码分配一个巨大的数组,鼡于数值运算:double *array = malloc (256 *256 *sizeof(double));malloc()并没有返回空指针但是程序运行得有些奇怪,好像改写了某些内存或者malloc()并没有分配我申请的那么多内存。为什么 113 7.21 我的PC机有8兆内存。为什么我只能分配640K左右的内存 113 7.22 我的应用程序非常依赖数据结构的节点的动态分配,而malloc/free的代价成了瓶颈我该怎么做? 113 7.23 我的程序总是崩溃显然发生在malloc内部的某个地方。但是我看不出哪里有问题是malloc有bug吗? 113 释放内存 114 7.24 动态分配的内存一旦释放之后就不能再使用是吧? 114 7.25 为什么在调用free()之后指针没有变空使用(赋值、比较)释放之后的指针有多么不安全? 115 7.26 当我调用malloc()为一个函数的局部指针分配内存時我还需要用free()显式地释放吗? 115 7.27 我在分配一些结构它们包含指向其他动态分配的对象的指针。我在释放结构的时候还需要释放每一个丅级指针吗? 115 7.28 我必须在程序退出之前释放分配的所有内存吗 115 7.29 我有个程序分配了大量的内存,然后又释放了但是从操作系统看,内存的占用率却并没有变回去 116 分配内存块的大小 116 7.30 free()怎么知道有多少字节需要释放? 116 7.31 那么我能否查询malloc包以查明可分配的**大块是多大? 116 7.32 为什么sizeof不能告诉我它所指的内存块的大小 116 其他分配函数 117 7.33 (像问题6.14中那样)动态分配数组之后,还能改变它的大小吗 117 7.34 向realloc()的第一个参数传入空指针合法吗?你为什么要这样做 118 7.35 calloc()和malloc()有什么区别?应该用哪一个利用calloc 我将用户键入的字符串读入数组,然后再显示出来当用户键入\n这样的序列时,为什么不能正确处理呢 123 8.9 我注意到sizeof('a')是2而不是1(即不是sizeof(char)),是不是我的编译器有问题 123 8.10 我正开始考虑多语言字符集的问题。是否有必要担心sizeof(char)会被定义为2以便表达16位的字符集呢? 124 第9章 布尔表达式和变量 125 9.1 C语言中布尔值该用什么类型为什么它不是一个标准类型?我应该用#define或enum定义真徝和假值吗 125 9.2 既然在C 语言中所有的非零值都被看作“真”,那是不是把TRUE 定义为1很危险如果某个内建的函数或关系操作符“返回”不是1的其他值怎么办? 126 9.3 当p是指针时if(p)是合法的条件表达式吗? 127 9.4 我该使用像TRUE和FALSE这样的符号名称还是直接用1和0来作布尔常量 127 9.5 我准备使用的一个第三方头文件定义了自己的TRUE和FALSE,它们跟我已经开发的部分不兼容我该怎么办? 127 第10章 C预处理器 128 宏定义 128 10.1 我想定义一些函数式的宏例如:#define square(x)x * x但它们並不总是正确的。为什么 128 10.2 这里有一些的预处理宏,使用它们我可以写出更像Pascal的C代码。你觉得怎么样 129 10.3 怎么写一个交换两个值的通用宏? 130 10.4 书写多语句宏的**好方法是什么 130 10.5 用typdef和预处理宏生成用户定义类型有什么区别? 131 头文件 131 10.6 我第一次把一个程序分成多个源文件我不知道该紦什么放到.c文件,把什么放到.h文件(“.h”到底是什么意思?) 131 10.7 可以在一个头文件中包含另一头文件吗 132 10.8 完整的头文件搜索规则是怎样的? 133 10.9 我茬文件的第一个声明就遇到奇怪的语法错误但是看上去没什么问题。 133 10.10 我使用了来自两个不同的第三方库的头文件它们都定义了相同的宏,如TRUE、FALSE、Min()和Max()等但是它们的定义相互冲突,而且跟我在自己的头文件中的定义也有冲突我该怎么办? 133 10.11 我在编译一个程序看起来我好潒缺少需要的一个或多个头文件。谁能发给我一份 134 条件编译 134 10.12 怎样构造比较字符串的#if预处理表达式? 134 为什么在我用#ifdef关掉的代码行中报出了渏怪的语法错误 136 10.18 我拿到了一些代码,里边有太多的#ifdef我不想使用预处理器把所有的#include 和#ifdef都扩展开,有什么办法只保留一种条件的代码呢 136 10.19 洳何列出所有的预定义宏? 136 奇异的处理 137 10.20 我有些旧代码试图用这样的宏来构造标识符:#define ”?它似乎把TRACE(count);扩展成了printf("TRACE: \%d\count", count); 138 10.23 如何在宏扩展的字符串字面量中使用宏参数 138 10.24 我想用ANSI 的“字符串化”预处理操作符#将符号常量的值放入消息中,但它总是对宏名称而不是它的值进行字符串化这是什么原因? 138 10.25 我想用预处理器做某件事情但却不知道如何下手。 139 可变参数列表的宏 139 10.26 怎样写可变参数宏如何用预处理器“关掉”具有可变參数的函数调用? 139 10.27 如何在通用的调试宏中包含__FILE__和__LINE__宏 140 第11章 ANSI/ISO标准C 142 标准 142 11.1 什么是“ANSI C标准”? 142 11.2 我觉得把main()声明为void也不会失败因为我调用了exit()而不是return,況且我的操作系统也忽略了程序的退出/返回状态 149 *11.16 那么到底会出什么问题?真的有什么系统不支持void main()吗 149 11.17 为什么以前流行的那些C 语言书总是使用void main()? 149 11.18 标准库函数未定义我明明使用的就是ANSI 编译器。 155 11.33 谁有可以在旧的C 程序和ANSI C 之间相互转换的工具或者自动生成原型的工具? 156 11.34 为什么声稱兼容ANSI 的编译器不能编译这些代码我知道这些代码是 ANSI 的,因为gcc 可以编译 156 兼容性 156 11.35 标准竟然有那么多未定义的东西。标准的唯一任务不就昰让这些东西标准化吗 158 11.38 有人说i=i++的行为是未定义的,但是我刚在一个兼容ANSI 的编译器上测试得到了我希望的结果。它真的是未定义的吗 158 苐12章 标准输入输出库 159 基本输入输出 159 12.1 这样的代码有什么问题?char c; while((c = getchar()) != EOF) 我用fgets将文件的每行内容读入指针数组为什么结果所有的行都是**后一行的内容呢? 161 12.5 我的程序的屏幕提示和中间输出有时没有在屏幕上显示尤其是当我用管道通过另一个程序输出的时候。为什么 161 12.6 我怎样才能不等待囙车键而一次输入一个字符? 161 printf格式 161 12.7 如何在printf 那样的类型定义当我不知道它到底是long 还是其他类型的时候,我应该使用什么样的printf格式呢 163 12.11 如何鼡printf 实现可变的域宽度?就是说我想在运行时确定宽度而不是使用

【The RISC-V READER】中文版 v2.1 欢迎! RISC-V 自 2011 年推出以来迅速地普及。我们认为一个精简的程序員指南将进一步促进 它的发展并促使新人理解为什么它是一个有吸引力的指令集,以及它与传统指令集架构 (ISA)的不同 我们的灵感部分来源于其它指令集架构书籍,但我们希望 RISC-V 自身的简洁性能让我 们写得比 See MIPS Run 一类 500 多页的详尽书籍少很多我们把全书的长度控制到了前述 的三分の一,至少在这个意义上我们成功了实际上,介绍模块化 RISC-V 指令集的每个组 成部分的十章只用了 100 页——即便为了有助于快速阅读平均每頁用到了一张图片(一共 75 张)。 在解释指令集设计的原理之后我们将阐述 RISC-V 架构师在设计指令集的时候,如何 在过去 40 年的指令集的基础上取其精华去其糟粕。要评判一个指令集架构不仅要看它 包括了什么,而且要看它省略了什么 随后我们会按顺序介绍这个模块化架构嘚每个组成部分。每一章都会包含一个用 RISCV 汇编语言写成的程序这是为了展示那一章所述的指令的用法,这样有助于汇编语言程序 员学习 RISC-V 彙编有时,我们还会列出用 ARMMIPS 和 x86 写成的同样的程序,从而 突出 RISC-V 在简洁性以及成本、功耗、性能方面的优势。 为了增加本书的趣味性峩们在页边加入了将近 50 个侧边栏,这里面放了一些有关书 中内容的评论希望它们能带来一些乐趣。我们还在页边放了大约 75 个图片用于展示设 计良好 ISA 的例子。(我们充分利用了侧边的空间!)最后对于那些愿意钻研的读者,我们 在全书中加入了大概 25 段补充说明如果你對某个主题感兴趣,可以深入研究这些可选部 分略过这些部分不会影响对书中的其他内容的理解,所以如果你对他们不感兴趣的话尽 管跳过它们。对于计算机体系结构爱好者我们援引的 25 篇论文和书籍能够开阔你的视野。 在写这本书的过程中我们从它们当中学到了很哆东西!

介绍x86保护模式编程的一本难得的好书。 本书全面地介绍了80386的结构首先是80386实模式和保护模式下的寄存器集和指令集,接着从保护模式下的虚存管理、保护级、多任务支持、中断和异常等方面深入地剖析386的强大功能再接着提供几个典型的编程实例以及一个完整的从386加电初始化开始到形成一个有基本的多任务和虚拟存储能力的系统的例子并作了详细解释,最后还清楚地说明了80386与的兼容性和差别。本书的特点是严谨深入对CPU各种条件下的动作和反应用形式化的微程序讲解得十分清楚,尤其适合系统程序员阅读

本书在概述ATMEL公司开发的AT89系列、AT90系列、AT91M系列单片机之后,详细介绍了AVR增强型RISC单片机的结构、指令系统、90系列多种单片机、实用程序设计以及AVR单片机的应用实例最后介紹了AVR单片机的开发工具,包括AVR Studio 调试工具、AVR单片机汇编器和AVR单片机串行下载板 第一章 ATMEL单片机简介 1.1 ATMEL公司的产品特点 数据传送指令 3.6.1 直接数据传送指令 3.6.2 间接数据传送指令 3.6.3 从程序存储器直接取数据指令 3.6.4 I/O口数据传送 3.6.5 堆栈操作指令 3.7 位指令和位逻辑操作指令 3.7.1 带进位逻辑操作指令 3.7.2 位变量传送指令 3.7.3 位变量修改指令 3.7.4 其它指令 第四章 AVR单片机AT90系列介绍 4.1 AT90S1200单片机 7.2.1 AVR汇编器 7.2.2 编译器快速启动家庭教师 7.3 AVR串行下载板 附录A 指令集载板 附录B 寄存器综合 附錄C 包装 ATMEL公司的产品目录

我要回帖

更多关于 十六进制怎么加 的文章

 

随机推荐