C语言学习笔记(一)

C语言简介:

C语言是一种过程性的(procedural)语言,共37个关键字,34中运算符,对数组下标越界不进行检查,可直接访问物理地址,能进行位操作,能直接对硬件进行操作。


C语言关键字:

C89共32个关键字,C99新加了5个,分别为:restrict,inline,_Complex,_Imaginary,_Bool

数据类型关键字

char  声明字符型变量或函数
double  声明双精度变量或函数
enum 声明枚举类型 
float 声明浮点型变量或函数 
int 声明整型变量或函数 
long 声明长整型变量或函数 
short 声明短整型变量或函数 
signed 声明有符号类型变量或函数 
struct 声明结构体变量或函数 
union 声明共用体数据类型 
unsigned 声明无符号类型变量或函数 
void 声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

控制语句关键字

 for 一种循环语句(循环语句关键词)
 do  循环语句的循环体(循环语句关键词)
 while  循环语句的循环条件(循环语句关键词)
 break 跳出当前循环(循环语句关键词)
 continue 结束当前循环,开始下一轮循环(循环语句关键词)
if 条件语句分支(条件语句关键词)
else  条件语句否定分支(条件语句关键词)
goto 无条件跳转语句(条件语句关键词)
switch 用于开关语句(开关语句)
case 开关语句分支(开关语句)
default 开关语句中的“其他”分支(开关语句)
return  子程序返回语句(返回语句)

存储类型关键字

auto 声明自动变量(一般不使用)
extern 声明变量是在其他文件正声明(也可以看做是引用变量)
register 声明寄存器变量
static 声明静态变量

其它关键字

const 声明常类型,常类型的变量或对象的值是不能被更新的,可使用在常量定义,指针定义,函数定义等处,与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
sizeof

用于计算特定类型或特定类型变量的数据类型长度

typedef 常规变量类型定义,数据类型取别名,指针类型定义,函数地址说明,函数声明,函数指针定义等
volatile 说明变量在程序执行中可被隐含地改变 说明变量在程序执行中可被隐含地改变,与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值

C语言运算符和结合性

优先级

运算符

名称或含义

使用形式

结合方向

说明

1

[]

数组下标

数组名[常量表达式]

左到右

 

()

圆括号

(表达式)/函数名(形参表)

 

.

成员选择(对象)

对象.成员名

 

->

成员选择(指针)

对象指针->成员名

 

2

-

负号运算符

-表达式

右到左

单目运算符

(类型)

强制类型转换

(数据类型)表达式

单目运算符

++

自增运算符

++变量名/变量名++

单目运算符

--

自减运算符

--变量名/变量名--

单目运算符

*

取值运算符

*指针变量

单目运算符

&

取地址运算符

&变量名

单目运算符

!

逻辑非运算符

!表达式

单目运算符

~

按位取反运算符

~表达式

单目运算符

sizeof

长度运算符

sizeof(表达式)

单目运算符

3

/

表达式/表达式

左到右

双目运算符

*

表达式*表达式

双目运算符

%

余数(取模)

整型表达式/整型表达式

双目运算符

4

+

表达式+表达式

左到右

双目运算符

-

表达式-表达式

双目运算符

5

<<

左移

变量<<表达式

左到右

双目运算符

>>

右移

变量>>表达式

双目运算符

6

>

大于

表达式>表达式

左到右

双目运算符

>=

大于等于

表达式>=表达式

双目运算符

<

小于

表达式<表达式

双目运算符

<=

小于等于

表达式<=表达式

双目运算符

7

==

等于

表达式==表达式

左到右

双目运算符

!=

不等于

表达式!= 表达式

双目运算符

8

&

按位与

表达式&表达式

左到右

双目运算符

9

^

按位异或

表达式^表达式

左到右

双目运算符

10

|

按位或

表达式|表达式

左到右

双目运算符

11

&&

逻辑与

表达式&&表达式

左到右

双目运算符

12

||

逻辑或

表达式||表达式

左到右

双目运算符

13

?:

条件运算符

表达式1? 表达式2: 表达式3

右到左

三目运算符

14

=

赋值运算符

变量=表达式

右到左

双目运算符

/=

除后赋值

变量/=表达式

双目运算符

*=

乘后赋值

变量*=表达式

双目运算符

%=

取模后赋值

变量%=表达式

双目运算符

+=

加后赋值

变量+=表达式

双目运算符

-=

减后赋值

变量-=表达式

双目运算符

<<=

左移后赋值

变量<<=表达式

双目运算符

>>=

右移后赋值

变量>>=表达式

双目运算符

&=

按位与后赋值

变量&=表达式

双目运算符

^=

按位异或后赋值

变量^=表达式

双目运算符

|=

按位或后赋值

变量|=表达式

双目运算符

15

,

逗号运算符

表达式,表达式,…

左到右

 

优先级:

初等运算符("()", "[]", "->", ".")

单目运算符

算术运算符(先乘除再加减)

关系运算符

逻辑运算符(不包括!)

条件运算符

赋值运算符

逗号运算符

容易出错的优先级:

C语言学习笔记(一)_第1张图片


C语言语法提要

整型常量

十进制常数

八进制常数(以0开头的数字序列)

十六进制常数(以0x开头的数字序列)

长整型常数(在数字后面加字符L或l)

数据定义

类型标识符可用:

int 、short、long、unsigned、char、float、double、struct(结构体名)、union(共用体名)、enum(枚举类型名)、用typedef定义的类型名。

struct  结构体名

{成员列表};

union  共用体名

{成员列表};

typedef   已有类型    新定义类型

存储类别可用:

auto、static、register、extern(不指定作auto处理)

变量定义形式:

存储类别    数据类型     变量列表

注意:外部数据只能用extern或static而不能用auto或register

变量初始化

可以在定义时对变量或数组指定初始值。
静态变量或外部变量如未初始化,系统自动使其初值为零(对数值型变it)或空(对字符型数据)。对自动变量或寄存器变量,若未初始化,则其初值为一不可预测的数据。

函数定义

存储类别  数据类型  函数名(形参列表)

函数体

函数的存储类别只能用extern或static。

预处理指令

# define   宏名   字符串
#define    宏名(参数1,参数2,……,参数n)字符串
#undef     宏名
#include   “文件名”(或<文件名>)
#if            常量表达式
#ifdef       宏名
#ifndef     宏名
#else
#endif


常用字符和ASCII代码对照表:

C语言学习笔记(一)_第2张图片


常用C库函数

C语言学习笔记(一)_第3张图片

C语言学习笔记(一)_第4张图片

C语言学习笔记(一)_第5张图片

C语言学习笔记(一)_第6张图片

C语言学习笔记(一)_第7张图片

C语言学习笔记(一)_第8张图片

C语言学习笔记(一)_第9张图片

C语言学习笔记(一)_第10张图片

 

C语言学习笔记(一)_第11张图片

C语言学习笔记(一)_第12张图片

C语言学习笔记(一)_第13张图片

C语言学习笔记(一)_第14张图片

 

你可能感兴趣的:(C/C++)