电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

C语言深度解剖VIP免费

C语言深度解剖_第1页
1/61
C语言深度解剖_第2页
2/61
C语言深度解剖_第3页
3/61
C语言深度解剖第一章:关键字1.1定义声明Inti;定义创建了对象并为这个对象分配了内存Externinti;声明没有分配内存。1.2auto在缺省的时候,编译器默认所以的变量都是auto的。自动变量1.3register声明寄存器变量Register:这个关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。(cpu:皇帝,寄存器:太监,内存:大臣,不考虑CPU的高速缓存区cache)寄存器的存取速度比内存块得多。但在使用register修饰符也有些限制的:register变量必须是能被CPU寄存器所接受的类型。这就意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度,而且register变量可能不存放在内存中,所以不能用取地址运算符“&”来获取register变量的地址。1.4static关键字2个作用:修饰变量、修饰函数。第一个作用:修饰变量:局部变量和全局变量,存放于内存的静态区。静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使使用extern声明也没法使用它;要想在定义之前使用,就必须在前面加extern***(故static声明的全局变量最好在文件顶端定义)。静态局部变量:在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其它函数也用不了。由于被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=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);//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(01111111)共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函数判断一个字符串的结束就是以其末尾的'\0'为界限,不包括'\0'这个字符的。头文件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的缩写,是恒定不变的意思,也翻译为常量、常数等。很不幸,正是因为这一点,很多人都认为被const修饰的值是常量。这是不精确的,精确的说应该是只读的变量,其值在编译时不能被使用,因为编译器在编译时不知道其存储的内容。(1)const修饰的只读变量:定义const只读变量,具有不可变性。例如:constintMax=100;intArray[Max];这里请在VisualC++6.0里分别创建.c文件和.cpp文件测试一下。你会发现在.c文件中,编译器会提示出错,而在.cpp文件中则顺利运行。为什么呢?我们知道定义一个数组必须指定其元素的个...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

C语言深度解剖

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部