C语言
一、数据类型
char 字符数据类型 1个字节
short 短整型 2个字节
int 整型 4个字节
long 长整型 4个字节
long long 更长的整型 8个字节
float 单精度浮点数 4个字节
double 双精度浮点数 8个字节
(在C语言中,sizeof(long)>=sizeof(int))
二、计算机中的单位
1byte=8bit byte(字节)
1kb=1024byte
1mb=1024kb
…
三、打印符号
%d ----整型
%f—float
%lf—double
%c----字符
%s----字符串(注意:这个字符串是不能有“ ”(空格)的)
%e(%E)----浮点数科学计数法(e-(E-)计数法)
%g(%G)----浮点数不显示无意义的0
%i-----有符号的十进制整数
%u----无符号的十进制整数
%o----八进制整数
%x(%X)----带符号十进制整数
%p----指针
%s----字符串
%%—“%”
2.标志
左对齐:“-” “%-20s”
右对齐:“+” “%+20s”
空格:若符号为正,则显示空格,负则显示"-" "% "
#:对c,s,d,u类无影响;对o类,在输出时加前缀o;对x类,在输出时加前缀0x;
对e,g,f 类当结果有小数时才给出小数点。
3.格式字符串(格式)
[标志][输出最少宽度][.精度][长度]类型
“%-md” :左对齐,若m比实际少时,按实际输出。
“%m.ns”:输出m位,取字符串(左起)n位,左补空格,当n>m or m省略时m=n
“%7.2s” 输入CHINA
输出" CH"
“%m.nf”:输出浮点数,m为宽度,n为小数点右边数位
“%” 输入3852.99
输出3853.0
四、常量与变量
在{}外边的是全局变量,可以决定全部;
在{}里边的是局部变量只决定{}范围内的数据
当全局变量与局部变量的名称冲突时局部变量会覆盖全局变量。
全局变量 在main函数之前声明可以使用,在外部文件的需要借用extern借用外部变量
变量的生命周期:指的是变量的创建与销毁之间的时间段。
常量:
1、字面常量 如数字等等
2、const修饰的常量 const修饰的变量称为常变量
3、#define 定义的标识符常量 define在定义值时无等号 可以在{}外定义
4、枚举常量
enum xxx
{
a,b,c,d
};
这样我们可以对a赋初值(默认是0)这样bcd依次为1,2,3;
五、字符串
定义:用双引号括起来的一串字符 “sdadadsda”
字符串在结尾隐藏\0,\0是字符串结束的标志
char arr1[]=“abc”;
char arr2[]={‘a’,‘b’,‘c’}
arr1后边有\0所以有四个元素,arr2没有\0无法停止,有随机个元素
arr1是字符串类型,arr2是字符类型
求字符串长度用strlen,计算时\0不包含在字符串长度内
六、转义字符
? 在书写连续多个问号时,防止他们被解析成三字母词
'用于表示字符常量‘
\“ 用于表示一个字符串内部的双引号
\用于表示一个反斜杠,防止他被解释为一个转义序列符。
\a警告字符,蜂鸣(产生声音或视觉信号)
\b退格符(在使用时,如果后边还有要输出的内容就会覆盖掉\b前一位,否则就不会)
\f进纸符(将光标移到下一页)
\n换行
\r回车(与\n不同,\r将光标移动到原来这一行的开头)
\t水平制表符(相当于Tab)
\v垂直制表符(将\v之后的内容另起一行输出,且这一行的内容的开头为\v之前的最后一个位置的后一位)
\ddd表示1~3个八进制的数字 如\130X
\xdd dd表示2个十六进制的数字 如\x30 0
数字符串长度时\t算一个 \111 \x11这样的进制数注意 八进制中不出现8
注释 // 解释复杂代码
//
/*
’‘’‘’‘’‘
*/
七、关键字
-
void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果
-
char:字符型类型数据,属于整型数据的一种
-
int:整型数据,通常为编译器指定的机器字长
-
float:单精度浮点型数据,属于浮点数据的一种
-
double:双精度浮点型数据,属于浮点数据的一种
-
short:修饰int,短整型数据,可省略被修饰的int。
-
long:修饰int,长整形数据,可省略被修饰的int。
-
signed:修饰整型数据,有符号数据类型
-
unsigned:修饰整型数据,无符号数据类型
-
struct:结构体声明
-
union:共用体声明
-
enum:枚举声明
-
typedef:声明类型别名
-
sizeof:得到特定类型或特定类型变量的大小
-
auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配
auto的原理就是根据后面的值,来自己推测前面的类型是什么
auto x1 = 5, x2 = 5.0, x3='r';
-
static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。
全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化。
普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用。也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。
静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。函数
函数的使用方式与全局变量类似,在函数的返回类型前加上static,就是静态函数。其特性如下:
-
静态函数只能在声明它的文件中可见,其他文件不能引用该函数
-
不同的文件可以使用相同名字的静态函数,互不影响
-
register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
-
extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用“
-
const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
-
volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
-
return:用在函数体中,返回特定值(或者是void值,即不返回值)
-
continue:结束当前循环,开始下一轮循环
-
break:跳出当前循环或switch结构
-
goto:无条件跳转语句
-
if:条件语句
-
else:条件语句否定分支(与if连用)
-
switch:开关语句(多重分支语句)
-
case:开关语句中的分支标记
-
default:开关语句中的“其他”分治,可选。
-
for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2…循环,其中2为循环条件
-
do:do循环结构,do 1 while(2);的执行顺序是1->2->1…循环,2为循环条件
-
while:while循环结构,while(1) 2;的执行顺序是1->2->1…循环,1为循环条件