结构体的声明、初始化及传参等
结构体
- 结构体类型的声明
- 结构体初始化
- 结构体成员访问
- 结构体传参
1.结构体的声明
1.1结构的基础知识
结构是一些值的集合,这些被称为成员变量。结构的每个成员可以是不同类型得变量。
1.2结构的声明
struct tag{//结构体标签
member-list;//成员列表
}varible-list;//变量列表
对应的结构体:
//声明结构体类型peo
struct peo {
//meber-list
int age;
char name[20];
char tel[20];
char sex[5];
//p1和p2都是通过struct pro结构类型创建的两个变量
//这样创建的p1和p2是两个全局的结构体变量
}p1,p2;//变量列表可有可无
上面声明的变量列表可有可无.
如果没有使用变量列表创建对象,那么可以使用struct 名称 变量名称,来创建结构体变量
int main() {
//结构体变量的创建
struct peo p = { 0 };
//p是结构体变量
}
这种写法与上面的写法一致,不推荐上面的结构体列表写法。
1.3结构成员的类型
结构的成员可以是标量、数组、指针,甚至是其他结构体。
结构体中出现其他结构体的例子:
//声明结构体类型peo
struct peo {
//meber-list
int age;
char name[20];
char tel[12];
char sex[5];
//p1和p2都是通过struct pro结构类型创建的两个变量
//这样创建的p1和p2是两个全局的结构体变量
}p1,p2;//变量列表可有可无
struct peo p5,p6;//也可以创建结构体变量
struct st {
struct peo pp;
int score[10];
};
1.4结构体成员的初始化和访问
int main() {
//结构体变量的创建
struct peo p = { 21,"czl","12345678910","男"};
//p是结构体变量
struct st s = { {21,"czl","12345678910","男"},100 };
printf("%d %s %s %s\n", p.age, p.name, p.tel, p.sex);
printf("%d %s %s %s %d\n", s.pp.age, s.pp.name, s.pp.tel, s.pp.sex, s.score);
}
2.结构体传参
使用两个方法进行结构体的传参:
- 使用.访问结构体成员
- 使用箭头操作符访问结构体成员
print(struct peo* p) {
printf("%d %s %s %s\n", p->age, p->name, p->sex, p->tel);
}
print1(struct peo p) {
printf("%d %s %s %s\n",p.age,p.name,p.sex,p.tel);
}
int main(){
struct peo p = { 21,"czl","12345678910","男"};
print(&p);
print1(p);
}
上面的print与print1中通常采用print函数
因为:
函数传参的时候,参数是需要压栈的
如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降
原文地址:https://blog.csdn.net/m0_64569510/article/details/142556257
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!