JNI编程中关于二维数组编程

/*该函数返回一个二维int数组 JNI 返回一个二维数组
  *基本思想:
  *1.构建一个obj数组objArray
  *2.构建一系列<一维整数数组类型>对象iarr
  *3.对obj数组的每一个元素赋值(iarr)(对象只能对一个元素进行Get/Set方法,不能Region)
  */
//size为二维数组的大小-->int[size][size]
JNIEXPORT jobjectArray JNICALL Java_ObjectArrayTest_initInt2DArray(JNIEnv *env, jclass cls, int size)  
{
	jobjectArray objArray;
	int i;
	//1.通过FindClass找到整数数组类([I).
	jclass intArrCls = (*env)->FindClass(env, "[I");
	if(intArrCls == NULL) return NULL; /* exception thrown */
	//2.构建一个obj数组<obj现在就是整数数组类型,也可以是其它类型>,size表示数组的元素个数,NULL表示初始化元素
	objArray = (*env)->NewObjectArray(env, size, intArrCls, NULL);
	if (objArray == NULL) return NULL; /* out of memory error thrown */
	for (i = 0; i < size; i++)  {
		jint tmp[256]; /* make sure it is large enough! */
		int j;
		//3.构建一个int数组类型的对象
		jintArray iarr = (*env)->NewIntArray(env, size);
		if (iarr == NULL) return NULL; /* out of memory error thrown */
		for (j = 0; j < size; j++) { //给tmp数组随便赋个值
			tmp[j] = i + j;
		}
		//4.给int数组对象赋值,0起始位置,size大小,tmp表示数据源
		(*env)->SetIntArrayRegion(env, iarr, 0, size, tmp);
		//5.给obj类型数组赋值,只能一个一个的赋值
		(*env)->SetObjectArrayElement(env,objArray, i, iarr);
		//6.释放局部对象引用
		(*env)->DeleteLocalRef(env, iarr);
	}
	return objArray;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值