c直接操做JAVA中的数组

**
 * jni对数组运算
 * 在C中没有建立新的数组副本,直接在原来的java数组上面修改。而后返回了jintArray类型数据
 */
JNIEXPORT jintArray JNICALL Java_com_org_vincent_javacallc_JNI_increseArray
        (JNIEnv * env, jobject job, jintArray jarr){java

    //一、获得java传过来的数组长度
    jsize size=(*env)->GetArrayLength(env,jarr);
    //二、获得C下的数组元素,JNI_FALSE表示不复制新的副本, jint直接获取jintArray指针
    jint *intArray=(*env)->GetIntArrayElements(env,jarr,JNI_FALSE);
    //三、遍历数组
    int i=0;
    for (i = 0; i < size; ++i) {
        *(intArray+i)=*(intArray+i)+10;
        LOGI("intArray[%d]=%d",i,*(intArray+i));
    }
    //这个语句必需要,否则java端不能获取到修改后的新数据
    (*env)->ReleaseIntArrayElements(env,jarr,intArray,0);
    //返回结果
    return  jarr;数组

}指针

相关文章
相关标签/搜索