已经调通了同时以指向结构体变量的指针作为形参和实参,但不知道如何以结构体变量的地址作为形参?谭浩强的书上也没有详细说明,只是一带而过。
练习程序:判断一年中某日是本年第几天:
#include<stdio.h>
struct Yearmonthday
{ int year;
int month;
int day;
};
int main()
{ void input(struct Yearmonthday *p1);
void output(struct Yearmonthday *p1);
int leapyear(struct Yearmonthday *p1);
struct Yearmonthday ymd,*p=&ymd;
input(p);
output(p);
return 0;
}
void input(struct Yearmonthday *p1)
{ printf("请输入年,月,日:");
scanf("%d,%d,%d",&p1->year,&p1->month,&p1->day);
}
void output(struct Yearmonthday *p1)
{ int MonthDay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int dsum=0,leap,i;
leap=leapyear(p1);
if(leap==1)
MonthDay[2]=29;
p1->month=p1->month-1;
for(i=1;i<=p1->month;i++)
dsum=dsum+MonthDay[i];
dsum=dsum+p1->day;
printf("天数为:%d\n",dsum);
}
int leapyear(struct Yearmonthday *p1)
{ int leap;
if((p1->year%4==0&&p1->year%100!=0)||(p1->year%400==0))
leap=1;
else
leap=0;
return(leap);
}
C语言中,所有的变量都存储在内存中,可以通过&运算符获得变量的内存地址,函数调用时,只需要把普通变量前加上&符号,就可以达到传递变量地址的目的。
例如:
定义一个结构体类型
struct Yearmonthday定义相关函数,参数类型指定为结构体类型指针
void input(struct Yearmonthday *p1) //函数形参p1是结构体指针类型在主函数中定义一个结构体变量,调用相关函数,传递变量地址
int main()