自定义结构的复制
如下代码:
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




