大家好,我在自学c++,遇到个例子不懂,大家能不能帮帮我帮我解释一下这个小程序,谢谢了。
#include<iostream>usingnamespacestd;#include<cstring>char*getname(void);//这个是什么意思,是定义...
#include <iostream>
using namespace std;
#include <cstring>
char * getname(void);//这个是什么意思,是定义一个空指针吗?
int main()
{
char *name;//建立指针name
name = getname();//指针转换?
cout<<name<<"的地址是:"<<(int*)name<<"\n";
delete [] name;
name=getname();
cout<<name<<"的地址是:"<<(int*)name<<"\n";
delete []name;
return 0;
}
char *getname() //又定义了个指针?
{
char temp [80];
cout<<"请输入名字:";
cin>>temp;
char *pn=new char[strlen(temp)+1];
strcpy (pn,temp);//我看不出这里temp、pn和前面的name和nameget是什么关系啊?
return pn;
}
还有为什么程序先输出下面的语句"请输入名字",后输出name<<"的地址是:"<<(int*)name呢?这节讲的值指针和new和delete,完全糊涂了。 展开
using namespace std;
#include <cstring>
char * getname(void);//这个是什么意思,是定义一个空指针吗?
int main()
{
char *name;//建立指针name
name = getname();//指针转换?
cout<<name<<"的地址是:"<<(int*)name<<"\n";
delete [] name;
name=getname();
cout<<name<<"的地址是:"<<(int*)name<<"\n";
delete []name;
return 0;
}
char *getname() //又定义了个指针?
{
char temp [80];
cout<<"请输入名字:";
cin>>temp;
char *pn=new char[strlen(temp)+1];
strcpy (pn,temp);//我看不出这里temp、pn和前面的name和nameget是什么关系啊?
return pn;
}
还有为什么程序先输出下面的语句"请输入名字",后输出name<<"的地址是:"<<(int*)name呢?这节讲的值指针和new和delete,完全糊涂了。 展开
3个回答
展开全部
根据你代码里面提问处自顶而下排序。
1.返回值是一个char* 类型。
2.将getname指针返回的值赋予name指针。
3.那个是函数定义,第一个是函数声明。
4.他们四个都代表着同一个东西。 也就是你输入的名字。
首先,cin>>temp将temp的内容变为你输入的内容。然后申请一小片空间作为pn的指向。调用strcpy函数将temp的内容放入你申请的空间。接下来返回pn,也就是返回了一个地址。并且将这个地址赋予给name这个变量。
总结:建议你还是先好好看看书,好高骛远学编程你会很蛋疼。你连函数都还模糊,去接触指针,以及new (这个后面应该还有个delete)。你这是在自寻死路..................
1.返回值是一个char* 类型。
2.将getname指针返回的值赋予name指针。
3.那个是函数定义,第一个是函数声明。
4.他们四个都代表着同一个东西。 也就是你输入的名字。
首先,cin>>temp将temp的内容变为你输入的内容。然后申请一小片空间作为pn的指向。调用strcpy函数将temp的内容放入你申请的空间。接下来返回pn,也就是返回了一个地址。并且将这个地址赋予给name这个变量。
总结:建议你还是先好好看看书,好高骛远学编程你会很蛋疼。你连函数都还模糊,去接触指针,以及new (这个后面应该还有个delete)。你这是在自寻死路..................
更多追问追答
追问
什么书最基础啊,我就是刚开始学,我是跟着教材走的啊。还有你们俩人的回答怎么一样啊。
追答
废话,都是正确答案。 我初学的时候用的是谭浩强的《C++程序设计》,好像没有电子书,只有去买咯,当初有本但是不知道丢哪儿去了,学完后就看看《C++ primer》,反正我就是这么学的,看你自己咯,当你学到一定程度自然知道要看些什么书,还有,代码啥的多敲敲。
楼下有个小子作弊。
展开全部
char * getname(void);//这是函数声明,它声明getname是一个函数,它的返回值是一个字符指针。
name = getname();//name被赋予getname函数返回的字符指针。
char *getname() //又定义了个指针?这是开始getname函数的定义。
getname函数内部申请(new)了一块内存,并返回这块内存的起始地址
new是申请内存,delete是释放内存。
程序从main函数开始执行,并且在其中调用了getname函数。
name = getname();//name被赋予getname函数返回的字符指针。
char *getname() //又定义了个指针?这是开始getname函数的定义。
getname函数内部申请(new)了一块内存,并返回这块内存的起始地址
new是申请内存,delete是释放内存。
程序从main函数开始执行,并且在其中调用了getname函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据你代码里面提问处自顶而下排序。 1.返回值是一个char* 类型。 2.将getname指针返回的值赋予name指针。 3.那个是函数定义,第一个是函数声明。 4.他们四个都代表着同一个东西。 也就是你输入的名字。 首先,cin>>temp将temp的内容变为你输入的内容。然后申请一小片空间作为pn的指向。调用strcpy函数将temp的内容放入你申请的空间。接下来返回pn,也就是返回了一个地址。并且将这个地址赋予给name这个变量。 总结:建议你还是先好好看看书,好高骛远学编程你会很蛋疼。你连函数都还模糊,去接触指针,以及new (这个后面应该还有个delete)。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询