C语言深度解剖.docx

C语言深度解剖.docx

ID:49240961

大小:73.85 KB

页数:59页

时间:2020-02-28

C语言深度解剖.docx_第1页
C语言深度解剖.docx_第2页
C语言深度解剖.docx_第3页
C语言深度解剖.docx_第4页
C语言深度解剖.docx_第5页
资源描述:

《C语言深度解剖.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言深度解剖第一章:关键字1.1定义声明Inti;定义创建了对象并为这个对象分配了内存Externinti;声明没有分配内存。1.2auto在缺省的时候,编译器默认所以的变量都是auto的。自动变量1.3register声明寄存器变量Register:这个关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。(cpu:皇帝,寄存器:太监,内存:大臣,不考虑CPU的高速缓存区cache)寄存器的存取速度比内存块得多。但在使用register修饰符也有些限制的:register变量必须是能被CPU寄存器所接

2、受的类型。这就意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度,而且register变量可能不存放在内存中,所以不能用取地址运算符“&”来获取register变量的地址。1.4static关键字2个作用:修饰变量、修饰函数。第一个作用:修饰变量:局部变量和全局变量,存放于内存的静态区。静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使使用extern声明也没法使用它;要想在定义之前使用,就必须在前面加extern***(故static声明的全局变量最好在文件顶端定义)。静态局部变量:在函数体里面定义的

3、,就只能在这个函数里用了,同一个文档中的其它函数也用不了。由于被static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值也不会被销毁,函数下次使用时任然能用到这个值。例:#includestaticintj;intk=0;voidfun1(void){staticinti;i++;}voidfun2(void){j++;}intmain(void){for(k=0;k<10;k++){fun1();fun2();}return0;}解析:i、j看起来没有初始化,其实默认值为0.程序结束后i=

4、10,j=10.第二个作用:修饰函数:成为静态函数,对函数的作用域仅限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数是否会与其他文件中的函数同名。另static在C++里还有第三层含义。1.4sizeof关键字例:32位系统下#includevoidfun(intb[100]){inta=sizeof(b);//a=4}intmain(void){int*p=NULL;intlength=sizeof(p);//length=4length=sizeof(*p);//

5、length=4inta[100];length=sizeof(a);//length=400length=sizeof(a[100]);//length=4length=sizeof(&a);//length=400length=sizeof(&a[0]);//length=4fun(a);return0;}1.5-0与+0和补码signedchar为什么能表示的数据范围是-128~127答:一个char共8位可以表示256个数,最高位为符号位,除开最高位还有7位共128种编号,如果最高位为0,可以表示0(00000000)~127(0

6、1111111)共128个正整数;如果最高位为1,则可表示-128(1000000)、-1(10000001)到-127(11111111)共128个负整数,其实-128从数字大小来说应该为-0,但在数字世界里一般只需一个+0,即0即可,-0最后就规定用来表示-128这个数了。二进制数如何求补码:正数补码:全不变。例:+1(00000001)的补码(00000001)。负数的补码:除符号位外,各位取反加1例:-1(10000001)的补码=(11111110+1=11111111)。Strlen函数判断一个字符串的结束就是以其末尾的'

7、'为界限,不包括''这个字符的。头文件string.h1.6float与“零值”比较Float与零值进行比较的if语句怎么写?Floata=0.0;If((a>=EPSINON)&&(a<=EPSINON));解析:EPSINON是定义好的精度,如果一个数落在【0.0-EPSINON,0.0+EPSINON】这个闭区间内,则认为在某个精度内其值与零值相等。有关于EPSINON这样的定义:constfloatEPSINON=0.00001;《插入》:定义指针一定要初始化。1.7constconst是constant的缩写,是恒定不变的意

8、思,也翻译为常量、常数等。很不幸,正是因为这一点,很多人都认为被const修饰的值是常量。这是不精确的,精确的说应该是只读的变量,其值在编译时不能被使用,因为编译器在编译时不知道其存储的内容。

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

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

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