什么是jni
jni java native interface
android 也是用到了jni
就是翻译 c 和java
为什么用jni
一次编译 到处运行
c语言可以进行驱动的开发 驱动就是和硬件打交道 01010111
c语言执行效率比较快 java 内存回收基于算法的回收 二级链表 c语言是手动回收
自动车 手动车的
c 70年代 产生了大量可以复用的代码
7-zip
ffmpeg 音视频解码
opencore 音视频
opencv 图像处理
医疗管理平台
扫描二维码
美国红外线 需要单独调用一个驱动 c代码
车载系统 android
怎么用jni
c语言 > java >c# >美工
面向过程
第一步打开冰箱门
第二部放进大象
3 关门
面向对象
冰箱对象
了解jni
熟悉jni
掌握jni
精通jni
为什么使用 DEVCPP_skycn
c99 标准
arr.lenth
// 内存越界
指针
指针其实就是代表的内存地址
地址就是系统给内存分配的编号
指针变量 存放地址的变量
两个常见的错误
1 不给指针赋值 直接调用 野指针
2 指针类型和地址的类型不匹配
float t
int* i=&t
指针和指针变量混淆
int* p
(*p).age; * 的优先级特别的低
* 号的三种含义
1 乘法
2 如果*在类型后 代表是该类型的指针变量类型
3 * 如果再指针变量前
指针常见错误
32 位 4G内存 8G
64位
int 2^32
.dll windows下库函数
.so 动态函数库 体积小 别的库里面的函数动态加载进来
.a 静态的库函数 只要用到的函数包括别的包的 都打包进来
指针和数组的关系
// 数组中的元素在一块连续的内存地址中
// 数组变量的内存地址对应的是数组中第一个元素的内存地址
同类型的指针默认的偏移量是不一样的 int* 偏移4个字节
指针的运算
内存分配
静态内存
动态内存
.data // 常量池
C语言 内存
.code 区 // 存放的都是代码
main();
.stack;// 占内存 所有静态分配的内存 都放在栈内存中 吃完吐 连续分配 先进后出 队列 先进先出 吃完拉
堆内存 // 动态分配的内存 都放在堆内存中, 不是连续分配内存的
free() ;// 手动释放内存 硬盘删除文件 30次
malloc memorry alloc
// class Person{
int age;
String name;
char sex;'m'
}
char* c 可以表示字符串