【C语言】传递 结构体变量 & 结构体指针 [ 编程杂谈 ]
大数据男孩 文章 正文
明妃
{{nature("2022-08-14 17:23:19")}}更新结构体变量之间的传递
直接把
结构体
赋值给另一个结构体变量
#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;
}
[]()
{{nature('2020-01-02 16:47:07')}} {{format('12641')}}人已阅读
{{nature('2019-12-11 20:43:10')}} {{format('9527')}}人已阅读
{{nature('2019-12-26 17:20:52')}} {{format('7573')}}人已阅读
{{nature('2019-12-26 16:03:55')}} {{format('5017')}}人已阅读
目录
标签云
一言
评论 0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}