- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言深度解剖
第一章:关键字
1.1 定义声明
Int i;定义创建了对象并为这个对象分配了内存
Extern int i;声明没有分配内存。
1.2 auto
在缺省的时候,编译器默认所以的变量都是auto的。自动变量
1.3 register 声明寄存器变量
Register:这个关键字请求编译器尽可能地将变量存在CPU内部寄存器中,而不是通过内存寻址访问以提高效率。
(cpu:皇帝,寄存器:太监,内存:大臣,不考虑CPU的高速缓存区cache)
寄存器的存取速度比内存块得多。但在使用register修饰符也有些限制的:register变量必须是能被CPU寄存器所接受的类型。这就意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度,而且register变量可能不存放在内存中,所以不能用取地址运算符“”来获取register变量的地址。
1.4 static关键字
2个作用:修饰变量、修饰函数。
第一个作用:修饰变量:局部变量和全局变量,存放于内存的静态区。静态全局变量:作用域仅限于变量被定义的文件中,其他文件即使使用extern声明也没法使用它;要想在定义之前使用,就必须在前面加extern ***(故static声明的全局变量最好在文件顶端定义)。静态局部变量:在函数体里面定义的,就只能在这个函数里用了,同一个文档中的其它函数也用不了。由于被static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值也不会被销毁,函数下次使用时任然能用到这个值。
例:
#includestdio.h
static int j;
int k = 0;
void fun1(void)
{
static int i;
i++;
}
void fun2(void)
{
j++;
}
int main(void)
{
for(k = 0;k10;k++)
{
fun1();
fun2();
}
return 0;
}
解析:i、j看起来没有初始化,其实默认值为0.程序结束
后i=10,j=10.
第二个作用:修饰函数:成为静态函数,对函数的作用域仅限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数是否会与其他文件中的函数同名。
另static在C++里还有第三层含义。
1.4 sizeof关键字
例:32位系统下
#include stdio.h
void fun(int b[100])
{
int a = sizeof(b);//a=4
}
int main(void)
{
int *p = NULL;
int length = sizeof(p);//length=4
length = sizeof(*p);//length=4
int a[100];
length = sizeof(a);//length=400
length = sizeof(a[100]);//length=4
length = sizeof(a);//length=400
length = sizeof(a[0]);//length=4
fun(a);
return 0;
}
1.5 -0与+0和补码
signed char 为什么能表示的数据范围是-128~127
答:
一个char共8位可以表示256个数,最高位为符号位,除开最高位还有7位共128种编号,如果最高位为0, 可以表示0(0 0000000)~127(0 1111111)共128个正整数 ;如果最高位为1,则可表示-128(1000 000)、-1(1000 0001)到-127(1 111 1111)共128个负整数,其实-128从数字大小来说应该 为 -0 ,但在数字世界里一般只需一个 +0 ,即 0 即可,-0最后就规定用来表示-128这个数了。
二进制数如何求补码:
正数补码:全不变。
例:+1(0 000 0001)的补码(0 000 0001)。
负数的补码:除符号位外,各位取反加1
例:-1(1 000 0001)的补码=(1 111 1110+1=1111 1111)。
Strlen函数判断一个字符串的结束就是以其末尾的\0为界限,不包括\0这个字符的。头文件string.h
1.6 float与“零值”比较
Float与零值进行比较的if语句怎么写?
Float a=0.0;
If((a=EPSINON)(a=EPSINON));
解析:EPSINON是定义好的精度,如果一个数落在【0.0- EPSINON,0.0+ EPSINON】这个闭区间内,则认为在某个精度内其值与零值相等。
有关于EPSINON这样的定义:const fl
您可能关注的文档
- 2016届世纪金榜高考第一轮复习课件:必修4 Unit 3.ppt
- 2016届文化生活第四课:文化的继承与发展.ppt
- 2016四级讲座作文.ppt
- 2016届河南省中考语文专题复习课件:第2部分积累与运用 专题6 句子的衔接与排序.ppt
- 2016七年级语文《17猫》课件.ppt
- 2016届高三一轮复习 生活与哲学 第十二课 (上课用).ppt
- 2016届高三一轮复习 生活与哲学 第八课 (上课用).ppt
- 2016届高三政治一轮复习课件 经济全球化与对外开放.ppt
- 2016届高三新材料作文快速审题立意.ppt
- 2016届高考英语一轮复习 Module3 Body Language and Non-verbal Communication课件 外研版必修4.ppt
最近下载
- 2023年上海金山资本管理集团有限公司人员招聘考试参考题库及答案解析.docx
- 2025年农产品食品检验员(中级)考试题库及答案.pdf VIP
- 数智化赋能高校“一站式”学生社区建设.docx VIP
- 上海铁路局真题.docx VIP
- 上海铁路局社招笔试题库.pdf
- 2022年上海铁路局集团招聘考试真题及答案.docx
- 2025年江西工业职业技术学院单招综合素质考试试题及答案解析优质 2025.pdf VIP
- 三菱变频器FR-E820 FR-E840 FR-E860功能说明书.pdf
- 2024年农产品食品检验员(三级)职业鉴定理论考试题库-上(单选题汇总).docx VIP
- 医疗废物集中焚烧处置工程建设技术要求.doc
文档评论(0)