目录
数据类型
char | 字符数据类型 | 1字节 |
short | 短整形 | 2字节 |
int | 整形 | 4字节 |
long | 长整型 | 4字节 |
long long | 更长的整形 | 8字节 |
float | 单精度浮点数 | 4字节 |
double | 双精度浮点数 | 8字节 |
c语言标准规定 sizeof(long) >= sizeof(int)
变量、常量
定义变量的方法
float weight = 45.5f;
//45.5 编译器默认double类型,45.5f为float类型
变量的分类
局部变量
全局变量
当局部变量和全局变量同名的时候,局部变量优先使用。
变量的使用
变量的作用域和生命周期
作用域
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用
的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
1. 局部变量的作用域是变量所在的局部范围。
2. 全局变量的作用域是整个工程。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
2. 全局变量的生命周期是:整个程序的生命周期。
常量
- 字面常量
- const 修饰的常变量
- #define 定义的标识符常量
- 枚举常量
#include <stdio.h>
//举例
enum Sex
{
MALE,
FEMALE,
SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
3.14;//字面常量
1000;//字面常量
const float pai = 3.14f; //const 修饰的常量
pai = 5.14;//ok?
#define MAX 100 //#define的标识符常量
return 0;
}
字符串、转义字符、注释
字符串
字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
转义字符
转义字符 | 释义 |
---|---|
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量' |
\“ | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1~3个八进制的数字。 如: \130 X |
\xdd | dd表示2个十六进制数字。 如: \x30 0 |
注释
- C语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释- C++风格的注释 //xxxxxxxx
可以注释一行也可以注释多行
选择语句
if语句、switch语句
循环语句
while、for、do...while
函数
特点就是简化代码,代码复用。
主函数一个。
数组
数组定义
int arr1[5] = { 1,2,3,4,5 };
int arr2[] = { 1,2,3,4,5 };
int arr3[5] = {0};
数组的使用:下标从0开始
操作符
算数操作符
+ - * / %
移位操作符
>> <<
位操作符
& ^ |
赋值操作符
= += -= *= /= &= ^= |= >>= <<=
单目操作符
关系操作符
> >= < <= != ==
逻辑操作符
&& ||
条件操作符
exp1 ? exp2 : exp3
逗号表达式
exp1, exp2, exp3, …expN
逗号表达式的值为最后一个子表达式的值
下标引用、函数调用和结构成员
[] () . ->
常见关键字
typedef 类型重命名
static
1. 修饰局部变量-静态局部变量 延长局部变量生命周期
2. 修饰全局变量-静态全局变量 使全局变量只能在本源文件内使用
3. 修饰函数-静态函数 使这个函数只能在本源文件内使用
#define 定义常量和宏
//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0;
}
指针
int num = 10;
int *p;//p为一个整形指针变量
p = #
指针大小在32位平台是4个字节,64位平台是8个字节
结构体
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);