目录
1.数据类型
类型 | 分类 | |
---|---|---|
基本类型 | 整型 | short (2字节)int(4字节) long(4字节)long long (8字节) |
字符型 | char | |
浮点型 | 单精度float 双精度double | |
构造类型 | 数组类型 | arr |
结构类型 | struct | |
联合类型 | union | |
枚举类型 | enum | |
指针类型 | char* int* |
2.变量
先定义,在使用。
全局变量保存在内存的全局存储区中,占用静态的存储单元;
局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。
3.常量
3.1 常量
固定值,可以是很多种类型,整数类型,浮点类型。但必须要初始化
3.2 定义常量
//第一种
#define LENGTH 10
//第二种
const int var =5;
4.储存类
auto
局部变量的修饰关键字
register
register 存储类用于定义存储在寄存器中而不是 RAM 中的`局部变量
static
可修改全局变量,最大是本类文件中。
static int count=10;
extern
共享全局变量或者函数使用。
5.运算符
算术运算符
+
-
+
-
*
/
%
++a
a++
--a
a--
赋值运算符
=
+=
-=
*=
/=
%=
逻辑运算符
==
!=
<
>
<=
>=
位运算符
! 非
&& 与
|| 或
杂项运算符
运算符 | 描述 | 实例 |
---|---|---|
sizeof() | 返回变量的内存大小 | 具体几个字节 |
& | 变量的内存地址 | |
* | 指向一个变量 | *a 指向一个变量 |
6.类型优先级
6.函数
返回类型,函数名称,参数
7.数组
可以先声明,在赋值每个元素。
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
冒泡排序
int last = sizeof(arr)/sizeof(int);
for (int i = 0; i < last-1; ++i)
{
for (int y = 0; y < last-1-i; ++y)
{
if (arr[y]>arr[y+1])
{
int temp = arr[y];
arr[y] =arr[y+1];
arr[y+1] = temp;
/* code */
}
}
}
8 字符串
字符串就是以 \0 为结束符的一维字符数组
char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
1.字符串初始化
C语言没有字符串类型,通过字符数组模拟
char buf[] = { 'a', 'b', 'c' };
2.字符串长度
获取字符串长度,不包含字符串‘\0’
3.字符串追加
char str1[] = "abcdef";
char str2[] = "123456";
char dst[100];
int i = 0;
while (str1[i] != 0)
{
dst[i] = str1[i];
i++;
}
int j = 0;
while (str2[j] != 0)
{
dst[i + j] = str2[j];
j++;
}
dst[i + j] = 0; //字符串结束符
4.疑问
如果字符数组不是以‘\0’结束会怎么样?
9 编译步骤
预编译–>a.c 到 a.i文件
编译–>a.i 到 a.s文件
汇编–>a.s 到 a.o文件
链接–>a.o 到 a.exe文件(或者可执行文件)
C代码编译成可执行程序经过4步:
1)预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
2)编译:检查语法,将预处理后文件编译生成汇编文件
3)汇编:将汇编文件生成目标文件(二进制文件)
4)链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去
10 可变参数
导入stdarg.h 头文件。
int func(int num, ... )
{
func(2, 2, 3);
}
11 命令行参数
argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数
int main(int argc, char const *argv[])
{
}