分隔符

空格符space、制表符tab、换行符 ‘\n
注释符://注释一行
/* …… */注释一段的内容

标点符号

逗号 ‘,‘ 、分号 ‘;‘ 、圆括号 ‘()‘ 、花括号 ‘<>‘ 、冒号 ‘:
逗号运算符 ‘,‘ :对于逗号运算符,只取最后一个逗号之后运算的结果,逗号之前的式子会进行运算

变量和常量

变量

概念:在程序运行过程中会发生变化的量
格式:[存储类型] 数据类型 变量名;
1)局部变量
定义在函数内部的变量,存放在栈区,定义时未赋初始值,初始值为随机值
作用域:函数内
生命周期:函数调用结束空间释放

2)全局变量
定义在函数体外,定义时未赋初始值,初始值为0,存放在静态区的.bss段。定义时赋初始值存放在.data
作用域:整个任务
生命周期:进程结束,空间释放

当全局变量和局部变量的名字相同时,函数内部使用的是局部变量

内存:32操作系统
产生一个任务,就会产生0-4G的虚拟内存空间。
其中3-4G内存空间属于内核空间,公用空间。
0-3G属于私有空间。

常量

整型常量:20 10 0
int short long
举例:int a=20;
浮点常量:3.14 6.13
float double
举例:float b=3.14;
指数常量:2e7 3e-5(210^7 310^-5)
字符常量:单引号引起来的是字符
‘A’ ‘\n’
举例:char ch=’A’;
字符串常量:双引号引起来的是字符串
“hello”——> ‘h’ ‘e’ ‘l’ ‘l’ ‘o’ ‘\0’
字符串常量默认有 ‘\0’ 为结束标志的。 ‘\0’ 不需要程序员手动输入,系统自动补充
char ch[6]=”hello”;
标识常量:宏定义
格式:#define 宏名 表达式或变量或常量或代码段
特点:只是单纯替换,不进行运算(用宏名代替表达式或变量或常量或代码段)
注:1.宏名替换的内容最好用括号括起来
2.宏名最好大写
3.替换的内容还可以使其他的宏

存储类型

auto自动型

是修饰局部变量,一般定义局部变量是被省略的。
特点和局部变量的特点相同。
修改的变量存放在栈区,栈区:程序自动开辟自动释放。
修饰变量定义在函数体内,定义时未初始化值为随机值。
生命周期:函数调用结束空间释放
作用域:函数内

static静态型

作用:限定作用域,延长生命周期。
修饰变量定义时未初始化,初始值为0存放在.bss段。定义时初始化值存放.data

1)修饰局部变量(延长生命周期)
定义位置:函数体内
作用域:函数体内
生命周期:进程结束空间释放
修饰的局部变量只需要定义一次,再次使用的时候,值为上一次变化的值

2)修饰全局变量(限定作用域)
定义位置:函数体外
作用域:整个文件
生命周期:进程结束空间释放

3)修饰函数
将函数限定在本文件中

extern外部引用

引用的是全局变量,将其他文件定义的全局变量,以外部引用的方式拿到当前文件使用
static修饰的变量不能外部引用

register寄存器

应用层,一般申请不到,就和auto使用一样

数据类型:

决定了变量在内存中占的空间大小
基本类型:(32位操作系统)long—32位为4字节
64位会发生改变,变为8个字节
1)整数类型(1字节=8bit)用sizeof计算所占空间大小
类型名称 所占空间大小 值域范围
Short短整型 2字节 -2 ^ 15 — 2 ^ 15 - 1
Unsigned short 2字节 0 — 2 ^ 16 - 1
Int 整形 4字节 -2 ^ 31 — 2 ^ 31 - 1
Unsigned int 4字节 0 — 2 ^ 32 - 1
Long长整形 4字节 -2 ^ 31 — 2 ^ 31 - 1
Unsigned long 4字节 0 — 2 ^ 32 - 1
2)字符类型:
Char 字符类型 1字节 -2^7 –2^7-1
Unsigned char 1字节 0 – 2^8-1
3)浮点类型:
Float单精度浮点型 4字节 保留6-7位有效数字
Double双精度浮点型 8字节 保留15-16位有效数字
注意:(1)只有有符号类型,没有无符号类型
(2)这里的有效数字指的是整数部分和小数部分数字的总和
4)逻辑类型:只有两个量true和false,表示逻辑真值和逻辑假值。(非零为真)
例如:if ( 0.5 )
x=12 ;
else
x=18 ;
bool为布尔型用作逻辑判断,bool取值false和true,
是0和1的区别;false可以代表0,但true有很多种,并非只有1。
5)空类型:
void:经常用来修饰函数返回值和指针的数据类型
没有办法直接定义出来空类型变量

输入输出

函数:三要素——->功能、参数、返回值
1.printf
int printf(const char format,….);
功能:以指定格式向终端输出
参数:
format:输出的内容。
对应格式.
数据
int —- %d
short —- %d
long —— %ld
long long —— %lld
char —— %c
float —- %f
double —- %lf
unsigned int—- %u
十六进制 —— %x %#x
八进制 —— %o
地址 —— %p
字符串 —— %s
指数3e5 —— %e
%0m.nf —[0+/-m.n]
0:在左侧补0
m:指定的位宽,
m大于实际位宽时,按m输出
m小于实际位宽时,按原样输出
.n:对实数(浮点型数据),指定的小数位(四舍五入)
对字符串,指定实际输出位数
+:输出符号
-:左对齐,默认右对齐

*…:
多参 用逗号隔开

返回值:成功返回输出字符的个数

2.scanf
int scanf(const char *format,…);
功能:以指定格式从终端输入
参数:
format:指定格式
和printf一样
…:地址列表

  1. 返回值:成功返回正确匹配变量的个数<br /> 一个也没有匹配成功返回0.
  2. 垃圾字符回收:<br /> 1.用空格回收<br /> 2.用*抑制回收,%*c 抑制一个字符<br /> 3.getchar()拿走一个字符