欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > C语言 结构体

C语言 结构体

2025/9/15 0:37:02 来源:https://blog.csdn.net/2401_84378523/article/details/145280703  浏览:    关键词:C语言 结构体

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函数

原因:函数传参时,参数是需要压栈的。如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。

结论:

结构体传参的时候,要传结构体的地址

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com