结构体变量之间的传递
直接把
结构体
赋值给另一个结构体变量
#include <stdio.h> struct Date { int year; int month; int day; } date = { .year = 2021, .month = 1, .day = 5 }; int main(void){ struct Date d; d = date; printf("d 的值 :%d-%d-%d",d.year,d.month,d.day); return 0; }
结构体 作为 函数参数 传递
把 结构体变量 作为函数的参数 传递给函数
#include <stdio.h> // 定义结构体 struct Date { int year; int month; int day; }; // 定义函数 struct Date getDate(struct Date date){ // 给结构体赋值 date.year = 2021; date.month = 1; date.day = 5; // 返回结构体 return date; } int main(void){ struct Date date,d; d = getDate(date); printf("日期为:%d-%d-%d",d.year,d.month,d.day); return 0; }
结构体指针 作为 函数参数 传递
函数直接传入结构体会降低性能,
传入结构体指针 能提高程序效率
#include <stdio.h> struct Date { int year; int month; int day; }; // 传入指针 不需要返回值 void getDate(struct Date *date){ // 给结构体赋值 date->year = 2021; date->month = 1; date->day = 5; } int main(void){ struct Date date; getDate(&date); // 传入地址 printf("日期为:%d-%d-%d",date.year,date.month,date.day); return 0; }
动态申请结构体空间
动态申请,存储在
堆空间
,用完记得释放
#include <stdio.h> #include <stdlib.h> struct Date { int year; int month; int day; }; // 传入指针 不需要返回值 void getDate(struct Date *date){ // 给结构体赋值 date->year = 2021; date->month = 1; date->day = 5; } int main(void){ struct Date *date; // 申请空间 date = (struct Date *)malloc(sizeof(struct Date)); getDate(date); // 传入地址 printf("日期为:%d-%d-%d",date->year,date->month,date->day); // 释放空间 free(date); return 0; }
版权声明:《 【C语言】传递 结构体变量 & 结构体指针 》为明妃原创文章,转载请注明出处!
最后编辑:2021-1-5 03:01:52