CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

自定义结构的复制

楼主myblind(敲键盘的农民)2002-12-05 18:25:15 在 C/C++ / C语言 提问

如下代码:  
   
  typedef   struct{  
          float   score;  
          char   name[25];  
  }elem;  
   
  elem   *a,   *b;  
  elem   *temp;  
   
  ...初始化  
   
  temp=a;  
  a=b;  
  b=a;  
  为什么不行?  
   
  下面代码为什么出错?  
          memcpy(temp,a,sizeof(elem));  
          memcpy(a,b,sizeof(elem));  
          memcpy(b,temp,sizeof(elem));  
   
  怎么交换   a   ,   b   呢? 问题点数:20、回复次数:6Top

1 楼flyingbugs(网际.神经病.心情很遭)回复于 2002-12-05 18:46:16 得分 5

不知道你为   a   ,   b   ,   temp   分配了所需内存没!  
   
  还有(你好象写错了!):  
   
  temp=a;  
  a=b;  
  b=temp;   //你   b=a!!!  
   
  只是交换了指针,却没有交换指针所指的地址的内容!  
  不过这样也可以  
  /******************/  
  elem   *a,   *b;  
  elem   *temp;  
  a   =   malloc(sizeof(elem));  
  b   =   malloc(sizeof(elem));  
  temp   =   malloc(sizeof(elem));  
   
  memcpy(temp,a,sizeof(elem));  
  memcpy(a,b,sizeof(elem));  
  memcpy(b,temp,sizeof(elem));  
   
   
   
   
  Top

2 楼lx_cyh(hi)回复于 2002-12-05 18:46:53 得分 5

 
  应该是  
  *temp=*a;  
  *a=*b;  
  *b=*a;  
   
   
  下面代码为什么出错?  
          memcpy(temp,a,sizeof(elem));  
          memcpy(a,b,sizeof(elem));  
          memcpy(b,temp,sizeof(elem));  
   
  怎么交换   a   ,   b   呢?  
   
  这个没有错吧,肯定是你的temp,a,b的初始化有问题,  
  Top

3 楼golinjin(仙剑奇侠)回复于 2002-12-05 18:47:15 得分 0

如下代码:  
   
  typedef   struct{  
          float   score;  
          char   name[25];  
  }elem;  
   
  elem   *a,   *b;  
  elem   *temp;  
   
  ...初始化  
   
  temp=a;  
  a=b;  
  b=a;  
  为什么不行?  
   
  下面代码为什么出错?  
          memcpy(temp,a,sizeof(elem));  
          memcpy(a,b,sizeof(elem));  
          memcpy(b,temp,sizeof(elem));  
   
  怎么交换   a   ,   b   呢?  
   
  具体写出来嘛,到底怎么初始化的啊?以及memcpy()的内容?只写这么点教人怎么看。晕Top

4 楼Stephen_Ma(极品飞马)回复于 2002-12-05 18:51:34 得分 0

temp   =   a;  
  only   copy   the   value   of   pointer   address,   that   wonn't   copy   the   members   in   the   struct.  
   
  memcpy   is   ok,   but   you   should   remember   to   allocate   memory   for   a,   b   and   temp,   if   you   don't   that   will   be   a   error.Top

5 楼zhengguoshan(坚持-决不放弃)回复于 2002-12-05 18:55:31 得分 10

你的指针跟本没有赋值....     怎么用呀......  
  如,int   *p   ;   int   a;     p=a;     它必须先赋值再使用...  
    定义结构变量赋给指针...  
   
   
  Top

6 楼Perrin(爱如捕风)回复于 2002-12-05 19:02:32 得分 0

我觉得是这几个指针用错了  
  temp=a;  
  a=b;  
  b=a;  
  前面都加上*才对Top

相关问题

  • 请问在剪贴板操作中,如何才能将自定义结构中的指针正确复制呢?
  • 如何调动自定义结构体
  • evb里面如何自定义结构
  • Com如何导出自定义结构
  • 存储自定义结构出错
  • 怎么操作webservice中自定义函数返回的自定义结构?
  • 自定义结构体中的数组怎么自定义声明
  • 自定义的数组如何完全复制
  • 怎样在VB中获得自定义结构的指针??????????
  • 自定义的结构中可以包含内对象吗?

关键词

  • 指针
  • 代码
  • 交换
  • memcpy
  • elem
  • temp
  • 初始化
  • sizeof
  • 出错
  • malloc

得分解答快速导航

  • 帖主:myblind
  • flyingbugs
  • lx_cyh
  • zhengguoshan

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo