1.结构体的声明
1.1结构的基础知识
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
复杂对象:
人:名字+电话+性别+身高
书:书名+作者+定价+书号
复杂对象的描述就会使用到,结构体
1.2结构体的声明
struct tag
{member-list;
}variablelist;
//人
//声明的结构体类型struct peo
struct peo
{//成员变量char name[20];char tele[12];char sex[5];//女 男 保密int high;
};int main()
{return 0;
}
1.3结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体
struct peo
{char name[20];char tele[12];char sex[5];//女 男 保密int high;
};
struct st
{struct peo p;int num;float f;
};
1.4结构体变量的定义和初始化
定义:
初始化:
2.结构体成员的访问:
void printf2(struct peo* sp)
{printf("%s %s %s %d\n", sp->name, sp->tele, sp->sex, sp->high);//结构体指针->成员变量
}
void printf1(struct peo p)
{printf("%s %s %s %d\n", p.name, p.tele, p.sex, p.high);//结构体指针.成员变量
}
3.结构体传参
struct s
{int data[1000];int num;
};struct S s = { { 1, 2, 3, 4 }, 1000 };
//结构体传参
void print1(struct S s)
{printf("%d\n", s.num);
}//结构体地址传参
void printf2(struct S* ps)
{printf("%d\n", ps->num);
}int main()
{printf1(s);//传结构体printf2(&s);//传地址return 0;
}
上面的printf1和printf2函数那个好用
答案是:首选printf2函数
原因:函数传参时,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。
结论:
结构体传参的时候,要传结构体的地址