初识结构体日记

本文介绍了C语言中的结构体,包括结构体的声明、初始化、成员访问以及结构体作为函数参数的传递。强调了在函数传参时,传递结构体地址(指针)优于直接传递结构体,以避免大的性能开销。同时,讲解了栈和数据结构的基础知识。
摘要由CSDN通过智能技术生成

结构体
1.结构体类型的声明
2.结构体初始化
3.结构体成员访问
4.结构体传参

结构体的声明
结构体的基础知识:
结构体是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量。
结构的声明
//sruct:结构体关键字   stu:结构体标签    struct stu:结构体类型;
//struct stu
//{
//    //成员变量
//    char name[20];
//    short age;
//    char tele[12];
//    char sex[5]
//}s1,s2,s3;//是三个全局的结构体变量//但我们很少使用这种方法,要尽量少使用全局变量;
typedef struct stu
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
}stu;//typedef:给类型重命名stu
int main()
{
    struct stu s1;//局部变量;
    stu s2;
    return 0;
}
结构成员的类型
结构的成员可以是普通变量,数组,指针,甚至是其他结构体。

结构体变量的定义和初始化
结构体在创建的同时给它赋值,这就叫初始化
例如:stu s1 = {"张三", 20, "12930486648", "男"};

结构体成员的访问
typedef struct stu
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
}stu;//typedef:给类型重命名stu

void print(stu s)
{
    printf("name: %s\n", s.name);
    printf("age: %d\n", s.age);
    printf("tele:%s\n", s.tele);
    printf("sex: %s\n", s.sex);
}
void print2(stu* ps)
{
    printf("name: %s\n", ps->name);
    printf("age: %d\n", ps->age);
    printf("tele: %s\n", ps->tele);
    printf("sex: %s\n", ps->sex);
}//传递指针我们在结构体中可以使用箭头来表示;
int main()
{
        //打印结构体print1好一些还是print2好一些
    stu s = {"张三", 40, "19234568899", "男"};//局部变量;
    print(s);
    print2(&s);
    return 0;
}
答案是:首选print2函数。原因是:
    函数传参的时候,参数是需要压栈的,如果传递一个结构体对象的时候,结构体过大,参数压栈的系统开销比较大,所以会导致性能的下降。
结论:结构体传参的时候,需要传结构体的地址。


压栈操作:
数据结构:
顺序表:如一个内存连续存放12345,
链表:如1,2,3,4,5,被分配到不同地址,但通过1能找到2,2能找到3,3能找到4,4能找到5;
栈:存放数据时,只能从栈顶往下存放,拿出来时也必须从栈顶先拿,先进后出,后进先出。插入一个元素叫:压栈;删除一个元素叫:出栈;
队列,----线性数据结构。
二叉树---树形数据结构。
-----图,等。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值