请教一个指针存储的问题

cyfage 2009-05-29 04:36:32
在下是个菜鸟,如有不当之处请多包含。

C++primer plus里有这样一段话:


相应的程序示例如下:

#include<iostream>
#include<string>

using namespace std;

char *getname(void);//该函数不接受参数,返回一个char类型的值

int main_03()
{
using namespace std;

char *name;

name=getname();
cout<<name<<endl;
cout<<(int *)name<<endl;
delete [] name;

name=getname();
cout<<name<<endl;
cout<<(int *)name<<endl;
delete [] name;

return 0;
}

char *getname()
{
char temp[80];
cout<<"输入名字:"<<endl;
cin>>temp;
char *pn=new char[strlen(temp)+1];
strcpy(pn,temp);

return pn;
}


对这一段话产生了疑惑。

首先,按照这一段所说,使用指针可以避免创建大量的数组用于存储,但我想了之后觉得不使用指针也可以避免啊。
比如我只要创建一个name[80]的数组,需要读取100次就反复用它读取覆盖100次。
比如像这样:
char name[80];
cin>>name;
cout<<name<<endl;
cin>>name;
cout<<name<<endl;
……
如果说数组本身在系统中就是以指针的形式在运作,那么其他类型的变量更是可以方便的如此使用啊:
int a;
cin>>a;
cout<<a<<endl;
cin>>a;
cout<<a<<endl;
……
这样的使用方式,不也是和示例一样,一块内存反复使用么?并没有也不需要先创建100、1000个数组或者变量出来。

其次如果说这100、1000个数据都要记录进内存而不是显示一次就消失不要,那么即使使用指针,也需要分配相应数量
的内存块进行存储啊,只是不需要相应的变量或数组名称罢了。我看不出在这里使用指针的优势在哪里。

求各位达人帮忙指教一下,感激不尽。
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyfage 2009-05-29
  • 打赏
  • 举报
回复
非常感谢……
mengde007 2009-05-29
  • 打赏
  • 举报
回复
书的意思是说开始的时候不知道输入的字符串的长度是多少;因此要实时分配,你用多少,我分配多少;而数组要在输入字符串之前分配的,这个时候不知道要输入的字符串的字符个数;
cyfage 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 chenzhp 的回复:]
但是使用指针能够在后期需要使用的时候再分配内存。如果使用数组,在程序开始的初期就需要为其分配空间。要是后面全部用上了,那还合算。那要是后期只用一小部分。那,划算吗?
[/Quote]

关于这个,我是这么想的,也不知道对不对:

按照书上这一段话和例子来说,我采用的做法也不过至多使用了80字节的内存块而已,反正都是重复利用,我真的不是很明白浪费在了何处。就算使用指针,这80字节也是不可避免的吧?……


chenzhp 2009-05-29
  • 打赏
  • 举报
回复
但是使用指针能够在后期需要使用的时候再分配内存。如果使用数组,在程序开始的初期就需要为其分配空间。要是后面全部用上了,那还合算。那要是后期只用一小部分。那,划算吗?
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这包括了解课程设计的主题、目标以及需要解决的问题。这将有助于你确定设计的范围和方向。 选择项目主题:选择一个与C语言相关的项目主题。例如,你可以设计一个学生成绩管理系统、一个简单的文本编辑器或一个游戏等。确保所选主题既具有挑战性又能够展示你的C语言编程技能。 进行问题分析:一旦确定了项目主题,你需要对问题进行深入分析。这包括确定问题的输入和输出、理解问题的要求和限制条件,以及将复杂问题分解为更小的子问题。这将有助于你更好地理解和解决问题。 设计算法和数据结构:针对项目需求,设计合适的算法和数据结构。这包括确定如何存储和处理数据、如何设计函数和模块等。 编写代码:使用C语言编写代码,实现项目功能。注意遵守C语言的语法规则,确保代码的可读性和可维护性。 测试和调试:在编写完代码后,进行测试和调试。确保代码能够正确运行并满足项目需求。使用调试工具和技术来查找和修复代码中的错误。 文档编写:编写项目文档,包括项目说明、功能介绍、代码注释等。这将有助于其他人理解你的项目并复用你的代码。 提交和展示:最后,将你的课程设计项目提交给教师或相关人员,并在课堂上进行展示。展示时可以介绍项目的功能、实现过程以及遇到的挑战和解决方案等。 在进行C语言课程设计时,还需要注意以下几点: 遵守编程规范,包括变量命名、代码缩进、注释等。 充分利用C语言的特点和优势,如指针、结构体、文件操作等。 注重实践和应用,通过解决实际问题来加深对C语言的理解和应用能力。 在遇到困难时,及时向教师或同学请教,并查阅相关资料和文档。 通过以上步骤和建议,你可以完成一个高质量的C语言课程设计项目,并提升自己的编程能力和实践经验。

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