C专家编程--笔记

C专家编程--笔记

ID:41033164

大小:124.00 KB

页数:5页

时间:2019-08-14

C专家编程--笔记_第1页
C专家编程--笔记_第2页
C专家编程--笔记_第3页
C专家编程--笔记_第4页
C专家编程--笔记_第5页
资源描述:

《C专家编程--笔记》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1.9阅读ACSIC标准,寻找乐趣和裨益1.参数传递过程类似于赋值。赋值合法条件:两个操作数都是指向有限定符或无限定符的相容类型指针。左边指针指向的类型必须具有右边指针所指向类型的全部限定符。例如:char*cp;constchar*cpp;cpp=cp;左操作数是一个指向有const限定符的char指针。右操作数是一个指向没有限定符的char指针。char类型与char类型是相容的,左操作数所指向的类型具有右操作数所指向类型的限定符(无),再加上自身的限定符(const)。2.constchar**p与char**cpp之间

2、不能相互赋值。总结:非指针数据之间相互赋值。const可以赋值给非const变量。反过来则不可以。chara;constcharb;a=b//OK;b=a//error指针数据类型之间相互赋值。A.首先看这2个指针本身数据类型是否一致(是否遵循数据类型隐式转换规则,遵循则可以赋值const可以赋值给非const),constchar*a;char*b;指针a(字符指针)与指针b(字符指针)之间可以相互赋值,编译时可能会产生警告但不会产生错误。但b=a会产生警告(丢失指针目标类型的限定)。B.若A满足条件,再看指针所指向的数据类

3、型是否一致,或则遵循1所描述的规则(逆隐式转换规则)。constchar**a;char**b;a=b;//waring指针类型不相容b=a;//waring指针类型不相容*a=*b;//OK*b=*a;//waring丢失指针目标类型的限定**a=**b;//error**b=**a;//OKconstchar*c;char*constd;char*e;c=d;//OK--经典例子,理解d=c;//error*c=*d;//error*d=*c;//OKc=e;//OKe=c;//waring丢失指针目标类型的限定*c=*e

4、;//error*e=*c;//OKd=e;//errore=d;//OK*d=*e;//OK*e=*d;//OKconstcharcca;charca;ca=cca;//OKcca=ca;//error3.关键字const不等于常量,表示这个变量不能被赋值,但不能防止通过程序内部的方法来修改这个值。1.10“安静的改变“究竟有多少安静1.字符和整型(整型升级)如果int可以完整表示源类型的所有值,那么该源类型就转换为int,否则转换为unsignedint。2.寻常算术转换许多操作数类型为算术类型的双目运算符会引发转换,并以

5、类似的方式产生结果类型。它的目的是产生一个普通类型,同时也是算术运算结果的类型。当执行算术运算时,操作书的类型如果不同,就会发生转换。数据类型朝着浮点精度更高,长度更长的方向转换。#includeintmain(){intd=-1;unsignedinta=2;if(d<=sizeof(int))printf("true");elseprintf("false");if(d<=a)printf("true");elseprintf("false");if(d<=2)printf("true

6、");elseprintf("false");return0;}结果:falsefalsetrue分析:sizeof(int)为unsgined类型,而d为int型,int型的数据范围4,所以结果为false。1.11轻松一下--由编译器定义的Pramgmas效果2.2.2相邻的字符串常量将被自动合并成一个字符串。printf("duan""long""fei");=printf("duanlongfei");2.2.3太多的缺省可见性定义C函数时

7、,在缺省情况下函数的名字是全局可见的。2.3误做之过static在函数内部,表示该变量的值在各个调用间保持延续性在函数这一级,表示该函数只对本文件可见extern用于函数定义,表示全局可见用于变量,表示在其它地方定义C语言声明的优先级规则A声明从它的名字开始读取,然后安照优先级的顺序依此读取。B优先级从高到低依次是:B.1声明中被括号括起来的那部分。B.2后缀操作符:括号()表示这是一个函数,而[]表示这是一个数组。B.3前缀操作符:*号表示"指向...的指针"C如果const或volatile关键字后面紧跟类型说明符(int

8、.long等),那么它作用子类型说明符。在其它情况下,const或volatile关键字作用于它左边紧邻的指针星号。3.6typedef与#define的区别A.宏#define可以用其它类型说明符对其进行扩展,但typedef却不块。例如:#definepeachintun

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。