关于结构体的指针

来源:百度知道 编辑:UC知道 时间:2024/06/18 10:31:37
#include<stdio.h>
struct date
{
int year;
int month;
int day;
};
struct student
{
char *name;
struct date birthday;
}man[5]={{"zhang",1984,5,31},
{"li",1983,4,6},
{"huang",1983,3,13},
{"wang",1983,4,1},
{"xie",1985,10,5}};
void paixu(struct student *ps)
{
int i;
struct student *p;
for(i=0;i<5;i++)
for(;ps<man+5;ps++)
{
if(ps->birthday.year<ps+1->birthday.year)
{p=ps;ps=ps+1;ps+1=p;};
if(ps->birthday.year=ps+1->birthday.year)
{if(ps->birthday.month<ps+1->birthday.month)
{p=ps;ps=ps+1;ps+1=p;};
if(ps->birthday.month=ps+1->birthday.month)
{p=ps;ps=ps+1;ps+1=p;};};
};
return ;
}
int main(void)
{
struct student *ps;
ps=man;
paixu(ps);

#include<stdio.h>
struct date
{
int year;
int month;
int day;
};
struct student
{
char *name;
struct date birthday;
}man[5]={{"zhang",1984,5,31},
{"li",1983,4,6},
{"huang",1983,3,13},
{"wang",1983,4,1},
{"xie",1985,10,5}};
void paixu(struct student *ps)
{
int i;
struct student b; //要加上结构体变量
struct student *p=&b;//要指针指向这个变量,不使指针指向未知变量
for(i=0;i<5;i++)
for(ps;ps<man+5;ps++)
{
if(ps->birthday.year<(ps+1)->birthday.year)
{*p=*ps;*ps=*(ps+1);*(ps+1)=*p;}; //这里要加上*号
if(ps->birthday.year==(ps+1)->birthday.year)
{if(ps->birthday.month<(ps+1)->birthday.month)
{*p=*ps;*ps=*(ps+1);*(ps+1)=*p;};//这里要加上*号
if(ps->birthday.month==(ps+1)->birthday.month)
{*p=*ps;*ps=*(ps+1);