/*
向函数传递结构体
结构体指针变量做函数参数实现传值调用
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
void func(struct date *pt) //结构体指针变量做函数形参
{
pt->year = 2000;
pt->month = 5;
pt->day = 22;
}
int main()
{
struct date d;
d.year = 1999;
d.month = 4;
d.day = 23;
printf("before:%d/%02d/%02d\n",d.year,d.month,d.day);
func(&d); //结构体变量的地址做函数实参,传地址调用
printf("after:%d/%02d/%02d\n",d.year,d.month,d.day);
return 0;
}
/*
从函数返回结构体变量的值
*/
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
struct date func(struct date p) //函数返回值作为结构体类型
{
p.year = 2000;
p.month = 5;
p.day = 22;
return p; //从函数返回结构体变量的值
}
int main()
{
struct date d;
d.year = 1999;
d.month = 4;
d.day = 23;
printf("before:%d/%02d/%02d\n",d.year,d.month,d.day);
d = func(d); //函数返回值作为结构体变量的值
printf("after:%d/%02d/%02d\n",d.year,d.month,d.day);
return 0;
}
向函数传递结构体
结构体指针变量做函数参数实现传值调用
*/
运行结果:
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
void func(struct date *pt) //结构体指针变量做函数形参
{
pt->year = 2000;
pt->month = 5;
pt->day = 22;
}
int main()
{
struct date d;
d.year = 1999;
d.month = 4;
d.day = 23;
printf("before:%d/%02d/%02d\n",d.year,d.month,d.day);
func(&d); //结构体变量的地址做函数实参,传地址调用
printf("after:%d/%02d/%02d\n",d.year,d.month,d.day);
return 0;
}
/*
从函数返回结构体变量的值
*/
#include <stdio.h>
struct date
{
int year;
int month;
int day;
};
struct date func(struct date p) //函数返回值作为结构体类型
{
p.year = 2000;
p.month = 5;
p.day = 22;
return p; //从函数返回结构体变量的值
}
int main()
{
struct date d;
d.year = 1999;
d.month = 4;
d.day = 23;
printf("before:%d/%02d/%02d\n",d.year,d.month,d.day);
d = func(d); //函数返回值作为结构体变量的值
printf("after:%d/%02d/%02d\n",d.year,d.month,d.day);
return 0;
}