day50_安卓项目开发基础C语言
01_什么是jni
Java Native Interface ---- 一种协议,提供了一套编程框架
实现Java和本地代码相互调用
02_为什么需要jni
- 操作低层硬件,Android上面的传感器
- 当程序对运行效率和空间有要求的时候,图形的渲染,音视频的解码
- 复用已经成熟的C开源软件,OpenGL(开源图形库),OpenSSL(安全加密),SQLite3,FFmpeg
- 安全性的要求,本地C代码反编译困难
- 复用公司之前的成熟代码,跑跑卡丁车跨平台
03_C基础内容
使用JNI前提:
- 掌握java语言
- 了解C/C++语言
- 掌握JNI流程和规范
- 掌握开发工具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_数组
相同数据类型变量的集合
- 元素类型相同
- 元素内存连续
- 数组名代表首元素首地址
18_指针与数组的关系
、
传递首地址后,在函数里更改了数组元素,外面的数组也会变
19_C程序运行时内存的分布图
20_堆区内存分配及释放
栈相对于堆非常的小
堆:只要有内存就可以再分配
栈:自动释放
malloc 返回void *
避免内存泄露,free(p)
day50_安卓项目开发基础C语言相关推荐
- 反思:项目开发中的语言沟通与文档沟通
反思:项目开发中的语言沟通与文档沟通 问题引出:刚进入公司试用期,有导师安排开发实现一些功能模块或者小的应用.毕竟需要在整个产品的框架下添加代码,看了下整个产品近1G的源代码,相当浩瀚.虽然是不需要我 ...
- 给Java开发者的Flutter开发基础---Dart语言
接近半年没有在简书冒泡了.这段时间一是忙于使用云信IM开发相应项目,二是整理和收集相关Flutter的相关资料进行学习.国内关于Flutter的资料还是太过于稀少,以至于我只能去YouTube和Ude ...
- 基于TCP/IP协议的物联网安卓应用开发基础教程(Android Studio开发)
[华为云IOT物联网论坛外部版主:中华小能能] 第0章 简介 大家好,在上上上期发布的教程中,教大家如何利用Android Studio开发出一款接入华为云物联网平台并调用相关API完成设备属性查询. ...
- 12星座代码c语言,安卓项目开发实战(2)--星座展示12宫格(示例代码)
package com.liuc.constatntEnum; import com.liuc.R; /** * 星座枚举 * * @author Administrator * */ public ...
- 安卓初中级开发基础知识整理(面试自用)
文章目录 前言 一.Android之四大组件.六大布局.五大存储 二.安卓线程原理 三.安卓开源框架 三.安卓架构MVC.MVP.MVVM 四.设计模式 面试题整理 1.Activity A 跳转到 ...
- kotlin项目开发基础之gradle初识
在Android Studio推出之后默认的打包编译工具就变为gradle了,我想对于一名Android程序员而言没人不对它知晓,但是对于它里面的一些概念可能并不是每个人都了解,只知道这样配置就ok了 ...
- 安卓软件开发基础教学!写给1-3年安卓程序员的几点建议,跳槽薪资翻倍
前言 这份Android面试真题涵盖了图片,网络和安全机制,网络,数据库,插件化.模块化.组件化.热修复.增量更新.Gradle,架构设计和设计模式,Android Framework .Androi ...
- iOS高级进阶系列之项目开发基础(上)多环境配置,Mach-O与链接器。
前言 最近对项目进行优化,就顺便写一些日常开发中会用到的中高级开发技巧.这篇文章聊一下下面三个内容:多环境配置,Mach-O与链接器,Symbol. 多环境配置 聊到多环境配置,我们先说几个概念 上图 ...
- iOS开发基础-C语言数据类型和运算符
第2章 数据类型和运算符 2.1 注释 程序注释是源代码的一个重要部分,对于一份规范的程序源代码而言,注释应该占到源代码的1/3以上: 单行注释 //: 多行注释 /*注释开始和*/注释结束,需要指出 ...
最新文章
- 理论实践都重要,交换机安装全接触
- spring教程极客学院,Mybatis-Plus学习总结(超详细整理
- 数据中心主机房的加湿量和除湿量如何计算
- 魔兽世界客户端数据研究(三)
- 指令系统 CISC和RISC(详解)
- Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
- C++之继承探究(三):继承的方式
- [导入]一个Form验证的方案
- 微信小程序登录 php后台
- Deeping操作系统配置tomcat并运行第一个Javaweb程序
- 富瑞和SMBC Group宣布结成战略联盟来推动增长
- 一网打尽!所有PMP的计算公式都在这里啦,赶紧学起来,建议收藏
- oracle12c 配置监听,redhat上oracle 12c配置监听
- 服务器怎么解绑网站域名,宝塔面板如何解绑域名
- win7 装MacOS虚拟机做iOS开发
- Effie:沉浸写作,创造价值
- 跨平台应用开发进阶(四十五)uni-app集成企微客服实战
- 力扣题:977. 有序数组的平方
- 在零售业发展积极回报体验的3个步骤
- 自学security笔记