鱼C论坛

 找回密码
 立即注册
查看: 2501|回复: 0

[学习笔记] 016-结构体基础

[复制链接]
发表于 2018-8-19 10:27:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 moc 于 2018-8-19 10:29 编辑

1、结构体简介
        结构体属于聚合数据类型的一类,它将不同的数据类型整合在一起构成一个新的类型,相当于数据库中一条记录,比如学生结构体,整合了学号,姓名等等信息。结构体的好处就是可以对这些信息进行整体管理操作,类似面向对象中类的属性。他也是一种数据类型,也是固定内存块旳大小,一个模子。
2、C语言结构体
①语法1
                struct 结构体名称{
                        数据类型 member1;
                        数据类型 member2;
                };
这种方式在声明结构体变量时为:struct 结构体名称 结构体变量名 。
②语法2
                typedef struct 结构体名称{
                        数据类型 member1;
                        数据类型 member2;
                }结构体名称别名;
这种方式在声明结构体变量时有两种方式。
        第一种:struct 结构体名称 构体变量名
        第二种:结构体名称别名 结构体变量名
原因:这里使用了typedef关键字,此关键字的作用就是声明数据类型的别名,方便用户编程,所以这里用了之后,结构体名称别名就相当于struct 结构体名称。在声明结构体变量时,就无需写struct了。
③语法3
                struct 结构体名称{
                        数据类型 member1;
                        数据类型 member2;
                }结构体变量名;

相当于:

                struct 结构体名称{
                        数据类型 member1;
                        数据类型 member2;
                };
                struct 结构体名称 结构体变量名;
这种方式既定义了结构体名称,同时声明了一个结构体变量名。在其它地方也可以通过struct 结构体来再次声明其它变量,而第四种方法则不可以。
④语法4
                struct {
                        数据类型 member1;
                        数据类型 member2;
                }结构体变量名;
此方式是匿名结构体,在定义时同时声明2个结构体变量,但不能在其它地方声明,因为我们无法得知该结构体的标识符,所以就无法通过标识符来声明变量。
3、C++语言结构体
        C++语言结构体语法的C大同小异,声明结构体变量时可以省略struct 其它无变化!
        具体参照C语言部分,在用到“struct 结构体名称”时,可以简写为“结构体名称”来声明。
4、结构体初始化和赋值
        初始化和数组类似,直接在声明的结构体变量后面={ ... , ... , ...  }为每个成员赋初值。
        结构体变量的赋值方法有两种:
                1. 结构体变量.操作
                2. 结构体指针->操作
5、代码示例
  1. #include "stdlib.h"
  2. #include "stdio.h"
  3. #include "string.h"

  4. // 1.定义结构体数据类型  本质固定内存块旳大小
  5. // 2.c c++ 注意结构体类型定义变量时,c和c++处理不一样
  6. // 3.结构体变量内存四字节存放
  7. typedef struct _Teacher
  8. {
  9.         char c1;
  10.         char name[62];
  11.         int age;
  12.         char tile[128];
  13. }Teacherbak;

  14. //结构体变量的赋值方法  .和->
  15. struct Teacher
  16. {
  17.         char name[62];
  18.         int age;
  19. }t1 = { "as", 34 }, t2 = {"az", 32};    //

  20. struct    //匿名结构体
  21. {
  22.         char name[62];
  23.         int age;
  24. }t3 = {"sa", 21};

  25. void main()
  26. {
  27.         //此处用结构体定义变量,告诉编译器为其分配变量
  28.         struct Teacher t4 = {"asde", 24};
  29.         printf("大小:%d\n", sizeof(t4));

  30.         struct Teacher *p = NULL; //结构体指针
  31.         p = &t4;

  32.         printf("%s\n", t4.name);
  33.         printf("%d\n", p->age);

  34.         system("pause");
  35. }
复制代码


本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 04:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表