| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 387 人关注过本帖
标题:各位大神进来帮我解释下这个C++语句
只看楼主 加入收藏
hanzuxiang
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-4-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
各位大神进来帮我解释下这个C++语句
具体代码如下:
int HStrConcat(HString&T,HStringS1,HStringS2)
int i;
if(!(T.ch=(char*)malloc((S1.length+S2.length)*sizeof(char))))

跪求各位帮忙解释下意义,谢谢咯!
2012-04-24 22:53
hanzuxiang
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-4-24
收藏
得分:0 
没人帮我么?
2012-04-24 22:58
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:7 
这那得代码,  怎么替你分析, 太突然了
2012-04-25 10:42
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:7 
把全部的发出来吧,不然真没几个人能看懂
2012-04-25 19:15
天使梦魔
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:37
帖 子:564
专家分:2754
注 册:2007-8-29
收藏
得分:7 
void *malloc(size_t size);   
说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针


等价描述:
T.ch=(char*)malloc((S1.length+S2.length)*sizeof(char))
if(!T.ch){..........}


T.ch=(char*)malloc((S1.length+S2.length)*sizeof(char)))
把后面的给T的ch成员


(char*)malloc
把malloc函数的返回值强行转换成char指针.比如cout<<(int)'a';强制转换a为数字,就是ascii编码

(S1.length+S2.length)     *     sizeof(char)
cout<<sizeof(char);就知道是多少.前面是s1和s2的length成员相加然后再乘以char的大小.



总结:
将S1和S2的成员相加并得到两者字符长度,然后转换成字符指针给予T的ch成员
条件检测ch成员是否得到具有长度的地址,ch在初始化前肯定是NULL也就是0,这样才能用!ch来判断两个成员是否有实际意义.
ch的作用是开辟一个S1,S2的length成员两者相加后这种大小的空间,length可能不是字符串也许是记录某个地方大小,因为后面乘以char占用内存大小数字.如果是字符串可以直接sizeof(S2.length)而直接得到成员占用大小.

[ 本帖最后由 天使梦魔 于 2012-4-26 12:12 编辑 ]
2012-04-26 12:01
快速回复:各位大神进来帮我解释下这个C++语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018791 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved