C语言的总结

C程序的顶层结构

一个C程序由源文件、依赖的库、数据和文档构成,其中源文件又分为两类,一类是头文件(.h),一类是定义文件(.c)。库由源文件编译而来,包含数据和文档,分为静态库和动态库两类。库通过头文件公布其提供的数据和功能。

静态库的编译命令为:

ar cr lib库名.a 目标文件1 目标文件2 ... 目标文件n

动态库的编译命令为:

gcc -shared -fPIC -o lib库名.so 目标文件1 目标文件2 ... 目标文件n

链接静态库或动态库的方式为:

  gcc ... -L. lib库名.c
或 gcc ... -L. -l库名

C程序顶层结构

C程序定义文件的结构

定义文件一般包含类型定义、预处理指令、变量声明,变量定义,函数原型、函数定义和注释。由于直接在定义文件中定义的变量在所有函数之外,所以为全局变量。函数定义对应至多一个函数原型。在一个程序中必须有且只有一个定义文件定义main函数,且main函数没有原型。每个函数定义都有唯一一个函数体,在函数体中定义的变量为局部变量。函数体中可以包含多条语句。
定义文件结构

C程序头文件的结构

C语言的头文件中一般只包括类型定义、处理器指令、函数原型、变量声明和注释等,以支持在多个文件中共享这些信息。
头文件结构

C程序中的语句

C语言中的语句分为复合语句、表达式语句、函数调用语句、空语句和控制语句等5类,其中复合语句同函数体一样,可以包含预处理指令、类型定义、函数原型、变量声明、变量定义和注释,同时符合语句由0到多条语句组成,表达式语句是由表达式后加;构成,函数调用语句是函数调用后加;构成,空语句是只有一个;不执行任何命令的语句,控制语句包括选择、循环控制和跳转三类。
语句

C程序中的表达式和数据类型

C程序的表达式由操作数和运算符组成,根据运算符分为关系表达式、逻辑表达式、算术表达式等。运算符分为算术运算符,赋值运算符、关系运算符、逻辑运算符、条件运算符、逗号运算符和按位运算符,还有sizeof运算符等。表达式的操作数由函数、常量、变量和子表达式提供。常量、变量和函数等都有相应的类型,在声明、定义变量、函数时都要指定它们的类型。C语言中的类型分为基本类型和复合类型,其中基本类型包括整型、浮点型、字符型和指针等,而复合类型包括数组、结构体、联合和枚举类型,且C语言中的字符串是最后一个字符为\0字符的字符数组。
表达式和数据类型

C语言的标准库

C语言的标准库包括标准输入输出库、数学计算库、浮点数特性等。其中<stddef.h>是常用类型定义,包含了一些可用的类型包括ptrdiff_t,是两个指针相减运算时的结果的数据类型,size_t是运算符sizeof的返回值类型,wchar_t是支持国际化的宽字符类型。<stddef.h>也定义了NULL宏,同时也定义了offsetof宏,用以计算结构的起点到指定成员间的字节数。
标准库

/****************************************
 * using_offsetof.c                     *
 *                                      *
 * C语言的seddef.h中的offsetof宏        *
 ****************************************/

#include <stdio.h>
#include <stddef.h>

struct Test
{
  char a;
  int b;
  float c;
};

int main()
{
  printf("a位于结构体类型的%lu字节处\n", offsetof(struct Test, a));
  printf("b位于结构体类型的%lu字节处\n", offsetof(struct Test, b));
  printf("c位于结构体类型的%lu字节处\n", offsetof(struct Test, c));

  return 0;
}

offsetof的使用示例

参考文献

  1. K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值