关于c++ 字符串指针与字符数组的问题

这是我自己写的字符数组classStudent{private:charName[20];public:Student(charname[20]){strcpy(Name... 这是我自己写的字符数组
class Student
{
private:
char Name[20];
public:
Student(char name[20])
{
strcpy(Name,name);
}
void main()
……

答案是
Student(char *name)

{
Name=new char[strlen(name)+1];
strcpy(Name,name);

}
~Student()
{
delete Name;
}

我的问题有两个
1.我用的数组 他用的是指针 但是他还写了一句Name=new char[strlen(name)+1];
delete Name;

那么用数组能写两句话吗 换句话说是否还有意义?
2.如果数组都不用写的话 那使用指针不是显得麻烦吗 为什么还要用指针 有什么优势?
展开
 我来答
帐号已注销
2013-03-26 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1210万
展开全部
答案是错的,是delete [] Name不是delete Name

答案上的写法可以存储任意大小的字符串,但是字符串是保存在堆里,所以速度慢。
你的只能存储19个字符,但是速度快。

指针式用来存储地址的,任何数据保存在内存中,只能通过地址来读取,C++提供指针类型是为了让程序员有能力操作内存。

1.我用的数组 他用的是指针 但是他还写了一句Name=new char[strlen(name)+1];
delete Name;

你用的是堆栈上的内存或者静态存储区的内存空间,所以你的代码执行速度比较快,但是你的代码有一个缺点:最多只能存储19个字符。

2.如果数组都不用写的话 那使用指针不是显得麻烦吗 为什么还要用指针 有什么优势?

用指针可以直接操作内存,这就是用指针的原因。

C++里面是不推荐使用C语言的数组的。 要用字符串请使用string, 要用动态数组请使用vector,要用静态数组请使用array
happyltt000
2013-03-26
知道答主
回答量:4
采纳率:0%
帮助的人:5719
展开全部
1、Name=new char[strlen(name)+1]; 这句是初始化Name,使它的长度为name+1,(因为字符数组后边还有\0 占一位) 后面的~Student 是析构函数,释放资源。
2、 Student(char *name),这里参数传过来的只是首地址,一共有多少个字符没有关系,但是如果用的是数组,像你那样,就把长度限制住了,不灵活···。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-05-12
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式