C 关键字

一、数据类型

 

 

 二、关键字

1、 auto 声明自动变量

2、 register 声明寄存器变量,可以提高效率

3、 sizeof

sizeof 对数组,得到整个数组所占空间大小。

sizeof 对指针,得到指针本身所占空间大小。

4、 signed  unsigned

signed 声明有符号类型变量或函数

unsigned 声明无符号类型变量或函数

规则:单纯的char类型只用于字符值的存储与使用,有符号和无符号的char型变量只用于数值的存储和使用。

signed char 范围 -128~127 ;unsigned char 范围 0~255 。

5、 break 终止本层循环;continue 终止本次循环,进入下一轮循环。

6、 goto 可以灵活跳转,需慎用,它可能会跳过了变量的初始化,重要的计算等语句。

7、 return 用来终止一个函数并返回其后面跟着的值。

8、 void

a)      修饰函数返回值和参数。如果函数没有返回值,那么应将其声明为void 类型。如果函数无参数,那么应声明其参数为void 。

b)      不能代表一个真实的变量。

9、 const

a)      修饰只读变量

b)      节省空间,避免不必要的内存分配,同时提高效率

c)      修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer)

d)      修饰成员函数,说明该成员函数内不能修改成员变量。

修饰函数的参数,不希望这个参数值在函数体内被意外改变

修饰函数的返回值,返回值不可被改变

e)      修饰引用,指向常量的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对值的修改;

 

10、static

a)      修饰变量,修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,

如果没有初始值系统用默认值初始化它。

静态全局变量:作用域仅限于变量被定义的文件中,其它文件extern声明也不可用。作用域是从定义之处开始,到文件结尾结束,一般放在文件顶端定义。

静态局部变量:在函数体里面定义的,同一文件中的其他函数无法使用。被修饰的变量总是存在内存的静态区,即使这个函数运行结束,

这个静态变量的值也不会被销毁,下次使用时仍能用到这个值。

b)      修饰普通函数,表明函数的作用范围,仅在定义该函数的文件内才能使用。在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定位为 static。

c)      修饰成员变量,修饰成员变量使所有的对象只保存一个该变量,而且不需要生成对象就可以访问该成员。

d)      修饰成员函数,修饰成员函数使得不需要生成对象就可以访问该函数,但是在 static 函数内不能访问非静态成员。

 

11、 volatile

a)      volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素(操作系统、硬件、其它线程等)更改。

所以使用 volatile 告诉编译器不应对这样的对象进行优化。

b)      volatile 关键字声明的变量,每次访问时都必须从内存中取出值(没有被 volatile 修饰的变量,可能由于编译器的优化,从 CPU 寄存器中取值)

c)      const 可以是 volatile (如只读的状态寄存器)

d)      指针可以是 volatile

 

12、extern 

a)      声明变量或函数是在其它文件或本文件的其他位置定义

b)      被 extern "C" 修饰的变量和函数是按照 C 语言方式编译和链接的

13、struct

声明结构体类型,没有被赋值的成员被初始化为 0

结构数组

结构体嵌套

struct 和 class 的区别:总的来说,struct 更适合看成是一个数据结构的实现体,class 更适合看成是一个对象的实现体。

区别:最本质的一个区别就是默认的访问控制

a)      默认的继承访问权限。struct 是 public (公共的)的,class 是 private 的。

b)      struct 作为数据结构的实现体,它默认的数据访问控制是 public 的,而 class 作为对象的实现体,它默认的成员变量访问控制是 private 的

14、union 共用体

联合(union)是一种节省空间的特殊的类,一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。

维护足够的空间来放置多个数据成员的一种,所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,union的大小是其最大的成员

大端模式:字数据的高字节存储在低地址中,低字节则存储在高地址中

小端模式:字数据的高字节存储在高地址中,低字节则存储在低地址中

通常情况下,我们的计算机都是小端存储模式

union型数据所占用的空间等于其最大的成员所占的空间,联合体的访问不论对哪个变量的存取都是从该联合体的首地址位置开始的

15、enum 枚举

enum 枚举类型名 {名字 0, 名字 1 ...., 名字 n}; 注意: 枚举类型名通常不使用,用的是大括号内的名字,它们就是常量符号,类型是 int,值依次从 0 到 n

定义数组大小 和 遍历数组的时候就很方便

枚举和#define宏的区别

a)      #define宏常量是在预编译阶段进行简单替换;枚举常量是在编译的时候确定其值

b)      一般在调试器里,可以调试枚举常量,但不能调试宏常量

c)      枚举可以一次定义大量相关的常量,而宏一次只能定义一个

16、typedef

typedef 的真正意思是给一个已经存在的数据类型取一个别名,而非定义一个新的数据类型

实际中,为了方便,许多数据类型需要重新取一个适用于实际情况的别名

 

posted @ 2021-11-05 10:16  listxue  阅读(172)  评论(0编辑  收藏  举报