正常的c c 深层探索索8.3c吗?

||||||||||||||||
当前位置: >
> 东风康明斯C8.3-C215
东风康明斯C8.3-C215
东风康明斯东风康明斯C8.3-C215ESN:系列:6C8.3Model:C8.3-C215EngineConfig:DFuelPump:3926877CPL:CPL1943OriginalBuild:DAR-Darlington(DEP)SO:SO83536Turbocharger:3802651Turbocharger1:3535635Flywheel...
您康明斯发动机的故障还没有解决吗?让帮您分析,
快速找到原因。减少维修时间,降低修理总成本!
如果你需要咨询康明斯配件方面的问题,请通过本站在线客服、QQ或联系电话咨询。
东风康明斯东风康明斯C8.3-C215ESN:系列:6C8.3Model:C8.3-C215EngineConfig:DFuelPump:3926877CPL:CPL1943OriginalBuild:DAR-Darlington(DEP)SO:SO83536Turbocharger:3802651Turbocharger
1:3535635Flywheel housing :3906689Flywheel
:3906809Flywheel
1:3906808Lower:3800558Upper:4025271
如果该商品不是您需要的或者这个说明没能解决您的疑问,请不要离开我们的网站,因为所有康明斯发动机的维修技术以及维修配件,我们都可以为您提供,您也可以在我们网站进行自助查询。
您可以通过以下方法在本网站进行查询:
1.您可以和我们的在线客服或者在线QQ直接进行咨询(在线QQ和联系电话在页面左侧),我们很乐意为您排忧解难,帮助您买到您需要的零件,解答您的维修难题;
2.您可以在我们页面的左上方直接输入您需要的零件号码进行查询,有疑问请和我们的在线客服进行咨询;
3.您看到我们的页面导航了吗? 在页面的最上方。您可以通过我们的类别进行查找,找到您需要的配件,有任何疑问请即时和我们的在线客服联系,或者直接电话过来咨询,我们很高兴接到您的来电;
我们的销售和售后:
我们有专业的技术团队:我们的技术人员都是从事了十年以上的发动机维修,所以你知道的和你不知道的,我们都会为你考虑全面。所以在我们这里购买产品,您完全不用考虑售后,我们是为客户着想,着力为客户解决难题,技术方面我们可以上门服务或者在线咨询、电话咨询服务。我们有强大的销售团队,她们都具备一定的专业知识,可以帮助您买到适合您的零件。可能部分用户自己都不清楚自己的发动机到底是什么故障,所以也不知道自己需要购买什么配件,是换还是修?在我们这里你完全可以放心,我们可以针对您为我们提供的现象,给你诊断您发动机的问题,并为您提供维修服务和提供需要更换的配件。
请通过本站提供的联系方式联系本公司客服,我们将为您分配销售专员为您服务。
还没找到合适的产品吗?请到里寻找更多的产品吧。
康名士客服中心
023-023-023-023-023-023-
本周排行新品推荐最新关注扫一扫下载手机客户端
扫描我,关注团购信息,享更多优惠
||网络安全
| | | | | | | | | | | | | | | |
||电子电工
汽车交通| | | | | | | | | |
||投资理财
| | | | | | | | | | | | | | | | |
| | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
||外语考试
| | | | | | | | |
| 视频教程|
C/C++深层探索[按需印刷]
定价:¥32.00
POD价:¥78.00
促销活动:
?如此书原封面缺失,印刷将采用出版社授权的新封面;
?如电子文件出现问题,可能延长印制周期,我们将提前与您沟通
ISBN:X上架时间:出版日期:2002 年12月开本:16开页码:302版次:1-1
所属分类:
本书试图通过近50节的内容带领读者从各个方面去把握C/C++的语法、语义,并通过分析C/C++编译器生成的汇编代码使读者明白C/C++的某些底层实现,从而更加深入地理解C/C++的概念、规则和不足。
本书没有面面俱到地讲如何使用C/C++语言编程,而是深入剖析了C/C++语言的历史变化、各项特性及底层实现。本书试图引领读者不仅在C/C++语言的范围内学习,而且更侧重于从汇编语言的角度、从编译程序和链接程序的角度去了解、分析C/C++语言。通过本书,希望读者不仅能看清C语言的现在,还会知道C语言的过去,以及把握C语言的未来。
本书适合已经初步掌握了C/C++的语法,希望从一个更深的层次去了解C/C++的读者。
[p align="center">
如果你已经初步掌握了C/C++的语法,开始渴望从一个更深的层次去了解C/C++的一些底层实现,又苦于国内很少有这方面的参考资料,那么,请翻一下这本书吧,你会有所发现的。
现在国内的计算机图书市场上,讲述C语言的书籍数量很多,但其定位主要都是面向初学者,很少能够做到深入剖析语言的历史变化、各项特性及底层实现,更不用说让读者读完之后有一种豁然开朗的感觉。
本书将引领读者不仅仅在C语言的范围内学习C语言,还要从汇编语言的角度、从编译程序和链接程序的角度去了解、分析C语言。通过本书,读者不仅仅会看到C语言的现在,还会知道C语言的过去,以及把握C语言的未来。
C/C++已经有20多年的历史,在这个过程中,编程语言的设计理念有很大的发展,作为使用最广泛的系统编程语言的C,以及作为最主要的编译型面向对象编程语言C++,都在不断变化。如何抓住C/C++的内在脉络,穿过各种表象去把握住语言的真正设计思想,是每一个认真的C/C++程序员将要面对的考验。
这本书是一次尝试。
要达到这个目标,身为作者我必须严肃对待,另外读者也要在阅读过程中不断思考。提问和自己动手寻找答案。这个世界上没有一本书会告诉你所有的事情,让你不用动脑筋光看书就真正学会知识。所以,当你阅读本书碰到困难时,千万不要轻言放弃,那些内容绝对不是你想象中那么难,花时间琢磨一下或许就会柳暗花明。
另外,本书的示例平台是GNU/Linux系统,不是我们常见的Windows系统;编译器是GCC而不是Visual C++或者C++ Builder。 Linux对于相当一部分读者来说可能比较陌生,但考虑到目前我们已经有很多种途径去学习、使用Linux,我还是坚持自己的这个决定。
本书分五大部分:
Part I讲述一些C语言的基本概念;
Part II进一步讲解C语言的一些难点;
Part III为大家分析一些容易被忽略的特性;
Part IV介绍了C语言的最新发展;
Part V对C++作了某种程度的讨论。
虽然我建议大家按部就班地从头开始看,但如果读者对某些章节的内容已经相当熟悉,则可以单独挑出感兴趣的章节进行阅读。
大多数章节都会附有充足详细的注释以帮助读者更加容易地理解正文的内容,具体的格式对应关系很简单,譬如第03节正文第一处需要注释的地方会用“”标记,读者可以在该节后面的“[FN0301]”处找到注释。至于所有建议的参阅资料都可以在附录A中找到对应的条目。
最后,请容许我在这里对下面的人们表示衷心的感谢:
首先是我的父母,在整个写作过程中,他们给予我最多的帮助;其次是曾燕燕女士,她无偿地为我提供了写作过程中需要参考的所有外文资料;易峰、堪贻荣、曹文花、叶红宁、肖颖琳、湛庆延、刘睿和肖涛都在我陷入困境的时候热情地伸出友谊之手。
对本书的所有建议和批评可以发到以下电子邮箱:fred@263.net
同类热销商品¥108.00¥86.40
订单处理配送
北京奥维博世图书发行有限公司 china-pub,All Rights ReservedC/C+语言struct深层探索(zz)1. struct的巨大作用  面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚至大量)进行数据组合的结构体,这些结构体可以将原本意义属于一个整体的数据组合在一起。从某种程度上来说,会不会用struct,怎样用struct是区别一个开发人员是否具备丰富开发经历的标志。
  在网络协议、通信控制、嵌入式系统的C/C++编程中,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。
  经验不足的开发人员往往将所有需要传送的内容依顺序保存在char型数组中,通过指针偏移的方法传送网络报文等信息。这样做编程复杂,易出错,而且一旦控制方式及通信协议有所变化,程序就要进行非常细致的修改。
  一个有经验的开发者则灵活运用结构体,举一个例子,假设网络或控制协议中需要传送三种报文,其格式分别为packetA、packetB、packetC:
