怎么从java char 汉字指针里取到自己想要的汉字呢?

(C++)三种常用的字符串表示方法——char* 和 char[] - 小念子 - 推酷
(C++)三种常用的字符串表示方法——char* 和 char[] - 小念子
char*p,表示p是指向字符串的指针
char arr[],表示arr是一个字符串数组
string s,表示s是一个string类的对象,有自己的成员变量和成员函数,和前两者的区别较大
在这里先说一下char* 与 char[]的区别,下一篇再详细讨论string类对象
看下面两个例子:
对比下面两个函数:
char* get_str1()
char str[] = {&abcd&};
char* get_str2()
char *str = {&abcd&};
可以发现,函数get_str1编译时有警告信息:(warning C4172: 返回局部变量或临时变量的地址),这种写法是不对的,虽然编译能通过,可以运行,但是运行的结果不对:
& & & & & & & & & & & & & & & &&
两次运行的结果也不一样,但是换成get_str2,即char*,就正确了:
& & & & & & & & & & & & & & & & & & & & & & & & & &
这是因为:
& & & 在函数get_str1中,char str[] = { &abcd& },定义的是一个局部变量,该函数返回的是内部局部字符数组str的地址,当函数调用之后该数组被销毁,所以返回的指针是一个已经释放了空间的指针,指向的值不定。
& & & 在函数get_str2中,char* str = { &abcd& },先定义一个字符串常量“abcd“,再将指针str指向它,返回值是这个指针,由于字符串常量在编译时分配内存,只有程序退出时才被销毁,所以返回它的地址没有问题。
1)char s[5];
& &s = &abcd&; & &
//编译失败
2)char *s;
& &s = &abcd&; & &
//编译成功
原因:在1中,s是数组名,当成是常量指针,不可以作为左值修改; 而2中s是一个指针变量,可以将其指向一个常量字符串。
char str[] = { &abcd& },str在栈上申请空间,将常量内容复制进来
char *str = {&abcd&},str指向该常量的地址
char str[] = { &abcd& },sizeof(str) = 5,strlen(str) = 4
char *str = {&abcd&},sizeof(str) = 4(x86)或者8(x64),strlen = 4
注:指针的sizeof运算结果都是4
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致c++ 怎样把string 转换成字符指针 char*
[问题点数:20分]
c++ 怎样把string 转换成字符指针 char*
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年11月 挨踢职涯大版内专家分月排行榜第二2011年9月 Linux/Unix社区大版内专家分月排行榜第二
2012年1月 Linux/Unix社区大版内专家分月排行榜第三2011年8月 C/C++大版内专家分月排行榜第三2011年8月 Linux/Unix社区大版内专家分月排行榜第三2010年4月 C/C++大版内专家分月排行榜第三
2011年9月 C/C++大版内专家分月排行榜第二2011年4月 C/C++大版内专家分月排行榜第二2010年11月 C/C++大版内专家分月排行榜第二
2011年6月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。c#中为什么char能存一个汉字?_百度知道请问怎么获取指针中的各个值呢,我有一个char指针p,指向“哈哈,呵呵,嘿嘿,。。。。”这样一段字符串我_百度知道

我要回帖

更多关于 java char 汉字 的文章

 

随机推荐