Android的JNI开发
变量的定义
int i;
typedef int x;//定义一个int x数据类型
x a=10;
printf("size=%d",sizeof(i));//获取int类型长度(4个字节) system("pause");//不让窗体立即消失 循环
在c语言中,循环的变量必须在外面生命
int i
for(i=0;i<10;i++){
printf("i=%d",i);
} 指针变量
int i=10;
int* p;//声明一个指针变量
p=&i;//取出i的地址值,赋值给指针变量
*p取出指针指向的值 多级指针
int i=10;
int* p;
p=&i; int** s;
s=&p; int*** x;
x=&s; //取出i的值,这里有一个规律,前面有多少个*,取得时候就在签名加几个*
printf("i=%d",***x); 数组
数组的定义
int arr[3]或者int arr[]={1,2,3}; 遍历数组:
//1.普通方式
int i;
for(i=0;i<3;i++){
printf("arr[%d]=%d\n",i,arr[i]);
}
//2.通过指针方式获取 <*(arr+j)>
int j;
for(j=0;j<3;j++){
printf("arr[%d]=%d\n",j,*(arr+j));
} 结构的定义与使用
//1.定义结构体
struct person{
int age;
}
//2.结构体的使用
struct person p;
p.age=10;
printf("p.age=%d",p.age); 结构体指针变量的定义与使用
struct person{
int age;
} *p;//声明一个结构体指针变量 //动态申请内存空间
p=(struct person*)malloc(sizof(struct person));
p->age=18;
printf("p->age=%d",p->age); 函数的定义与使用
#include<stdio.h>
int sum(int x,int y);//声明一个函数
main(){
int x=10;
int y=10;
int z=sum(x,y);//调用函数进行求和运算
printf("z=%d",z);
system("pause");
}
//真实的函数
int sum(int x,int y){
return x+y;
} 函数的还可以直接定义
int sum(int x,int y){
return x+y;
}
main(){
int x=10;
int y=10;
int z=sum(x,y);//调用函数进行求和运算
printf("z=%d",z);
system("pause");
} 两个变量的交换
change2(int* x,int* y){
int z=*x;
*x=*y;
*y=z;
}
main(){
int x=1;
int y=2;
change2(&x,&y);
printf("x=%d\n",x);
printf("y=%d\n",y);
system("pause");
}
指针函数
#include<stdio.h>
int sum(int x,int y){
return x+y;
}
main(){
int (*s)(int,int); //定义一个函数指针
s=sum; //给函数指针赋值
int x=s(2,3);
printf("x=%d",x);
system("paud");
} 在结构体中使用函数指针
1.定义一个函数
2.顶一个结构体,并在结构体中 定义一个函数指针
3.在main函数中,定义一个结构体指针
4.通过结构体指针给函数指针赋值,以及成员赋值
#include<stdio.h>
//1.定义一个函数
int sum(int x,int y){
return x+y;
}
//2.顶一个结构体,并在结构体中 定义一个函数指针
struct stu{
int age;
//函数指针
int (*score)(int,int);
}
main(){
//3.定义一个结构体指针
struct stu* s=(struct stu*)malloc(sizeof(struct stu*)); //4.给函数指针赋值
s->score=sum;
//给结构体中成员属性赋值
s->age=s->score(1,2); printf("age=%d",s->age);
system("pause");
} 联合的定义与使用
//定义一个联合
union un{
int age;
char x;
}
main(){
union un abc;//定义一个联合变量
abc.age=10;
printf("age=%d\n",abc.age);
printf("x=%d\n",abc.x);
system("pause");
} 枚举的使用
//定义一个枚举,枚举中的成员都是一个整型常量值
enum mode{
a=100,//如果不赋值,默认从0开始,如果赋值则后面的一次加1
b
}
main(){
//定义一个枚举变量
enum mode m=a;
printf("m=%d",m);
system("pause");
} 类型说明
typedef int xx ;
xx a=100; define指令,定义全局内容;在c中1代表真,0代表假
#define TRUE 1;
#define FALSE 0;
if(TRUE){
....
}else{....} 定义一个全局方法
#define Max(x,y) (x>y)?x:y 动态数组
int* arr=(int*)malloc(4*10);
文件读取
int main(){
FILE* fp;
char ch;
if((fp=fopen("mm.txt","rt"))== NULL){
printf("文件不存在or读取失败\n");
}else{
//怎么读取文件的内容?
ch=fgetc(fp);//从流里面获取字符
while (ch!=EOF)
{
putchar(ch);//在stdout上输出字符
ch=fgetc(fp);
}
fclose(fp);//关闭一个流
}
system("pause");//暂停 让cmd窗口不消失
} jni开发流程:
1 新建一个android工程
2 add native support 生成jni文件夹 Android.mk文件 + xx.cpp文件
3 修改文件 Android.mk .cpp 改为.c xx.cpp文件 改为.c
----------------------------------------------------------------------------
该工程可以进行ndk开发 4 在MainActivity.java里面添加一个native方法 public native String getString();
5 生成头文件
cmd
cd /d 工程的src目录
javah com.itcast.jni1.MainActivity 在src生成一个 com_itcast_jni1_MainActivity.h
----------------------------------------------------------------------------
生成了头文件 6 把com_itcast_jni1_MainActivity.h 复制到jni下面,拷贝里面的方法到.c文件
7 完成.c文件内容的编写
----------------------------------------------------------------------------
c代码编写完成 8 编译c代码
右键工程 --》 Build configuration --> buill all 生成.so文件 9 加载动态链接库文件
static{
System.loadLibrary("hello");
} 10 调用native方法
Android的JNI开发的更多相关文章
- Android Studio JNI开发入门教程
Android Studio JNI开发入门教程 2016-08-29 14:38 3269人阅读 评论(0) 收藏 举报 分类: JNI(3) 目录(?)[+] 概述 在Andorid ...
- android下JNI开发
android下JNI开发 what 什么是JNI JNI java native interface native本地 java本地接口 通过JNI可以实现java和本地代码之间相互调用 jni可以 ...
- Android Studio JNI 开发简单案例
转载:http://www.androidchina.net/5744.html 进程保活,热修复,硬件接入等等都需要底层的支持,而底层代码是 C .C++ 写的,那么在 Android 中怎么调用底 ...
- 实现Android Studio JNI开发C/C++使用__android_log_print输出Log
相信很多人在刚开始学习Android JNI编程的时候,需要输出Log,在百度Google搜索的时候都是说需要在Android.mk中加入LOCAL_LDLIBS+= -L$(SYSROOT)/usr ...
- NDK工具开发Jni,Android studio jni开发
NDK工具开发JNI 对于JNI的作用,我这边就不详细说明了,百度google 有很多这样的介绍,这边着重详解AS使用NDK工具开发,调C的流程. 1,创建工程 2,创建native方法 //该类的路 ...
- Android游戏开发实践(1)之NDK与JNI开发03
Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...
- Android游戏开发实践(1)之NDK与JNI开发01
Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- android JNI开发
1.NDK简介 NDK(Native Development Kit)NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.NDK集成了交叉 ...
随机推荐
- C#泛型类的简单创建与使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Cons ...
- Python之路,Day4 - Python基础4 (new版)
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- Python 代码实现模糊查询
Python 代码实现模糊查询 1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列 ...
- DEDECMS批量修改默认文章和列表命名规则的方法
很多人因为添加分类而苦恼,尤其是批量添加的时候,必须要重新修改一下文章命名规则和列表命名规则,都是为了做SEO.如果进行默认值的修改,就会事半功倍.不多说. 一.DEDE5.5修改默认文章命名规则. ...
- get the text value of a selected option.
<select id="myselect"> <option value="1">Mr</option> <optio ...
- 困扰:C#.net 连接Oracle11g 不报错但是在connection时出现 ServerVersion 引发了“System.InvalidOperationException”类型的异常
今天在使用VS2008 32位 连接 64位的Oracle11g的数据库时出现 “conn.ServerVersion”引发了“System.InvalidOperationException”类型的 ...
- iOS关于sqlite3操作
原文:http://hi.baidu.com/clickto/blog/item/0c6904f787c34125720eec87.html iPhone中支持通过sqlite3来访问iPhone本地 ...
- (转载)最实用的清除浮动代码 css的文字过长裁剪后面跟着省略号
css: .clearfloat:after{display:block;clear:both;content:"";visibility:hidden;} .clearfloat ...
- iPhone mobile safari fixed 元素滚动慢的问题处理
最近做一个手机阅读应用,抓取网站数据,做格式化后,适合手机浏览器以及电脑上阅读,不显示任何其他内容无关元素. Site:http://cbread.duapp.com/ 固定左侧边栏时,使用的CSS如 ...
- localStorage 的基本使用
① localstorage大小限制在500万字符左右,各个浏览器不一致② localstorage在隐私模式下不可读取③ localstorage本质是在读写文件,数据多的话会比较卡(firefox ...