C语言:结构体(初识)

1.结构体的声明:
i.结构体的基础知识:结构体是一些值的集合,这些值称为结构体的成员变量,这些值可以是不同类型的变量
(类似于数组:数组是同一类型变量的集合,而结构体可以是不同类型变量的集合)

struct stu//stu即结构的声明
{
    //ii.内部成员可以是标量,数组,指针,甚至是其它结构体

    char name[20];//char, int等即内部结构成员类型
    int age;      //name, age, tele, sex即内部结构成员名
    char tele[15];
    char sex[5];
};

struct peo//peo即结构体的声明
{
    struct stu s2;//此处调用结构体,故应创建变量(对象)
    int hight;//hight, weight即内部结构成员名
    int weight;
};

void print1(struct stu* ps)//指针接收,通过地址找到地址所指向的对象
{
    printf("%s %d %s %s\n", ps->name, ps->age, ps->tele, ps->sex);//结构体变量(对象)->结构体成员
}

void print2(struct stu ps)//此处为形参,实际是实参的一份临时拷贝,会在此再次开辟一份内存空间,占用更多的内存,大大降低运行效率,故传址优于传值
{
    printf("%s %d %s %s\n", ps.name, ps.age, ps.tele, ps.sex);
}

int main()
{
    struct stu s = { "张三", 18, "10086", "男"};//s为结构体变量(对象)创建,后面即初始化,可不完全不初始化
    struct peo p = { {"李四", 19, "1008611", "女"}, 166, 120 };//p为结构体变量(对象)的创建

    printf("%s %d %s %s\n", s.name, s.age, s.tele, s.sex);//对象.结构体成员
    printf("%s %d %s %s %d %d\n", p.s2.name, p.s2.age, p.s2.tele, p.s2.sex, p.hight, p.weight);

    print1(&s);//传址:直接将s这个变量(对象)的地址传递过去,不会开辟多一份内存空间,可以节省内存,提高运行效率
    print2(s);//传值:此处为实参,将传递所有内容过去
    
    return 0;
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

食懵你啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值