JNI基础 给c传递int数组,c对数组处理完毕返回给java

(1)获取java数组的长度

    int length = (*env)->GetArrayLength(env,jarray);

(2)得到数组的指针

    int * arr = (*env)->GetIntArrayElements(env,jarray,0);

(3)遍历数组中的每个元素,对其进行加5操作

  int i = 0;
    for(;i<length;i++)
    {
        (*(arr + i)) += 5;
    }

(4)返回数组

return jarray;

时间: 2024-10-19 05:17:30

JNI基础 给c传递int数组,c对数组处理完毕返回给java的相关文章

Android java传递int类型数组给C

接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] arrElementsIncrease(int[] intArray); 项目布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://sc

【转】Android JNI编程—JNI基础

原文网址:http://www.jianshu.com/p/aba734d5b5cd 最近看到了很多关于热补的开源项目——Depoxed(阿里).AnFix(阿里).DynamicAPK(携程)等,它们都用到了JNI编程,并且JNI编程也贯穿了Android系统,学会JNI编程对于我们学习研究Android源码.Android安全以及Android安全加固等都是有所帮助的.但是对于我们这些写Android应用的,大部分时间都是在使用Java编程,很少使用C/C++编程,对于JNI编程也了解的比较

JNI基础知识

JNI是在学习Android HAL时必须要面临一个知识点,如果你不了解它的机制,不了解它的使用方式,你会被本地代码绕的晕头转向,JNI作为一个中间语言的翻译官在运行Java代码的Android中有着重要的意义,这儿的内容比较多,也是最基本的,如果想彻底了解JNI的机制,请查看: http://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/design.html 本文结合了网友ljeagle写的JNI学习笔记和自己通过JNI的手册及Androi

JNI函数复杂对象传递

主要操作内容,包括如下几个部分: 1.在Native层返回一个字符串 2.从Native层返回一个int型二维数组(int a[ ][ ]) 3.从Native层操作Java层的类: 读取/设置类属性 4.在Native层操作Java层的类:读取/设置类属性.回调Java方法 5.从Native层返回一个复杂对象(即一个类咯) 6.在Java层传递复杂对象至Native层 7.从Native层返回Arraylist集合对象 广而告知,这些操作就是简单的利用一些JNI函数即实现了.so easy

Android JNI编程—JNI基础

什么是JNI,怎么使用 JNI--Java Native Interface,它是Java平台的一个特性(并不是Android系统特有的).其实主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点了.那么怎么使用JNI呢,一般情况下我们首先是将写好的C/C++代码编译成对应平台的动态库(windows一般是dll文件,linux一般是so文件等),这里我们是针对Android平台,所以

Android JNI(一)——NDK与JNI基础

本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Native相互调用 Android JNI学习(四)——JNI的常用方法的中文API Android JNI学习(五)——Demo演示 本片文章大纲如下: 1.导读 2.什么是NDK 3.为什么使用NDK 4.NDK到SO 5.JNI 大纲.png 一.导读 在Android OS上开发应用程序,Goog

jni 基础

1.java层对应到JNI层除了 基本类型,基本类型数组,string,throwable,class 之外,都是用jobject来代替 2.JNIEnv是native层,一个线程作用域的,调用虚拟机方法的对象一个线程只能用自己的JNIEnv对象(类似Threadlocal的作用于效果,和线程对象相关),如果没有那么通过JavaVM的AttachCurrentThread 获得当前线程的JNIEnv当当前线程结束时,调用JavaVM->DetachCurrentThread 释放对应的资源 3.

Java基础之路(一)下--引用数据类型之数组

上次我们说了java的基础数据类型,今天我们就来说一下引用数据类型中的数组. 什么是数组 数组:存储在一个连续的内存块中的相同数据类型(引用数据类型)的元素集合. 数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引(下标)从0开始. 数组的定义 第一种方式:类型[] 数组名; 如 int[] nums;  第二种方式:类型数组名[]; 如 int nums[]; 大多数Java程序员喜欢使用第一种风格,因为它把数据类型int[],和变量名num分开了. 数组的初始化 J

C++ 数组长度 以及 数组名作为参数 传递给函数

在看排序,首先是插入排序,思路理清后想用代码实现,然后问题来了: 如何求数组长度? 如果没记错,在Java中应该是有直接可用的方法的, Python中(序列)也有.len,在C/C++中,字符串倒是有strlen() (需要#include <string.h>) 一个办法是用 sizeof() 一.首先定义数组 int array[] = {18,10,15,7,1}; 一开始想都没想就直接在子函数里面 int array_length(int a[]){ int len = sizeof(