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;數組

}指針

相關文章
相關標籤/搜索