c语言概述
典型的c语言程序:
#include<stdio.h> //预处理指令
int main(){ //入口函数
a(); //调用方法
return 0; //可以看做是结束main函数的语句
}
void a(){ //方法声明
printf("hello world"); //打印语句
}
#include
告诉编译器把另一个文件的内容包含在当前程序中,stdio.h
是C编译器软件包的标准部分,提供键盘输入和屏幕输出的支持,#
表示C预处理器在编译器接手之前处理这条指令
int main()
函数名C程序当中,通常包含一个或多个函数,圆括号表示main是一个函数名 int表示返回整数
{}
表示函数体的开始和结束
注释:
C语言中使用/*这是注释的内容*/
来表示块注释,在/*
和*/
中的内容都会被编译器忽略,注释的作用就是让他人更容易明白你所写的程序
//
为行注释,即当前标记的后面为被注释部分,行尾标志着注释的结束
关键字
C语言中,关键字表示一种基本的数据类型。关键字是语言定义的单词,不能做其他用途。
命名规范
可以使用小写字母、大写字母、数字和下划线来命名,但是不同的C语言标准的命名长度识别是不一样的,例如C99和C11识别前63个字符,超出部分会被编译器忽略,例如标识符有64个字符,但只有最后一个字符不同编译器可能会识别为同一个名称(当然,只是可能,这种情况谁也不知道编译器会做什么) 操作系统和C库经常使用以一个或两个下划线字符开始的标识符(如,_kcab),因此最好避免在自己的程序中使用这种名称。标准标签都以一个或两个下划线字符开始,如库标识符。这样的标识符都是保留的。这意味着,虽然使用它们没有语法错误,但是会导致名称冲突。 C语言的名称区分大小写即同一个字母的大写和小写会视为两个不同的字符 C99之前的标准要求把声明都置于块的顶部,C99 允许在需要时才声明变量
转义字符
转义序列用于代表难以表示或无法输入的字符。如,\t
代表Tab键,\b
代表Backspace键(退格键)。每个转义序列都以反斜杠字符\
开始
return语句
return
语句是程序的最后一个语句,C标准要求有返回值的C函数要有return
语句,但是main函数中的return
语句是可以生了的,程序在main函数运行到最后会自动返回0,但是建议在main
函数中保留return
语句的习惯
多条声明
C语言支持在一条声明中声明两个变量,但是需要使用,
隔开:
函数原型
90 标准新增了函数原型,旧式的编译器可能无法识别。函数原型是一种声明形式,告知编译器正在使用某函数,因此函数原型也被称为函数声明(functiondeclaration)。函数原型还指明了函数的属性,C标准建议为程序中要用到的所有函数提供函数原型,标准include文件(包含文件)为标准库函数提供可函数原型
调试程序
建议使用VS Studio、CodeBlocks、Dev C++等集成IDE来进行调试,方便快捷,具体的调试技巧请去查看该IDE的文档,此处不做说明
关键字
下表列出了 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 | 循环语句的循环条件 |
C99 新增关键字
_Bool |
_Complex |
_Imaginary |
inline |
restrict |
---|---|---|---|---|
C11 新增关键字
_Alignas |
_Alignof |
_Atomic |
_Generic |
_Noreturn |
---|---|---|---|---|
_Static_assert |
_Thread_local |