十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
SeqList L;//L只是个默认构造,在后面执行基本是统一的0值;执行前应该设置实体数据
站在用户的角度思考问题,与客户深入沟通,找到调兵山网站设计与调兵山网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站制作、企业官网、英文网站、手机端网站、网站推广、申请域名、虚拟主机、企业邮箱。业务覆盖调兵山地区。
L=Selection(L.length);//改为L=Selection(L);原函数调用与函数定义不符,有语法错误;L.length是个int 类型,函数定义的参数类型是SeqList;
SeqList Selection(SeqList L) 内部逻辑不够简捷,多多练习;
if (L.data[j]L.data [i]){}//可直接交换,k标志没什么作用。
第一条语句在不同的编译器下可能会有不同的结果的,因为这里存在一个顺序点的问题.
即:
在执行顺序中某些指定的点叫做顺序点。这个点上,之前所有的赋值所产生的副作用都已发生完成,并且在其后的赋值不能在该点产生任何副作用。
说白了就是:
最好不要试图在一行语句里多次改变一个变量的值,否则编译器可以随便定义改变的时机和次序
参考链接:
请注意其中顺序点的定义和介绍,和你的问题相关的描述应该是"在函数所有参数赋值之后但在函数第一条语句执行之前"这句话
#includestdio.h
#includestdlib.h
#define MAXSIZE 10 // 宏替换最大值
typedef struct
{
int data[MAXSIZE];
int length;
}Sqlist;
void CreatList(Sqlist *L,int a[],int n) //创建顺序表
{
L=(Sqlist *)malloc(sizeof(Sqlist));
for(int i=0;in;i++)
{
L-data[i]=a[i];
}
L-length=n;
}
void InitList(Sqlist *L) //初始化顺序表
{
L=(Sqlist *)malloc(sizeof(Sqlist));
L-length=0;
}
void DestoryList(Sqlist *L) //释放顺序表空间
{
free(L);
}
void main()
{
Sqlist *s;
InitList(s);
int a[MAXSIZE];
for(int i=0;in;i++)
{
a[i]=i+1;
}
CreatList(s,a,n);
DestoryList(s);
printf("\n");