char* const char* jstring转换
来源:互联网 发布:风险矩阵图等级划分 编辑:程序博客网 时间:2024/06/05 09:33
代码先行:
jni.c
--------------------------------------------------------------------------
/*
* Class: com_example_testjni_AdapterJni
* Method: mygetwifiwlan
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_com_example_testjni_AdapterJni_mygetwifiwlan
(JNIEnv *jenv, jclass jcls, jstring strwifi, jstring strwlan)
{
__AND_LOGI("Java_com_example_testjni_AdapterJni_getwifiwlan");
ENTER_JNI_FUN(jenv)
jint jresult = 0;
//jstring====>const char*
const char* strwifi_temp = (jenv)->GetStringUTFChars(strwifi, 0);
const char* strwlan_temp = (jenv)->GetStringUTFChars(strwlan, 0);
//const char*====》char*
char* strwifi_ = new char[128];
memset( strwifi_, 0, 128 );
int len_strwifi=(jenv)->GetStringUTFLength(strwifi);
memcpy(strwifi_,strwifi_temp,len_strwifi);
char* strwlan_ = new char[128];
memset( strwlan_, 0, 128 );
int len_strwlan=(jenv)->GetStringUTFLength(strwlan);
memcpy(strwlan_,strwlan_temp,len_strwlan);
__AND_LOGD("in::getwifiwlan1[strwifi:%s] [strwlan:%s]",strwifi_,strwlan_);
GetAvalibleNetworkIp(strwifi_,strwlan_);//GetAvalibleNetworkIp(char*,char*)
__AND_LOGD("out::getwifiwlan1[strwifi:%s] [strwlan:%s]",strwifi_,strwlan_);
// getResult1(strwlan_);//cb1
getNetIp1(strwifi_,strwlan_);//cb2
jenv->ReleaseStringUTFChars(strwifi, strwifi_temp);
jenv->ReleaseStringUTFChars(strwlan, strwlan_temp);
delete[] strwifi_;
delete[] strwlan_;
LEAVE_JNI_FUN_RETURN(jenv,jresult)
}
/*
---------------------------------------------------------------------------
1 绕口令
const char *p; //*p是const,p可变
const (char *) p;//p是const,*p可变
char* const p; //p是const,*p可变
const char* const p; //p和*p都是const
char const * p;// *p是const,p可变
(char*) const p;//p是const,*p可变
char* const p;// p是const,*p可变
char const* const p;// p和*p都是const
===============
Bjarne在他的The C++ Programming Language里面给出过一个助记的方法:
把一个声明从右向左读。
char * const cp; ( * 读成 pointer to) cp is a const pointer to char
const char * p; p is a pointer to constchar;
char const * p; 同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
==================奇技淫巧:
方法也是从右向左一步一步来解释,而且每一步都有返回值,是的你没看错,有返回值。每一步都相当于一个函数,上一步的返回值即是下一步的入参。
拿const char *p;来说吧
1,“p”:代表内存的一块空间,暂且称为”内存1”, 返回值当然是p了,也就是内存1。
2, “*” :当p被星了之后,就跳到新的内存位置,也就是“内存2”。 内存2就是我们说的*p, 这时返回值就是内存2。
3,“char”: 因为上一步的返回值是内存2,所以这个char就作用在内存2上,就像是在说这里存的是一个char类型数据。 返回值还是内存2。
4,“const” :上一步返回内存2(具有char特点的内存2),这时const就作用在内存2上,结果就是说内存2不能变了,他是常量。返回值还是内存2(具有char特点和const特点的内存2)。
5,如果前面还有修饰符,应该可以这样再推下去(起码我是这么想的^-^)
6,前面的都解释完了,不是吗
再来看个例子:
const (char *) p;
1, “p”:代表内存的一块空间,称为”内存1”,返回值当然是p,也就是内存1。
2, “(char*)”: 整个修饰p,因为不是*,不会跳转到新的内存,所以返回值还是p,还是内存1。
那“(char* )”什么意思呢,他相当于是一个自定义类型,就像一个自定义函数,简称大函数,由两个小函数构成。
函数1是“*”,函数2是“char”。
函数1“*”的处理结果是跳到另一块内存,即内存2,返回值是内存2。
函数2“char”的处理结果是说内存2是char类型,返回值是内存2。
只可惜这个返回值被大函数隔离了,大函数作为一个整体返回的是入参的那块内存。
如果有一天这个大函数只有一个小函数,这个小函数是“*”,即大函数数“(*)”,这时别以为“*”和“(*)”有什么区别,就是差个马夹而已。
3,“const”:修饰上一步返回的内存,即内存1
注意:不要被这里的内存1,内存2诱导,我可没说给他们开辟空间了,声明时是不开辟空间的。
只有在实际赋值之后,内存1,内存2才有对应的实际的内存空间。
所以声明,只是在使用之前先描述一下这个变量具有什么特点,如何来使用这个变量而已。
所以不管是说内存1是const,或内存2是const,并不是说实际的那块内存真的就不能改了(实际上也做不到)。
这里对声明的变量赋值实际上是提供了对某块内存访问的一个方法。Const,char都是描述了这个方法的一些特点;而“*”的作用是跳转到另一块内存。
- char* const char* jstring转换
- jstring与const char* 相互转换
- jstring 和 char* 转换
- jstring 转换为 char *
- char* 和jstring转换
- 将const char类型转换成jstring类型
- JNI中jstring 与 const char* 相互转换函数
- JNI中jstring 、const char* 、string相互转换函数
- JNI中jstring 与 const char* 相互转换函数
- JNI中jstring 与 const char* 的转换
- const char * 转换为 char *
- const char * 转换为 char *
- const char * 转换为 char *
- string\const char*\char*转换
- const char * 转换为 char *
- const char* 转换到 char*
- string, char*, const char*转换
- jstring 和char* 之间的转换方法
- bzoj1710[Usaco2007 Open]Cheappal 廉价回文 dp
- Mysql插入中文时提示:ERROR 1366 (HY000): Incorrect string value: '\xE5\x8F\xB0\xE5\xBC\x8F...' fo
- JS控制另外一个框架的案例
- Vue.js实现双向数据绑定(表单自动赋值、表单自动取值)
- Opencv学习之图像金字塔与图片尺寸缩放
- char* const char* jstring转换
- EasyPlayer RTSP Windows(with ActiveX/OCX插件)播放器支持H.265播放与抓图功能
- 安卓猜数字小游戏3
- how to display value and text in query(query显示值和文本)
- shape使用
- ThinkPHP 查询方式
- 后台任务稳定运行方案--不受终端关闭或者远程(ssh等)连接失败影响
- 打开对话框选择位图到View
- C语言笔记