struct structA {};
struct structB {};
struct structC{}  优秀的程序设计者这样设计传送的报文:
struct CommuPacket{int iPacketT  //报文类型标志union      //每次传送的是三种报文中的一种,使用union{& struct structA packetA;& struct structB packetB;& struct structC packetC;}};  在进行报文传送时,直接传送struct CommuPacket一个整体。
  假设发送函数的原形如下:
// pSendData:发送字节流的首地址,iLen:要发送的长度Send(char * pSendData, unsigned int& iLen);发送方可以直接进行如下调用发送struct CommuPacket的一个实例sendCommuPacket:Send( (char *)&sendCommuPacket , sizeof(CommuPacket) );假设接收函数的原形如下:// pRecvData:发送字节流的首地址,iLen:要接收的长度//返回值:实际接收到的字节数unsigned int Recv(char * pRecvData, unsigned int& iLen);  接收方可以直接进行如下调用将接收到的数据保存在struct CommuPacket的一个实例recvCommuPacket中:
Recv( (char *)&recvCommuPacket , sizeof(CommuPacket) );  接着判断报文类型进行相应处理:
switch(recvCommuPacket. iPacketType){&&& case PACKET_A:&&& &&&& //A类报文处理&&&&&& case PACKET_B:&&& & & //B类报文处理&&&&&& case PACKET_C:&&& &&& //C类报文处理&&&}  以上程序中最值得注意的是
Send( (char *)&sendCommuPacket , sizeof(CommuPacket) );Recv( (char *)&recvCommuPacket , sizeof(CommuPacket) );  中的强制类型转换:(char *)&sendCommuPacket、(char *)&recvCommuPacket,先取地址,再转化为char型指针,这样就可以直接利用处理字节流的函数。
  利用这种强制类型转化,我们还可以方便程序的编写,例如要对sendCommuPacket所处内存初始化为0,可以这样调用标准库函数memset():
memset((char *)&sendCommuPacket,0, sizeof(CommuPacket));
2. struct的成员对齐  Intel、微软等公司曾经出过一道类似的面试题:
1. #include &iostream.h&
2. #pragma pack(8)3. struct example14. {5.6.7. };
8. struct example29. {10.11. example1 struct1;12.&&& 13. };14. #pragma pack()
15. int main(int argc, char* argv[])16. {17. example2 struct2;
18. cout && sizeof(example1) &&19. cout && sizeof(example2) &&20. cout && (unsigned int)(&struct2.struct1) - (unsigned int)(&struct2) &&
21. return 0;22. }  问程序的输入结果是什么?
  答案是:
  不明白?还是不明白?下面一一道来:
2.1 自然对界
  struct是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如array、struct、union等)的数据单元。对于结构体,编译器会自动进行成员变量的对齐,以提高运算效率。缺省情况下,编译器为结构体的每个成员按其自然对界(natural alignment)条件分配空间。各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。
  自然对界(natural alignment)即默认对齐方式,是指按结构体的成员中size最大的成员对齐。
  例如:
struct naturalalign{};  在上述结构体中,size最大的是short,其长度为2字节,因而结构体中的char成员a、c都以2为单位对齐,sizeof(naturalalign)的结果等于6;
  如果改为:
struct naturalalign{};  其结果显然为12。
2.2指定对界
  一般地,可以通过下面的方法来改变缺省的对界条件:
  & 使用伪指令#pragma pack (n),编译器将按照n个字节对齐;  & 使用伪指令#pragma pack (),取消自定义字节对齐方式。
  注意:如果#pragma pack (n)中指定的n大于结构体中最大成员的size,则其不起作用,结构体仍然按照size最大的成员进行对界。
  例如:
#pragma pack (n)struct naturalalign{};#pragma pack ()  当n为4、8、16时,其对齐方式均一样,sizeof(naturalalign)的结果都等于12。而当n为2时,其发挥了作用,使得sizeof(naturalalign)的结果为8。
  在VC++ 6.0编译器中,我们可以指定其对界方式,其操作方式为依次选择projetct &&setting & C/C++菜单,在struct member alignment中指定你要的对界方式。
  另外,通过__attribute((aligned (n)))也可以让所作用的结构体成员对齐在n字节边界上,但是它较少被使用,因而不作详细讲解。
2.3 面试题的解答
  至此,我们可以对Intel、微软的面试题进行全面的解答。
  程序中第2行#pragma pack (8)虽然指定了对界为8,但是由于struct example1中的成员最大size为4(long变量size为4),故struct example1仍然按4字节对界,struct example1的size为8,即第18行的输出结果;
  struct example2中包含了struct example1,其本身包含的简单数据成员的最大size为2(short变量e),但是因为其包含了struct example1,而struct example1中的最大成员size为4,struct example2也应以4对界,#pragma pack (8)中指定的对界对struct example2也不起作用,故19行的输出结果为16;
  由于struct example2中的成员以4为单位对界,故其char变量c后应补充3个空,其后才是成员struct1的内存空间,20行的输出结果为4。
3. C和C++间struct的深层区别  在C++语言中struct具有了&类& 的功能,其与关键字class的区别在于struct中成员变量和函数的默认访问权限为public,而class的为private。
  例如,定义struct类和class类:
struct structA{&}class classB{&&&&&&&&&& &}  则:
struct Aa.a = 'a';&&& //访问public成员,合法classBb.a = 'a';&&& //访问private成员,不合法  许多文献写到这里就认为已经给出了C++中struct和class的全部区别,实则不然,另外一点需要注意的是:
  C++中的struct保持了对C中struct的全面兼容(这符合C++的初衷&&&a better c&),因而,下面的操作是合法的:
//定义structstruct structA{};structA a = {'a' , 'a' ,1};&&& //& 定义时直接赋初值  即struct可以在定义的时候直接以{ }对其成员变量赋初值,而class则不能,在经典书目《thinking C++ 2nd edition》中作者对此点进行了强调。
4. struct编程注意事项  看看下面的程序:
1. #include &iostream.h&
2. struct structA3. {4. int iM5. char *cM6. };
7. int main(int argc, char* argv[])8. {9. structA instant1,instant2;10.char c = 'a';&&& 11. instant1.iMember = 1;12. instant1.cMember = &c;
13.instant2 = instant1;
14.cout && *(instant1.cMember) &&
15.*(instant2.cMember) = 'b';
16. cout && *(instant1.cMember) &&
17. return 0;}  14行的输出结果是:a  16行的输出结果是:b
  Why?我们在15行对instant2的修改改变了instant1中成员的值!
  原因在于13行的instant2 = instant1赋值语句采用的是变量逐个拷贝,这使得instant1和instant2中的cMember指向了同一片内存,因而对instant2的修改也是对instant1的修改。
  在C语言中,当结构体中存在指针型成员时,一定要注意在采用赋值语句时是否将2个实例中的指针型成员指向了同一片内存。
  在C++语言中,当结构体中存在指针型成员时,我们需要重写struct的拷贝构造函数并进行&=&操作符重载。
本文已收录于以下专栏:
相关文章推荐
转自:struct和typedef struct
分三块来讲述:
  1 首先://注意在C和C++里不同
    在C中定义一个结构体类型要用typedef:
    typedef struct ...
结构(struct)
     结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 
结构中可以使用不同的数据类型。 
    1. 结构说明和结构变量定义 
 &#...
.cn/s/blog_5f70ce.html
c语言规范,定义结构体:
typedef  struct ANSWER_HEADE...
请看下面的结构:
struct MyStruct
    double dda1;
    char 
    int&#160...
作者:宋宝华       出处:PConline1. struct的巨大作用  面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C...
参看:C语言再学习 -- 结构和其他数据形式
参看:c语言中的关键字struct(结构体)的用法
很多同学在初学socket编程的时候,编译书上的第一个例子程序都会遇到这样一个问题,明明头文件都包含了,为什么编译总是报错:
'sockaddr_in' undeclared
'sockaddr'...
结构体与函数:
关于传参,首先:
void func(int);
func(a.b.c);
把结构体中的int成员变量当做和普通int变量一样的东西来使用,是不用脑子就想到的一种方法。
1. 结构的基础知识
跟数组一样是成员的集合,但与数组有很大的区别,结构的元素不能通过下标法来访问,因为各个成员的大小可能不同,但是数组可以,因为数组元素保持一致。
1.1 结构声明
1. struct的巨大作用面对一个人的大型C/C++程序时,只看其对struct的使用情况我们就可以对其编写者的编程经验进行评估。因为一个大型的C/C++程序,势必要涉及一些(甚...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)怀孕39周了,检查时说胎儿头小只8.3C_百度宝宝知道}

我要回帖

更多关于 c primer plus 8.3 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信