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 s,f

  • %d 十进制有符号 int
  • %u 十进制无符号 unsigned int
  • %o 八进制无符号 unsigned int
  • %x 十六进制无符号 unsigned int
  • 在%o和%x中间加#,输出前导0,0x
  • %c 输出一个字符
  • %s 输出一个字符串,若干个
  • 若要输出long和double类型,在相应字符前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)

day50_安卓项目开发基础C语言相关推荐

  1. 反思:项目开发中的语言沟通与文档沟通

    反思:项目开发中的语言沟通与文档沟通 问题引出:刚进入公司试用期,有导师安排开发实现一些功能模块或者小的应用.毕竟需要在整个产品的框架下添加代码,看了下整个产品近1G的源代码,相当浩瀚.虽然是不需要我 ...

  2. 给Java开发者的Flutter开发基础---Dart语言

    接近半年没有在简书冒泡了.这段时间一是忙于使用云信IM开发相应项目,二是整理和收集相关Flutter的相关资料进行学习.国内关于Flutter的资料还是太过于稀少,以至于我只能去YouTube和Ude ...

  3. 基于TCP/IP协议的物联网安卓应用开发基础教程(Android Studio开发)

    [华为云IOT物联网论坛外部版主:中华小能能] 第0章 简介 大家好,在上上上期发布的教程中,教大家如何利用Android Studio开发出一款接入华为云物联网平台并调用相关API完成设备属性查询. ...

  4. 12星座代码c语言,安卓项目开发实战(2)--星座展示12宫格(示例代码)

    package com.liuc.constatntEnum; import com.liuc.R; /** * 星座枚举 * * @author Administrator * */ public ...

  5. 安卓初中级开发基础知识整理(面试自用)

    文章目录 前言 一.Android之四大组件.六大布局.五大存储 二.安卓线程原理 三.安卓开源框架 三.安卓架构MVC.MVP.MVVM 四.设计模式 面试题整理 1.Activity A 跳转到 ...

  6. kotlin项目开发基础之gradle初识

    在Android Studio推出之后默认的打包编译工具就变为gradle了,我想对于一名Android程序员而言没人不对它知晓,但是对于它里面的一些概念可能并不是每个人都了解,只知道这样配置就ok了 ...

  7. 安卓软件开发基础教学!写给1-3年安卓程序员的几点建议,跳槽薪资翻倍

    前言 这份Android面试真题涵盖了图片,网络和安全机制,网络,数据库,插件化.模块化.组件化.热修复.增量更新.Gradle,架构设计和设计模式,Android Framework .Androi ...

  8. iOS高级进阶系列之项目开发基础(上)多环境配置,Mach-O与链接器。

    前言 最近对项目进行优化,就顺便写一些日常开发中会用到的中高级开发技巧.这篇文章聊一下下面三个内容:多环境配置,Mach-O与链接器,Symbol. 多环境配置 聊到多环境配置,我们先说几个概念 上图 ...

  9. iOS开发基础-C语言数据类型和运算符

    第2章 数据类型和运算符 2.1 注释 程序注释是源代码的一个重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上: 单行注释 //: 多行注释 /*注释开始和*/注释结束,需要指出 ...

最新文章

  1. 理论实践都重要,交换机安装全接触
  2. spring教程极客学院,Mybatis-Plus学习总结(超详细整理
  3. 数据中心主机房的加湿量和除湿量如何计算
  4. 魔兽世界客户端数据研究(三)
  5. 指令系统 CISC和RISC(详解)
  6. Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
  7. C++之继承探究(三):继承的方式
  8. [导入]一个Form验证的方案
  9. 微信小程序登录 php后台
  10. Deeping操作系统配置tomcat并运行第一个Javaweb程序
  11. 富瑞和SMBC Group宣布结成战略联盟来推动增长
  12. 一网打尽!所有PMP的计算公式都在这里啦,赶紧学起来,建议收藏
  13. oracle12c 配置监听,redhat上oracle 12c配置监听
  14. 服务器怎么解绑网站域名,宝塔面板如何解绑域名
  15. win7 装MacOS虚拟机做iOS开发
  16. Effie:沉浸写作,创造价值
  17. 跨平台应用开发进阶(四十五)uni-app集成企微客服实战
  18. 力扣题:977. 有序数组的平方
  19. 在零售业发展积极回报体验的3个步骤
  20. 自学security笔记

热门文章

  1. QQ邮箱开启pop3/stmp服务
  2. 面试系列之五,ccb行
  3. 最黑外包文思海辉西安分公司(连载一)
  4. linux程序给图片打马赛克,iOS集成OpenCV,并实现图片马赛克
  5. 问道服务器维护,问道手游03月02日所有服务器维护通知
  6. 快递查询api(多接口方案)
  7. 彻底搞明白,python升级后,为什么会导致yum不可用
  8. DbVisualizer Personal 中文乱码问题的通用解决方法
  9. pd.DataFrame增删改查
  10. Linux桌面新版宠物Mint 10正式发布