请大家帮个忙,关于c++中结构指针的问题

zcl198715 2008-03-13 08:38:11

//本程序是为了建一个链表!
//并完成相关操作
#include<iostream>
#include<string>
using namespace std;
struct student
{
string name;
student *next;
};
void creat(student *first)//建立链表,并输入数据
{
student *current;
int a;
first=current=new student;
cout<<"输入姓名:\n";
cin>>current->name;
cout<<"继续输入(yes==1,no==0)"<<'\n';
cin>>a;
while(a)
{
current=current->next=new student;
cin>>current->name;
cout<<"继续输入(yes==1,no==0)"<<'\n';
cin>>a;
}
current->next=0;
cout<<"输入完成!\n";
}
void print(student *first)//输出
{
student *current;
current=first;
while(current!=0)
{
cout<<current->name<<'\n';
current=current->next;
}
}
void destroy(student *first)//销毁
{
student *current;
while(first!=0)
{
current=first->next;
delete first;
first=current;
}
cout<<"删除成功\n";

}
int main()
{
student *first=NULL;//为什么要将first赋值为NULL,可不可以不赋值啊?
creat(first);
print(first);//通过测试,我发现first为空,为什么?也就是说,first=0
destroy(first);
return 0;
}

希望大家能给些帮助,不胜感谢!
...全文
28 1 打赏 收藏 转发到动态 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
lsldd 2008-09-25
  • 打赏
  • 举报
回复
void creat(student* &first)//注意,加上&,表示传引用!才能在函数里面改变first指针的值!

student *first=NULL;//指针一定要初始化!否则是野指针!没有初始化,无法预料他指向哪里!
相关推荐
这两天搬C++代码到 易语言 上,虽然一路顺风,但是感觉有点乱,比如数据结构之类的,有些的结构复杂,要自己计算偏移量 于是,灵感来了,把C++结构代码复制到易语言里,然后解析一下,如果调用C++返回的是数据 结构的话,把指针取出来,然后利用本模块便可以模拟加载指针到 动态数据 类型。 步骤:(如果是有指针的) 1、置入相关结构大小() (如果有无法识别的 且不为C++指针类型将会默认认为是int型,所以先置入,避免结构出错,没有其他结构的就不管) 2、解析类() (把C++结构粘过来解析一下,解析完成后将返回xx结构的大小,类似于C++定义xx类型后,调用sizeof()一样) 3、置xx指针() (把指针置入进去) 4、Get() 就可以愉快的取出值啦,默认可以取出int,string。如果是其他自定义的xx结构,将会返回字节集,如果C++原本是指针类型的,这里就返回指针 如果是没有指针的,而是我们创建数据 类型传入C++ 1、置入相关结构大小() 同上 2、解析类() 同上 3、创建数据 空间() 就类似于C++的先new初始化一下空间 4、Set() 设置值啦! 5、取类指针() 取出自定义xx类型结构指针,然后传入DLL函数调用C++。 下面是我的实验截图: 1、C++原本定义的结构: 2、C++调用,然后先取一下结构大小 3、把结构粘贴到易语言 4、运行一下。 5、至于使用,已经在exosip项目里测试过了,取值没问题

63,597

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下