c/c++语言开发共享C 语言结构体的使用方法

目录c 语言结构体使用c 语言结构体使用1. 结构体的声明和定义1.1 介绍 我们知道数组是同种类型值的集合,而结构就是可以将不同类型的值放在一起。 结构是一些值的集合,这些值称为成员变量

目录
  • c 语言结构体使用

          c 语言结构体使用

          1. 结构体的声明和定义

          1.1 介绍

          • 我们知道数组是同种类型值的集合,而结构就是可以将不同类型的值放在一起。
          • 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。
          • 结构的成员可以是标量、数组、指针,甚至是其他结构体。

          如我们可以将一个学生的一些属性放在一起

            struct stu//定义一个结构体类型,就如int、char,struct stu是我们定义的结构体类型  {      //成员变量      char name[20];//免费精选名字大全      int age;//岁数      char id[20];//学号  };  int main()  {      struct stu a;//定义一个struct stu类型的变量a,而对象a中就包含了免费精选名字大全,岁数,学号的属性  }    

          1.2定义的几种类型

          类型1:

            struct stu  {      char name[20];      int age;  };  int main()  {      struct stu a;//定义局部变量a  }    

          类型2:

            struct stu  {      char name[20];      int age;  }s1,s2;//定义全局变量s1,s2    

          2. 结构体初始化

          代码如下:

            struct book  {     float height;     char name[20];  }b;  struct stu  {      char name[20];      int age;      char id[20];      struct book b;  };  int main()  {      //初始化时,其实是和数组初始化一样,用大括号,里面放上初始化的值。若结构体里面包含结构体,则大括号里面 //在放一个大括号,里面放内部结构体初始化的值            struct stu a={"bobo",18,"2021520",{15.8,"free"}};  }    

          3. 结构体成员访问

          3.1 成员介绍

          • 结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数,如:m.n(m为结构体变量,n为结构体中你想要访问的成员变量)
          • 指向一个结构体的指针访问指向变量的成员是通过操作符(->)访问的。 如:m->n(m为指向一个结构体的指针,n为结构体中你想要访问的成员变量),也可以(*m).n
            struct book  {     float height;     char name[20];  }b;  struct stu  {      char name[20];      int age;      char id[20];      struct book b;  };  int main()  {      struct stu a={"bobo",18,"2021520",{15.8,"free"}};      //法一      printf("%sn",a.name);      printf("%dn",a.age);      printf("%.1fn",a.b.height);//若访问结构体中的结构体中的一个成员,先访问到内部的结构体,再访问内部结构体中的成员            //法二      struct stu* pa=&a;      printf("%sn",pa->name);      printf("%dn",pa->age);      printf("%.1fn",pa->b.height);            //法三      printf("%sn",(*pa).name);      printf("%dn",(*pa).age);      printf("%.1fn",(*pa).b.height);  }    

          4. 结构体传参

          注意:

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

          代码如下:

            struct book  {     float height;     char name[20];  }b;  struct stu  {      char name[20];      int age;      char id[20];      struct book b;  };  void print1(struct stu p)  {      printf("%s %d %s %.1f %s",p.name,p.age,p.id,p.b.height,p.b.name);  }  void print2(struct stu* pa)  {      printf("%s %d %s %.1f %s",pa->name,pa->age,pa->id,pa->b.height,pa->b.name);  }  int main()  {      struct stu a={"bobo",18,"2021520",{15.8,"free"}};            //写一个函数打印a的内容            print1(a);//结果为:bobo 18 2021520 15.8 free(正常打印)            //再写一个函数,通过传a的地址打印a的内容            print2(&a);//结果为:bobo 18 2021520 15.8 free(正常打印)            return 0;  }    

          那么传值和传址有什么不同,哪个更好呢?(首选传址

          • 传参时,其实是对实参的一份拷贝,是会开辟一块空间来存储实参。传值,是将整个实参拷贝过去,而传地址,传过去的只是地址,传参的效率更高一些。
          • 函数传参的时候,参数是需要压栈的。 如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。

          那么什么是函数调用的参数压栈呢?

          栈:一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表

          特点:先进的后出,后进的先出。(先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来))

          压栈:给栈里存数据

          C 语言结构体的使用方法

          • 每一个函数的调用都会在内存的栈区上开辟一块空间,并且数据都会如压栈一样一个一个的存放进栈区,如果数据比较多、大时,参数压栈就比较吃力,所以导致性能就会下降。

          到此这篇关于c 语言结构体的使用基础版的文章就介绍到这了,更多相关c 语言结构体的使用内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

          需要了解更多c/c++开发分享C 语言结构体的使用方法,都可以关注C/C++技术分享栏目—计算机技术网(www.ctvol.com)!

          本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

          ctvol管理联系方式QQ:251552304

          本文章地址:https://www.ctvol.com/c-cdevelopment/791103.html

          (0)
          上一篇 2021年9月9日
          下一篇 2021年9月9日

          精彩推荐