C语言
1、数据类型
char 字符数据类型
short 短整型
int 整形型
long 长整型
long long 更长的整型
float 单精度浮点数
double 双精度浮点数
2、常量、变量
1、变量分为局部变量和全局变量
2、当全局变量和局部变量名字相同的情况下,局部优先
3、变量的作用域和生命周期
作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的
而限定这个名字的可用性的代码范围就是这个名字的作用域
1、局部变量的作用域是变量所在的局部范围
2、全局变量的作用域是整个工程
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1、局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2、全局变量的生命周期是:整个程序的生命周期
(声明来自外部的符号:extern int a;)
常量
C语言中的常量分为以下几种:
· 字面常量
· const 修饰的常变量,在C语言中,const 修饰的 a,本质是变量,但是又不能被直接修改,有常量的属性。
· #define 定义的标识符常量
· 枚举常量
3.字符串+转义字符+注释
3.1 字符串
这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
3.2 转义字符及释义
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\'用于表示字符常量 '
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\ddd表示1~3个八进制的数字
\xdd表示2个十六进制数字
3.3 注释
1、代码中有不需要的可以删除,或注释掉
2、难懂的代码要加注释
4.操作符
算术操作符:+ - * / %
移位操作符:>> <<
位操作符:& ^ |
赋值操作符:= += -= *= /= &= ^= |= >>= <<=
单目操作符:
!逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节为单位)
~对一个数的二进制按位取反
-- 前置--、后置--
++ 前置++、后置++
*间接访问操作符(解引用操作符)
(类型) 强制类型转换
关系操作符:
> 大于
>= 大于等于
< 小于
<= 小于等于
!= 用于测试“不相等”
== 用于测试“相等”
逻辑操作符:
&& 逻辑与
|| 逻辑或
条件操作符(三目操作符):exp1 ? exp2 : exp3
表达式1为真,算表达式2,不算表达式3,表达式2结果即为整个结果。
表达式1为假,算3不算2,3即为结果。
逗号表达式:从左到右依次计算,整个表达式的结果是最后一个表达式的结果。
下标引用、函数调用和结构成员:[ ] ( ) . ->
5.常见关键字
auto:用于声明自动变量
break:用于跳出当前循环(for、while、do-while)或 switch 语句,执行跳出后的下一条语句
case:与 switch 配合使用,当 switch 表达式的值与 case 后的值匹配时,执行该 case 下的语句
char:用于声明字符型变量或指针,占用 1 个字节
const:用于声明常量,表示该变量的值在初始化后不能被修改,是只读的
continue:用于循环语句中,跳过本次循环中 continue 后面的语句,直接进入下一次循环
default:与 switch 配合使用,当switch表达式的值与所有case都不匹配时执行
do:与 while 组成 do-while 循环,先执行循环体一次,再判断循环条件,至少执行一次循环体
double:用于声明双精度浮点型变量
else:与 if 配合使用,可构成 if-else、if-else if-else 等分支结构
enum:用于定义枚举类型
extern:用于声明外部变量或函数
float:用于声明单精度浮点型变量
for:用于构成 for 循环,是一种常用的循环控制语句,可指定循环的初始条件、循环条件和循环后操作
goto:用于无条件跳转到函数内的某个标号处
if:用于构成条件判断语句,当 if 后的条件成立时,执行其后的语句,可单独使用或与 else 配合使用
int:用于声明整型变量,通常占用 4 个字节
long:用于修饰整型变量,声明长整型变量
register:用于声明寄存器变量
return:用于函数中,结束函数的执行
short:用于修饰整型变量,声明短整型变量
signed:用于修饰整型变量,表示该变量是有符号的
sizeof:用于计算变量或数据类型所占用的字节数
static:静态修饰
struct:用于定义结构体类型
switch:用于构成多分支选择语句,根据 switch 后表达式的值,跳转到对应的 case 分支执行,常与 case、default 配合使用
typedef:用于为已有的数据类型定义一个新的别名
union:用于定义共用体类型
unsigned:用于修饰整型变量,表示该变量是无符号的,只能表示非负数
void:表示 “无类型”
volatile:用于声明易变变量
while:用于构成 while 循环,先判断循环条件,当条件成立时,执行循环体,否则跳出循环
5.1关键字static
在C语言中:static 是用来修饰变量和函数的。
修饰局部变量—称为静态局部变量
修饰全局变量—称为静态全局变量
修饰函数—称为静态函数
static修饰局部变量的时候,局部变量出了作用域,不会销毁。本质上,static 修饰局部变量的时候,改变了变量的存储位置的,影响了变量的生命周期,生命周期变长,和程序的生命周期一样。
全局变量是具有外部链接属性的,static 修饰全局变量的时候,这个全局变量的外部链接属性就变成了内部链接属性,其他源文件就不能再使用到这个全局变量了。
函数是具有外部链接属性,一个函数本来是具有外部链接属性的,但是被 static 修饰的时候,外部链接属性就变成了内部链接属性,其他源文件就无法使用了。
6.指针
6.1 内存:内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
6.2 指针变量的大小:指针大小在32位平台是4个字节,在64位平台是8个字节。
7.结构体
7.1 结构体指针变量 -> 成员名 例:ps -> name.
结构体对象.成员名 例:(*ps).name.
7.2 在结构体传参的时候,最好传地址。
原因:函数传参的时候,参数是需要压栈的。
如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。
总结:结构体传参的时候,要传结构体的地址。
打印格式说明符:
整型:%d 十进制有符号整数
%u 十进制无符号整数
%ld 十进制有符号长整型
%lu 十进制无符号长整型
%hd 短整型
%hu 无符号短整型
浮点型:%f 十进制浮点数(默认保留6位小数)
%lf 双精度浮点数
%e 科学计数法形式
%g 根据数值大小自动选择%f或%e格式
字符型:%c 单个字符
%s 字符串
指针类型:%p 十六进制指针的值
其他:%x 十六进制无符号整数
%o 八进制无符号整数
%5d 输出的整数占5个字符宽度
%.2f 输出的浮点数保留2位小数
%zu 输入或输出size - t类型的(也是sizeof专用的)
9万+

被折叠的 条评论
为什么被折叠?



