关于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.如果数组都不用写的话 那使用指针不是显得麻烦吗 为什么还要用指针 有什么优势? 展开
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.如果数组都不用写的话 那使用指针不是显得麻烦吗 为什么还要用指针 有什么优势? 展开
3个回答
展开全部
答案是错的,是delete [] Name不是delete Name
答案上的写法可以存储任意大小的字符串,但是字符串是保存在堆里,所以速度慢。
你的只能存储19个字符,但是速度快。
指针式用来存储地址的,任何数据保存在内存中,只能通过地址来读取,C++提供指针类型是为了让程序员有能力操作内存。
1.我用的数组 他用的是指针 但是他还写了一句Name=new char[strlen(name)+1];
delete Name;
你用的是堆栈上的内存或者静态存储区的内存空间,所以你的代码执行速度比较快,但是你的代码有一个缺点:最多只能存储19个字符。
2.如果数组都不用写的话 那使用指针不是显得麻烦吗 为什么还要用指针 有什么优势?
用指针可以直接操作内存,这就是用指针的原因。
C++里面是不推荐使用C语言的数组的。 要用字符串请使用string, 要用动态数组请使用vector,要用静态数组请使用array
答案上的写法可以存储任意大小的字符串,但是字符串是保存在堆里,所以速度慢。
你的只能存储19个字符,但是速度快。
指针式用来存储地址的,任何数据保存在内存中,只能通过地址来读取,C++提供指针类型是为了让程序员有能力操作内存。
1.我用的数组 他用的是指针 但是他还写了一句Name=new char[strlen(name)+1];
delete Name;
你用的是堆栈上的内存或者静态存储区的内存空间,所以你的代码执行速度比较快,但是你的代码有一个缺点:最多只能存储19个字符。
2.如果数组都不用写的话 那使用指针不是显得麻烦吗 为什么还要用指针 有什么优势?
用指针可以直接操作内存,这就是用指针的原因。
C++里面是不推荐使用C语言的数组的。 要用字符串请使用string, 要用动态数组请使用vector,要用静态数组请使用array
展开全部
1、Name=new char[strlen(name)+1]; 这句是初始化Name,使它的长度为name+1,(因为字符数组后边还有\0 占一位) 后面的~Student 是析构函数,释放资源。
2、 Student(char *name),这里参数传过来的只是首地址,一共有多少个字符没有关系,但是如果用的是数组,像你那样,就把长度限制住了,不灵活···。
2、 Student(char *name),这里参数传过来的只是首地址,一共有多少个字符没有关系,但是如果用的是数组,像你那样,就把长度限制住了,不灵活···。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询