day50_安卓项目开发基础C语言

01_什么是jni

Java Native Interface ---- 一种协议,提供了一套编程框架

            实现Java和本地代码相互调用

02_为什么需要jni

  1. 操作低层硬件,Android上面的传感器
  2. 当程序对运行效率和空间有要求的时候,图形的渲染,音视频的解码
  3. 复用已经成熟的C开源软件,OpenGL(开源图形库),OpenSSL(安全加密),SQLite3,FFmpeg
  4. 安全性的要求,本地C代码反编译困难
  5. 复用公司之前的成熟代码,跑跑卡丁车跨平台

03_C基础内容

 

 

使用JNI前提:

  1. 掌握java语言
  2. 了解C/C++语言
  3. 掌握JNI流程和规范
  4. 掌握开发工具NDK(Native Development Kits)

 

04_C开发工具介绍

 

05_C基本数据类型

06_C里面的输出函数

格式化输出函数printf d u o x 整数,c sf

  • %d 十进制有符号 int
  • %u 十进制无符号 unsigned int
  • %o 八进制无符号 unsigned int
  • %x 十六进制无符号 unsigned int
  • %o%x中间加#,输出前导0,0x
  • %c 输出一个字符
  • %s 输出一个字符串,若干个
  • 若要输出longdouble类型,在相应字符前l
  • %ld %lf
  • 输出short类型用%hd
  • %p输出变量的地址

    07_C里面的输入函数

     

    08_什么是指针

    1.内存:一维线性分部

    内存的最小单位1byte,8bits

        32位CPU:4G内存地址空间

        

    2.内存单元:通过内存编号来区分管理

    内存单元的编号可以作为内存单元的地址

    3.指针:内存单元的编号

     

     

    09_指针变量及运算符

     

    10_指针的指向

     

    11_指针的误用

     

     

    12_函数传参的值传递和地址传递

     

    函数传参交换2数值:

    定义一个 数据类

     

     

    13_利用地址传递获得函数中多于一个的结果

    C语言一个函数传递返回多个数据:传递多余变量的指针,或者结构体

    Java参数传递:类似C的结构体指针传递

     

    14_C中字符串的存储及操作

    SIzeof() :求得是字符串数组的长度,而不是字符串的长度

     

    strlen()测试字符串长度,不计算空字符(包括\0) string.h

    15_函数不能返回栈上(局部)变量的地址

     

    16_指针的运算

    P(NULL) + 1 = 0x1(x)

    指针变量加减一个整数n,指针向高地址或低地址移动n个对象,n*sizeof(变量)

    在连续的内存空间上移动

     

    3代表对象个数,其长度是12字节

     

    17_数组

    相同数据类型变量的集合

  1. 元素类型相同
  2. 元素内存连续
  3. 数组名代表首元素首地址

 

18_指针与数组的关系

 

 

传递首地址后,在函数里更改了数组元素,外面的数组也会变

 

19_C程序运行时内存的分布图

20_堆区内存分配及释放

栈相对于堆非常的小

堆:只要有内存就可以再分配

栈:自动释放

 

malloc 返回void *

避免内存泄露,free(p)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值