C语言深入剖析阅读笔记1--32个关键字

C语言的32个关键字

1.register--最快的关键字

这个关键字请求编译器尽可能地将变量存在CPU内部而不是通过内部寻址以提高效率。

近水楼台先得月,寄存器其实就是一块一块小的存储空间,处于内存和CPU之间,注意register变量必须是能被CPU寄存器接受的类型。

2.static--最名不符实的关键字

  1. 修饰变量,静态全局变量,作用域仅限于变量被定义的文件之中,且其他文件即使用extern声明也不行;静态局部变量,不会销毁

  2. 修饰函数,指对函数的作用域仅限于本文件

  3. C++中有第三个用法

3.基本数据类型--short、int、long、char、float、double

  1. 决定内存分配的大小

  2. 变量的命名规则

  3. 不同类型数据之间要注意精度扩展问题,一般低精度数据将向高精度数据扩展

4.sizeof--最冤枉的关键字

计算变量所占空间大小时可以省略括号,计算类型(模子)大小不可省略,一般不省略。

5.signed、unsigned

顾名思义,一个存符号,一个不存(默认正数),其值表示法范围不同,编译器缺省默认情况下数据为signed类型的。

6.if、else注意

  1. bool变量与“零值”的比较:if(test) or if(!test)

  2. float变量与“零值”的比较:if(test >= -EPSINON) && if(test <= EPSINON) // 用精确度

  3. 指针变量与“零值”的比较:if(NULL == p) or if(NULL != p)

  4. 先处理正常情况,再处理异常情况

7.switch、case组合

  1. 基本格式,注意default处理

  2. case后面只能是整型或字符型的常量或常量表达式

  3. 排列顺序有讲究

8.break、continue

  1. 长循环在内层

  2. 循环要尽可能短,代码清晰

  3. 嵌套在3层之内

9.goto

禁用!

10.void

  1. 对函数返回的限定

  2. 对函数参数的限定:如果函数的参数可以是任意类型指针,那么应声明其参数为viod*

11.return

用来终止一个函数并返回其后面跟着的值,不可返回指向“栈内存”的“指针”,因为该内存在函数体结束时被自动销毁。

12.const--也许该被替换为readolny

精确地说,const修饰的是只读的变量

  1. 节省空间,避免不必要的内存分配,同时提高效率:const修饰的变量通常保存在符号表中,没有储存和读内存操作。

  2. 与#define的区别:#define在预编译进行替换且没有类型,后者修饰的只读变量在编译的时候确定值,具有特定值。

  3. 修饰一般变量和数组,int const a 与const int a一样

  4. 修饰指针,就近原则,忽略类型不看

  5. 修饰函数参数:一般是告诉该参数在函数体中不可改变,防止无意修改

  6. 修饰返回值:表明返回值不可改变

13.volatile--最易变的关键字

暂时了解它和const是类型修饰符,用它修饰的变量可以被某些编译器未知的因素更改,比如操作系统、硬件或者其他线程等。

14.extern--最会带帽子的关键字

extern可以置于变量和函数前,以标示其定义在其他文件中,提示编译器遇到此变量或函数时在其他模板中寻找定义

15.struct

这是一个神奇的关键字,它将相关联的数据打包成一个整体,方便使用

  1. 平时我们要求函数的参数不超过4个,因为易出错,且与具体CPU有关,这时有一个结构体很方便

  2. 空结构体的大小为1byte

  3. 与class关键字的区别:在C++里struct与class可以通用,struct成员默认属性是public,class是private

16.union

与struct的用法极为相似,但union主要用来压缩空间,如果一些数据不可能在同一时间同时被用到,则可以使用union

  1. 大小端模式

  2. 用程序确认当前系统的存储模式

17.enum--枚举类型

  • 枚举与#define宏的区别:

    1. 枚举常量在编译时确定其值

    2. 在一般编译器中可以调试枚举常量,但不能调试宏常量

    3. 枚举可以一次定义大量相关的常量,宏一次只能定义一个

18.typedef--伟大的缝纫师

真正意思是取别名--“将离”,注意给结构体取别名,例如:typedef struct stu{code }str,*pstr;其实是给“struct stu{code}”取了一个别名叫str,同时给“struct stu{code} *”取了一个别名叫pstr。

 

 

 

 

 

posted @ 2022-04-10 14:54  rainbow_dj  阅读(189)  评论(0)    收藏  举报