| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 510 人关注过本帖
标题:new的一个问题
只看楼主 加入收藏
jjg
Rank: 2
等 级:论坛游民
帖 子:67
专家分:42
注 册:2009-8-19
结帖率:46.15%
收藏
已结贴  问题点数:20 回复次数:3 
new的一个问题
程序代码:
class text
{
public:
       text(char* s)               //s是一个指针吗,str=new char[strlen(s)+1];中的s是指指向str字符串的指针?
       {
str=new char[strlen(s)+1];         //这里是不是动态分配,象一般是这样char* p=new char[],有什么区别?
strcpy(str,s);
len=strlen(s);
}    
...
void   main()
{
text array("good morning");
...
}
搜索更多相关主题的帖子: new 
2009-08-19 10:15
ly861014
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:177
注 册:2008-10-28
收藏
得分:20 
回复 楼主 jjg

你的str是什么?
假设你的str是char*,
对第一个注释,假如有char* p;那么p既可以指向字符,也可以指向c风格字符串,如你main里的"good morning"
即char* p = "good morning";
对第二个注释,如果str是char*,那就是一个动态分配数组,没什么区别啊
2009-08-19 10:38
jjg
Rank: 2
等 级:论坛游民
帖 子:67
专家分:42
注 册:2009-8-19
收藏
得分:0 
回复 2楼 ly861014

题目:
class text
{
public:
       text(char* s)                    
 {
str=new char[strlen(s)+1];        
strcpy(str,s);
len=strlen(s);
}     
char operator[](int n)
{
if(n>len-1)
{
cout<<"数组下标越界"<<endl;
return*(str+n);
}
void print(){
cout<<str<<endl;
}
private:
int len;
char* str;
};
void   main()
{
text array("good morning");
array.print();
cout<<"location 0:"<<array[0]<<endl;
cout<<"location 20:"<<array[20]<<endl;
}
2009-08-19 11:05
ly861014
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:177
注 册:2008-10-28
收藏
得分:0 
回复 3楼 jjg

s不就是定义为char*吗,当然是个指针了。

char* str;
str = new char[strlen(s)+1];
和char* str = new char[strlen(s)+1]; 作用完全一样
2009-08-19 11:10
快速回复:new的一个问题
数据加载中...
 
   



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

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