首页 > 代码库 > C语言关键字 (二)

C语言关键字 (二)

10. goto 关键字

一般来说,编码的水平与 goto 语句使用的次数成反比。
个人主张,禁用 goto 语句。

11. void 关键字

1、void 修饰函数返回值和参数

1> 如果函数没有返回值,那么应将其声明为void 类型。
2> 如果函数无参数,那么应声明其参数为void

2、void 指针

1> 不能对void 指针进行算法操作
2> 如果函数的参数可以使任意类型指针,那么应声明其参数为 void*

3、void不能代表一个真实的变量


12. return 关键字

return 用来终止一个函数 并 返回其后面跟着的值。
return (Val); // 此括号可以省略,但一般不省略,尤其在返回一个表达式的值时;
注: 1> 一个函数内可以有多个 return 语句,但只有一个 return 语句被执行
2> return  语句不可返回指向 "栈内存" 的 "指针", 因为该内存在函数结束时被自动销毁。

13. const 关键字

1、const 修饰的只读变量

定义 const 只读变量,具有不可变性。
注: const 修饰的只读变量必须在定义的同时初始化。

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

编译器通常不为普通 const 只读变量分配内存空间,而是将他们保存在符号表中,这使得他成为一个编译器期间的值,没有了存储与读内存的操作,使得它的效率也很高。

3、修饰一般变量

int const i = 2; 或 const int i = 2;

4、修饰数组

只读数组: int const a[5] = {1,2,3,4,5};
 const int a[5] = {1,2,3,4,5};

5、修饰指针

const int *p;// p可变, p指向的对象不可变
int const *p;// p可变, p指向的对象不可变
int *const *p;// p不可变, p指向的对象可变
const int *const *p;// 指针p和p指向的对象都不可变

6、修饰函数的参数

当不希望参数值在函数体内被意外改变时使用。
例: void Fun(const int i);

7、修饰函数的返回值

1> const 修饰符也可以修饰函数的返回值,返回值不可被改变。
例: const int Fun(void);
2> 在另一连接文件中引用 const 只读变量
extern const int i;// 正确的声明
extern const int j = 10;// 错误,只读变量的值不能改变


14. volatile 关键字

volatile 是易变的、不稳定的意思。
volatile 关键字 和 const 一样是一种类型修饰符,用它修饰的变量表示可以被某些编译器未知的因素改变,比如操作系统、

15. extern 关键字

当引用另一个文件中定义的变量或函数时,使用 extern 进行声明

16. struct 关键字

struct 是一个神奇的关键字,它将一些相关联的数据打包成一个整体,方便使用。
1、结构体的大小
2、柔性数组

17. union 关键字

union 关键字的用法与 struct 的用法非常类似。
union 维护足够的空间来放置多个数据成员中的 "一种",而不是为每个数据成员配置空间。在union中所有的数据成员公用一个空间,同一时间只能存储其中一个数据成员,所有的数据成员具有相同的起始地址。


18. enum 关键字

枚举 与 #define 宏的区别
1> #define 宏常量是在预编译阶段进行简单替换; 枚举常量则是在编译的时候确定其值
2> 一般在编译器里,可以调试枚举常量,但不能调试宏常量。
3> 枚举可以一次定义大量相关的常量,而#define 宏 一次只能定义一个。

19. typedef 关键字

注意typedef 与 #define 的区别
#define INT32 int 
unsigned INT32 i = 10;// 正确
typedef int int32;
unsigned int32 j = 10;// 编译错误

C语言关键字 (二)