任何一种语言,包含编程语言,最终的目的是实现一片文章,完成一项功能。对于编程语言,编写代码核心可能是实现某项控制,某个内容展示或者某项运算。我们将自然世界的一个具体的内容抽象成一个个数据对象或者描述,然后通过某项算法(可能时逻辑也可能是计算规则)我们上诉的要求。编程语言的学习首先了解语言构成文章的基本要素。对于C语言而言,我们需要明白一个C语言基本代码构成文件.c/.h、文件中基本文字构成、语法、和运算规则等。
1. C语言基本程序结构
C语言代码结构包含头文件.h和具体文件实现.c文件两部分,其中头文件实现具体的声明,为了房子重复定义,头文件通过#ifndef进行隔离。对于.c文件实现部分,通过主要包含预处理指令、函数、变量、语句&表达式和注释几块部分。如下是hello_world.c文件的构成
#include <stdio.h> 预处理
// 续行符
#define SWAP(a,b) \
{ \
int temp = a; \
a = b; \
b = temp; \
}
int main() 函数
{
/* 我的第一个 C 程序 */ 注释
printf("Hello, World! \n"); 代码语句,打印hello world!。其中\n是转义字符
return 0; 函数返回值
}
2. C 令牌(名字约束)
C语言程序由一个个语句表达式构成,每个语句表达式都包含都可以拆分成一个个令牌,令牌可以是关键字、标识符、常量、字符串或者一个符号。对于每一项令牌的使用方法和功能详细说明后面详细给出说明。这里先给出命名规则,一些辅助令牌的说明与使用规则。
2.1 分号
; 分号是C语言程序中,分号令牌是语句的结束表示,通过一个个分号来实现语句的隔离。
2.2 注释
C语言注释包含单行注释//和多行注释/* */。编译器在编译过程中使用空格替换整个注释,字符串字面量中的//和/*…*/不代表注释符号,/*…*/型注释不能被嵌套。
优秀的代码注释需要遵循如下原则:
(1)注释应该准确易懂,防止二义性,错误的注释有害无利
(2)注释是对代码的提示,避免臃肿和喧宾夺主。
(3)一目了然的代码避免加注释
(4)不要用缩写来注释代码,这样可能会产生误解
(5)注释用于阐述原因和意图,而不是描述程序的运行过程
2.3 标识符
C 标识符是用来标识变量、函数,或任何其他用户自定义项目的名称。一个标识符以字母 A-Z 或 a-z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。C 标识符内不允许出现标点字符,比如 @、$ 和 %。C 是区分大小写的编程语言。因此,在 C 中,Manpower 和 manpower 是两个不同的标识符。下面列出几个有效的标识符:
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
2.4 关键字
关键字作为标识符一种特有的结构,是语言标准规定的基础类内容,其规范对应实际实体中常用的数据类型、代码逻辑结构、特定编译约束符等内容。下表列出了 C 中的保留字。这些保留字不能作为常量名、变量名或其他标识符名称。
关键字 | 说明 |
---|---|
auto | 声明自动变量 |
break | 跳出当前循环 |
case | 开关语句分支 |
char | 声明字符型变量或函数返回值类型 |
const | 定义常量,如果一个变量被 const 修饰,那么它的值就不能再被改变 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的"其它"分支 |
do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 |
else | 条件语句否定分支(与 if 连用) |
enum | 声明枚举类型 |
extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 |
for | 一种循环语句 |
goto | 无条件跳转语句 |
if | 条件语句 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 |
return | 子程序返回语句(可以带参数,也可不带参数) |
short | 声明短整型变量或函数 |
signed | 声明有符号类型变量或函数 |
sizeof | 计算数据类型或变量长度(即所占字节数) |
static | 声明静态变量 |
struct | 声明结构体类型 |
switch | 用于开关语句 |
typedef | 用以给数据类型取别名 |
unsigned | 声明无符号类型变量或函数 |
union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 |
2.5 空格
只包含空格的行称为空白行。
2.6 转义字符与连接符 \
转义字符和续行符使用的表示时一样的,都是使用\标识。如果想其作为转义字符使用,其必须出现在字符表示号''或者字符串表示符号""中。
续行符是指示编译器的利器,其作用主要是编译器将反斜杠剔除,跟在反斜杠后面的字符自动接续到前一行。接续符适合在宏定义代码块时使用,将宏代码编译成一个整体的块。需要注意的是如果想在接续单词时,反斜杠之后不能有空格,反斜杠下一行之前也不能有空格。