C语言结构体可以用等号赋值吗

typedef struct {
char name[30];
int event_score[7];
}ElemType;

typedef struct{
ElemType Element[20];
int Length;
}SeqList;

void Sort_SeqList(SeqList *L_pointer)
{
int i,j;
int max;
ElemType temp;
for(i=0;i<L_pointer->Length;i++)
{
max=i;
for(j=i+1;j<=L_pointer->Length;j++)
if(L_pointer->Element[i].event_score[6]<\
L_pointer->Element[j].event_score[6])
max=j;
if(max!=i)
{
temp=L_pointer->Element[max];
L_pointer->Element[max]=L_pointer->Element[j];
L_pointer->Element[j]=temp;
}
}
}
麻烦高手们帮我瞧瞧.为什么这个排序的函数编译时查不出问题,运行时的结果却和预期的不一样呢?最好帮我详细解释一下.是不是结构体不能用赋值号赋值的原因?如果是.那要怎么实现排序功能呢?谢谢!
最大为20.但不一定.因为这是按输入数据的个数来算的.内层循环的Length不是数组.只是普通变量,我想用的冒泡法排序.这样子没错吧?
内层循环我改了.结果也不对.三楼的仁兄,既然不能用等号赋值.我想排序应该怎么办啊?麻烦你指点一二.
三楼的仁兄!谢谢了.问题解决.也谢谢一楼二楼的帮助.谢谢.

在c语言中,结构体与结构体之间 是不能用等号赋值的,只能是对结构体内部成员用等号赋值。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-09-24
楼上说得对
内层循环的循环条件应该是j<L_pointer->Length吧
但是最大的错是错在结构体不能直接用=来赋值
用=赋值是把地址赋值了
比如:ElemType a,b;
b=a;是把a的地址给了b;此时b就相当于a的引用,也就是a,b其实是一个结构体了
#include "stdio.h"
struct test
{
int a;
int b;
}test01,test02;
main()
{ test01.b=20;
test02.b=200;
test01.a=10;
test02=test01;
printf(" %d %d\n",test02.a,test02.b);
}

具体的你运行这个你就知道了。
我表达能力不行,不好意思
······································································
C++的话你硬是要用等号赋值的话,你可以运算符重载!
C的话你可以把ElemType中的每个变量的值都交换下就可以了啊,一样的效果,只是看起来复杂了点而已本回答被提问者采纳
第2个回答  2015-11-15
可以。但是只能是单个的结构体,不是结构数组。
第3个回答  2009-10-02
内层循环的循环条件应该是j<L_pointer->Length吧。
第4个回答  2009-10-02
length 是等于20吧??
相似回答