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集成了交叉 ...
随机推荐
- RT: TCP REUSEADDR or REUSEPORT
Welcome to the wonderful world of portability... or rather the lack of it. Before we start analyzing ...
- [转] openjdk和jdk的区别与联系
使用过LINUX的人都应该知道,在大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,那么到底什么是openjdk,它与sun jdk有什么关系和区别呢? 历史上的 ...
- CSRF跨站点请求伪造漏洞问题
最近在写php,项目写完后送检发现一个漏洞问题CSRF,强行拖了我一天的时间,沉迷解决问题,茶饭不思,日渐消瘦,时间比较赶,这篇比较糙,凑合看下. 好了废话不多说下面是今天的解决方案. 博主用的是Th ...
- Python爬虫:获取糗事百科笑话
为了收集笑话也是挺拼的,我就不相信你所有的都看过了.还有,请问哪位仁兄能指点之下怎么把网上抓取到的图片写到word里面,捉摸了好久都没弄出来. 糗百不需要登录,html直接解析,只要在reques ...
- Strust2 <c:forEach> 循环控制标签
<c:forEach>为循环控制标签 语法:迭代一集合对象中的所有成员 <c:forEach [var="varName"] items="collec ...
- Pyhton开发【第五篇】:Python基础之杂货铺
Python开发[第五篇]:Python基础之杂货铺 字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进 ...
- noi 7221 拯救公主 (状态压缩+bfs)
/* 这题实在调糊了 借鉴的题解的一些判断方法 位运算大法好 - - 因为要集齐所有的宝石所以状态压缩一下 f[i][j][s]将s化为二进制 每一0表示该宝石没有 1表示该宝石有 有:到(i,j)这 ...
- PHP 网页爬虫
只能爬一个页面 <?php function get_urls($url){ $url_array=array(); $the_first_content=file_get_contents($ ...
- 关于WCF一些基础。
关于WCF Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .N ...
- linux command cp.
Examples cp file1.txt newdir Copies the file1.txt in the current directory to the newdir subdirector ...