struct的用法「建议收藏」

struct的用法「建议收藏」使用结构体类型处理组合数据:即用户自定义数据类型。1c语言提供了很多系统类型。如intcharfloatdouble等等,但是这都是单一的数据类型,如果对于一个学生作为一个整体的话,那么他的

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

使用结构体类型处理组合数据:即用户自定义数据类型。

1 c语言提供了很多系统类型。如int char float double等等,但是这都是单一的数据类型,如果对于一个学生作为一个整体的话,那么他的类型就不可能是这么单一。并且肯定含义char int 等这些类型,这个时候就要根据我们自身的需要去建立数据类型,这就是struct

2 数组不能完成这项任务,为什么呢?因为数组只能存储相同类型的数据,比如int [] char[]

 

 

<第一个重点>

3 结构体类型:     

struct student{

Int num;

Char sex;

Int age;

Char name[20];

};

注意:1 最后的分号不要省略。

重:2 他与int() 是等价的,只不过int() 是系统定义好的,而这个是自己定义的。

  3 结构体的名字是用户自定义的,以便于其他struct相区别。

  4 大括号内部的子项被叫做成员。

重:5 成员(即子项)也可以是一个struct 类型。

 

重:结构体类型和int这种系统定义的类型是等价的,那么声明一个变量时就该是这样 ,

Int a;             ================                              struct student a;  

 

<第二个重点>

4 定义结构体变量类型:

1 结构体变量相当于一个模型,并没有定义变量,也就是说:如果是int a的话,那么只定义了int 是啥,还没有定义a.

 

2 三种方法定义结构体类型变量:

<1>struct  student        stu1,    stu2;

这里定义了stu1 stu2 ,相当于int a里面的a;

 

<2>在定义结构体类型时同时定义变量

Struct student{

Int num;

Char name[20];

Int sex;

}student1,student2;

注意这里的结束的分号,逗号。写小程序比较合适,大程序还是分开比较好。

 

<3>不指定类型名而直接去定义。这种方式不好,因为显然这样就会导致整个程序只有一个struct

 

3 只对结构体类型变量赋值,分配空间,而不会对结构体类型进行分配空间。

 

<第三个重点>:结构体类型变量的初始化与引用。

重:初始化可以静态形式,也可以动态。静态类似于数组的形式,动态类似于给类的属性赋值一样。

这个太简单了,不需要怎么讲,注意三点:

1  struct student {

 Int num;

   }student1={1};

2   student1.num;

3  如果用scan赋值,那么int 需要&,  char[]不需要&,你懂得,数组名就是地址。

 

<第四个重点>:结构体数组:即当面对多个学生的时候该怎么办?

结构体数组:与数值型数组基本上是一样的,区别就是数组型存放的是一个一个数值,而这里面存放的是结构体类型变量。

初始化三种:

1 可以把所有事都办到一起。

2 可以把他分成两件事

3 定义时要{{  a,   b  ,  c     } , {  } , {  }};

重重重重重重:3 一定要注意,数组的声明和初始化一定要放到一起。(一定要注意,这是要对所有数组来说)。

 

<第四个重点>:结构体指针。即一个结构体变量的其实地址。

1 指针变量的基类型必须与结构体类型一样。

2 访问结构体变量的成员:

1  (*p).name 注意这个括号不能省,因为 “  .  ”运算符级别高于”  *  ”  

2  p->name也可以访问。->为指向运算符。

3  结构体变量名.成员名。

3 strcut student * p;p++;其中这个p++,加的是不是一个字节,而是struct student 里面有多少字节,就一次加多少字节。

 

<第五个重点>:用结构体变量和变量的地址做参数。

一般是两种情况:1 用值(stu1.name)做传递。

2 用指针做传递。

 

形参

1 数组名  a;

 2 数组   a[];   

3 指针变量 *a;

重中之重:如果想在很多函数里用这个struct,那么一定要定义在函数外部。

重中之重:如果传递结构型变量数组参数给函数,由于是二维的,必然是一个二维数组,则实参的参数是地址(数组名:student或是首地址&student[0]),形参的参数必须是数组形式即(struct student a[],而不能是(struct student * a);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168087.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 算法学习–分酒问题(BFS)[通俗易懂]

    算法学习–分酒问题(BFS)[通俗易懂]有4个红酒瓶子,它们的容量分别是:9升,7升,4升,2升开始的状态是[9,0,0,0],也就是说:第一个瓶子满着,其它的都空着。允许把酒从一个瓶子倒入另一个瓶子,但只能把一个瓶子倒满或把一个瓶子倒空,不能有中间状态。这样的一次倒酒动作称为1次操作。假设瓶子的容量和初始状态不变,对于给定的目标状态,至少需要多少次操作才能实现?本题就是要求你编程实现最小操作次数的计算。输入:最终状…

    2022年10月19日
  • Pytest(11)allure报告「建议收藏」

    Pytest(11)allure报告「建议收藏」前言allure是一个report框架,支持java的Junit/testng等框架,当然也可以支持python的pytest框架,也可以集成到Jenkins上展示高大上的报告界面。mac环境:

  • word涂改涂掉图片_【最新】干部档案涂改检讨书-word范文 (20页)[通俗易懂]

    word涂改涂掉图片_【最新】干部档案涂改检讨书-word范文 (20页)[通俗易懂]本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!==本文为word格式,下载后可方便编辑和修改!==干部档案涂改检讨书篇一:干部人事档案检查自查报告关于开展干部人事档案审核工作的自查报告******:根据省局《关于开展干部人事档案审核工作检查的通知》(*****号)要求,我局对开展好干部人事档案审核自查工作高度重视,精心组织,周密安排,明确工作职责,认真制…

  • acwing-240. 食物链(并查集+边权值)[通俗易懂]

    acwing-240. 食物链(并查集+边权值)[通俗易懂]动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1∼N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是 2 X Y,表示 X 吃 Y。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。当一句话满足下列三条之一时,这句

  • Kafka源码解析_kafka删除消费组命令

    Kafka源码解析_kafka删除消费组命令本文依然是以kafka0.8.2.2为例讲解一,如何删除一个topic删除一个topic有两个关键点:1,配置删除参数delete.topic.enable这个Broker参数配置为True。2,执行bin/kafka-topics.sh–zookeeperzk_host:port/chroot–delete–topicmy_topic_name假如不配置删除参数为true的话,topic其实并没有被清除,只是被标记为删除。此时,估计一般人的做法是删除topic在Zookeep

    2022年10月16日
  • Webstorm关闭ESLint警告

    Webstorm关闭ESLint警告

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号