自学内容网 自学内容网

结构体的声明、初始化及传参等

结构体

  • 结构体类型的声明
  • 结构体初始化
  • 结构体成员访问
  • 结构体传参

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.结构体传参

使用两个方法进行结构体的传参:

  1. 使用.访问结构体成员
  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)!