C语言结构体
目录
C语言结构体
结构体与数组的区别:
-
数组:一些相同类型元素的集合
-
结构体:一类元素的集合,可以是不同的数据类型,这些值被称为成员变量
结构体的声明:
struct 结构体名{
// 成员变量
数据列表;
} 结构体变量; // 全局变量,当然这个也可以被称为是对象
结构体的传参用法
#include <stdio.h>
struct Message
{
int age;
char *address;
};
struct Student
{
char *name;
struct Message message;
} student01 = {"李四", {21, "上海"}};
void struct_print(struct Student); // 传结构体
void ptr_struct_print(struct Student *); // 传地址
int main(void)
{
struct Student student02 = {"张三", {18, "北京"}};
struct Student *ptr_student02 = &student02;
struct_print(student02);
struct_print(student01);
ptr_struct_print(ptr_student02);
return 0;
}
void struct_print(struct Student stu)
{
printf("%s %d %s\n", stu.name, stu.message.age, stu.message.address);
}
void ptr_struct_print(struct Student *ptr_stu)
{
printf("%s %d %s\n", (*ptr_stu).name, (ptr_stu)->message.age, (*ptr_stu).message.address);
}
结论:结构体在传参的过程中,要传结构体的地址
因为:函数传参的时候,参数是需要压栈的,如果传递一个结构体的对象,结构体过大,参数压栈的系统内存开销大,所以会导致性能的下降