# C语言
C语言是编译型语言,编写好代码之后,需要由编译器编译后成不同平台的可执行文件才能执行,常见的编译器GCC、MSVC、Clang
-一般公司,加密使用java加密
-jadx反编译搜索--》定位代码--容易破解
-NB公司,加密通过java+C实现加密--》核心加密逻辑是c,用java调用
-jadx反编译--》得到java代码--》看不到加密逻辑
-使用IDA对c进行反编译--》分析代码---》要能看懂c代码
c语言的动态链接库文件
-安卓中 xx.so java 调用 so
-linux中 xx.so
-win中 xx.dll
-比如打开一款软件--》图形化界面--》xx.exe--->在执行过程中可能会加载别的功能--》如果把所有功能都写在exe中,exe会非常大,打开很慢--》c支持动态链接库---》类似于python的包,java的jar文件
-本质就是一些c写的函数--》打包了
[安装]
安装 MinGW
-下载:https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe
IDA Pro:IDA Pro是一款强大的逆向工程工具,支持多种平台和架构,包括C语言。它提供了反汇编、反编译、调试等功能,能够帮助你还原C语言so文件的源代码。但需要注意的是,IDA Pro是商业软件,需要购买授权
## 整型
| 类型 | 存储大小 | 值范围 |
| :------------- | :---------- | :--------------------------------------------------- |
| char | 1 字节 | -128 到 127 或 0 到 255 |
| unsigned char | 1 字节 | 0 到 255 |
| signed char | 1 字节 | -128 到 127 |
| int | 2 或 4 字节 | -32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647 |
| unsigned int | 2 或 4 字节 | 0 到 65,535 或 0 到 4,294,967,295 |
| short | 2 字节 | -32,768 到 32,767 |
| unsigned short | 2 字节 | 0 到 65,535 |
| long | 4 字节 | -2,147,483,648 到 2,147,483,647 |
| unsigned long | 4 字节 | 0 到 4,294,967,295 |
## 浮点数
| 类型 | 存储大小 | 值范围 | 精度 |
| :---------- | :------- | :--------------------- | :---------- |
| float | 4 字节 | 1.2E-38 到 3.4E+38 | 6 位有效位 |
| double | 8 字节 | 2.3E-308 到 1.7E+308 | 15 位有效位 |
| long double | 16 字节 | 3.4E-4932 到 1.1E+4932 | 19 位有效位 |
## 布尔类型
true / false
## 字符
**在C语言中没有字符串。**
用 **字符数组** 创造出字符串出来(每个字符占1个字节)
## 数组
对于**数组**来说,内部元素是挨个存放,内存地址相邻。
它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,是一系列相同类型的变量
## 指针
指针是存储变量内存地址的变量
## 条件语句
if ... else
## 循环语句
while
do ... while
for(int i=0;i<n;i++){}
for(; ;){}
## 函数
```c
返回值类型 函数名( 参数类型 形参 )
{
函数体;
}
```