- 1、本文档共76页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]C语言回顾_山大
1.2 C语言的基本元素——关键字 1、数据类型关键字(12个):char, double, enum, float, int, long, short, signed, struct, union, unsigned, void 2、控制语句关键字(12个):break, case, continue, default, do, else, for, goto, if, return, switch, while 3、存储类型关键字(4个):auto, extern, register, static 4、其它关键字(4个):const, sizeof, typedef, volatile 5、C99标准新增关键字(5个):inline, restrict, _Bool, _Complex, _Imaginary 1.2 C语言的基本元素——关键字 “extern”: ● C语言允许将大型程序分成若干独立模块文件分别编译,然后将它们连接在一起,从而可以提高编译的速度。所以必须设法将整个程序所需的全局变量(函数)通知所有模块文件,但全局变量(函数)只能被定义一次,否则会出现连接错误。 ●用“extern”关键字告诉编译器,其声明( extern int a )的函数和变量已经在其它文件中定义,可以在本模块中使用了。 ● “extern int a”仅仅是一个变量的声明,其并不是在定义变量a,编译器并未为a分配内存空间。 ●通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字“extern”声明。 ●与extern 对应的关键字是static,被它修饰的全局变量和函数只能在本模块中使用。因此,一个函数或变量只可能被本模块使用时,其不可能被extern 修饰。 1.2 C语言的基本元素——关键字 “const”: 下面语句中“a”的含义? const int a; int const a; const int *a; int * const a; int const * a const; const意味着“只读”,例如在函数的形参前添加const 关键字意味着这个参数在函数体内不会被修改,因为关键字const 可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。 const定义的常量编译器可以对其进行数据类型安全检查,而#define宏定义的常量却只是进行简单的字符替换。当定义局部常量时,const作用域仅限于定义局部常量的函数体内。而#define则是从定义点到整个程序的结束点。 1.2 C语言的基本元素——关键字 “volatile”: 一个定义为volatile 的变量:该变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。应用场合: ●I/O设备的硬件寄存器(如:状态寄存器); ●一个中断服务子程序中会访问到的非自动变量(Nonautomatic variables); ●多线程应用中被几个任务共享的变量。 下面程序(求平方)有问题吗? int square (volatile int *ptr) { return *ptr * *ptr; } 1.5 C语言的基本元素——常量 1.6 C语言的基本元素——变量 内存空间分配: 1.6 C语言的基本元素——变量 内存空间分配: 静态存储区:编译器分配区,该区域中的变量在编译时即被分配到存储空间;该区域中的变量在编译时被初始化,如果没有显示初始化,则自动赋初值为0,并与程序共存亡。 栈区:是系统为程序开辟的活动存储区,数据按“后进先出”的原则存入取出。编译时就已经“规划”好了,运行时才使用。函数(块)执行完则释放—归还给系统管理。 堆区:在程序运行时才能动态分配,由程序员控制其申请和释放。 代码区:存有程序的所有执行代码,每段代码都有名称—函数名,用户无法干预,只能通过函数名调用。 1.12 C语言的基本元素——程序结构 1.7 C语言的基本元素——结构体 1.7 C语言的基本元素——结构体 1.7 C语言的基本元素——结构体 1.13 C基本元素——类型重定义 32位的CPU读内存时,一次读取四字节的内容,因为字长是32位的,并且读取的地址是被4整除的!即0,1,2,3这样的连续的地址,而不是2,3,4,5这样的地址! #pragma pack () 其实一点也不怪,C/C++是按pack算法的对齐基数来决定结构体大小的。 若有 s
文档评论(0)