C语言 变量的定义还有先后顺序?

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:21:02
#include<stdio.h>
#include<string.h>
struct seplist
{char a[10];
int last;
};
int insert_seplist(seplist*l,int i)
{l->last=strlen(l->a);
for(;i<=l->last;i++){*(l->a+i-1)=*(l->a+i);}
l->last=l->last-1;
}
main()
{seplist*l;int i;

scanf("%s\n",l->a);
l->last=strlen(l->a);
scanf("%d",&i);
if(i<0||i>l->last)
printf("输入错误");
else
{insert_seplist(l,i);printf("%s\n%d",l->a,l->last);}
getchar();
getchar();}
为什么上面的程序运行不了,但是把seplist*l;int i;改成int i;seplist*l;就可以了,难道变量的定义还有顺序?
没有解决问题的实质,但还是要送分给你们,随机的

这个是要看你用的是什么编译器,如果是c++的编译器,那么不用改就是正确的;但是如果你用的是c的编译器,那是不能通过的,在定义时要写成struct seplist* l;才可以,或者如楼上那样写,也可以。

struct seplist
{char a[10];
int last;
};
把它改成
typedef struct {char a[10];
int last;
}seplist ;
就可以了.

不是,你上边定义的类型没显出来;
定义尽量先定义类型的,在定义 自定义函数