复习第八课 C语言-结构体,其他

这篇具有很好参考价值的文章主要介绍了复习第八课 C语言-结构体,其他。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

【1】结构体

【2】typedef

【3】结构体数组

【4】结构体指针

【5】结构体大小

【6】共用体

【7】枚举

【8】存储类型


【1】结构体

1. 定义:

结构体就是一种用户自定义的新数据类型,在结构体中可以包含若干个相同数据类型或不同数据类型的成员变量,组合在一起进行描述

2. 格式:

struct 结构体名
{
	数据类型  变量1;
	数据类型  变量2;
	...
};

例:
struct student
{
	int id;
	float score;
};
 

3. 结构体变量:

定义格式:struct 结构体名 变量名;

1)先定义结构体,后定义变量
struct student
{
	int id;
	float score;
};
struct student stu;

2)在定义结构体的同时定义结构体变量
struct student
{
	int id;
	float score;
}stu;

3)缺省结构体类型名进行定义
struct 
{
	int id;
	float score;
}stu;
 

4. 赋值:

1)定义的同时用{}赋值
struct student
{
	int id;
	float score;
};
struct student stu={1,98.6};

2)先定义,后复制,需要对每个成员变量单个赋值
struct student
{
	int id;
	float score;
};
struct student stu;
stu.id = 1;
stu.score=56.3;

3)点等法赋值
struct student
{
	int id;
	float score;
};
struct student stu={
	.id = 1,
	.score=55,
};
 

5. 访问成员变量:

通过.进行访问:结构体变量名.成员变量名

练习:

创建一个名为student的结构体,包含姓名,学号,班级,分数,(数据类型自己定义),从终端输入学生的信息并打印。

#include<stdio.h>
struct student
{
    char name[32];
    int id;
    int class;
    float score;
};

int main(int argc, char const *argv[])
{
    struct student stu;
    scanf("%s %d %d %f",stu.name,&stu.class,&stu.id,&stu.score);
    printf("%s %d %d %.2f\n",stu.name,stu.class,stu.id,stu.score);
    return 0;
}
 

【2】typedef

1)定义结构体同时重定义
typedef	struct student
{
	char name[32];
	int id;
	int class;
	float score;
}STU;
STU stu;//定义一个结构体变量stu

2)先定义结构体,后重定义
struct student
{
	char name[32];
	int id;
	int class;
	float score;
};
typedef struct student STU;
STU  stu1;
 

【3】结构体数组

1. 格式:

1)定义结构体的同时定义结构体数组
struct student
{
    char name[32];
    int id;
    int class;
    float score;
}stu[5];

2)先定义结构体后定义
struct student
{
    char name[32];
    int id;
    int class;
    float score;
};
struct student stu[5];
 

2. 赋值:

1)定义数组同时赋值
struct student
{
    char name[32];
    int id;
};
struct student stu[2]={{“lisa”,1},{"yaya",2}};

2)先定义后赋值,需要对每个结构体元素的成员变量单独赋值
struct student
{
    char name[32];
    int id;
};
struct student stu[2];
stu[0].id=1;
strcpy(stu[0].name,"lisa");

 

结构体数组大小:sizeof(struct 结构体名) *个数

【4】结构体指针

1. 概念:

指向结构体变量的指针

2. 格式:

struct   结构体名  * 指针名;
struct  student
{
	int id;
	float score;
}stu1;
struct  student * p = &stu1;
 

3. 赋值:

指针名->成员变量名
p->id = 1;
p->score = 96.5;

4. 大小:

sizeof(p)=4,本质是指针

总结:

1. 不能将一个结构体变量作为一个整体来使用,只能对结构体变量中的各个成员变量分别使用

2. 如果成员变量又属于另一种结构体类型,则要用若干成员运算符(.)一级级找到最低级的成员

3. 对于成员变量的操作可以和其他普通变量一样进行各种运算

4. 在数组中,数组是不能彼此赋值的,但是结构体变量可以

【5】结构体大小

sizeof(struct 结构体名)
	
struct std
{
	char b;
	short c;
	double d;
};
1)字节对齐原则
找结构体成员最大数据类型和4进行比较,按照字节数小的为单位开辟空间

2)节省空间原则
减少空间浪费
 

【6】共用体

1. 格式:

union 共用体名
{
	成员列表;
};

2. 定义共用体变量:

union 共用体名 共用体变量名;

union value
{
	int a;
	char ch;
};

union value  val;
val.a = 1;
val.ch = 'a';

3. 特性:

1) 共用体所有成员变量共用一块地址空间

2) 赋值以最后一次赋值为实际数据

3) 共用体的大小成员中类型最大的数据的大小

【7】枚举

1. 定义:

一种用户自定义数据类型,用来声明一组常数

2. 格式:

enum  枚举类型名
{
	valuename1,
	valuename2,
.....
};

注意:枚举没有赋初值为0,后面依次加1文章来源地址https://www.toymoban.com/news/detail-565185.html

【8】存储类型

1.auto	自动型 用来修饰局部变量,默认省略
2.static 静态型,可以修饰变量和函数
修饰变量:
1.变量的存放位置在静态区(全局区)
2.生命周期为整个程序
3.限制作用域:
	修饰局部变量,和普通局部变量作用域没有区别,但是可以延长生命周期
	修饰全局变量,限制在本文件中使用
4.只初始化一次,未赋初值时为0
    修饰函数:
	static修饰的函数只能在本文件中使用
3.extern 外部引用
	通过extern引用其他文件的全局变量或函数
4.register 寄存器类型
	由于寄存器数量比较少,在申请不到空间时和auto一样
                    

到了这里,关于复习第八课 C语言-结构体,其他的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【.NET基础加强第八课--委托】

    委托(Delegate) 是存有对某个方法的引用的一种引用类型变量 1,定义一个委托类型 2,声明了一个委托变量 并且new 了一个委托对象,并且把方法传进去 3,调用委托相当于调用了方法 //2, 声明了一个委托变量 md ,并且new 了一个委托对象,并且把方法M1传进去 using System.Text; using

    2024年02月03日
    浏览(33)
  • css第八课:文本属性(字体,颜色属性)

    这一节我们要讲的是文本属性: 文本属性就是: css样式里的属性,对文本的修饰,比如颜色,大小,字体,下划线... 下图是文本的一些属性: 1.font-size和font-family属性 我们先来演示一下前两个属性:字体大小和字体类型  结果:  解释:我们这里第一个p标签设置的css样式

    2024年02月06日
    浏览(48)
  • 网络安全进阶学习第八课——信息收集

    信息收集(Information Gathering)信息收集是指通过各种方式获取所需要的信息。渗透的本质是信息搜集,而信息搜集整理为后续的情报跟进提供了强大的保证。 目标资产信息搜集的程度,决定渗透过程的复杂程度。 目标主机信息搜集的深度,决定后渗透权限持续把控。 收集信

    2024年02月13日
    浏览(46)
  • STM32第八课:PWM控制直流电机

            TB6612FNG是一款新型驱动器件,能独立双向控制2个直流电机,它具有很高的集成度,同时能提供足够的输出能力,运行性能和能耗方面也具有优势因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。                           

    2024年03月24日
    浏览(51)
  • 【SQL 必知必会】- 第八课 使用函数处理数据

    目录 函数         函数带来的问题         可移植(portable)         是否应该使用函数? 使用函数         文本处理函数         SOUNDEX 支持         日期和时间处理函数         数值处理函数         函数带来的问题         与几乎所有

    2023年04月10日
    浏览(51)
  • 孩子都能学会的FPGA:第八课——状态机

    (原创声明:该文是 作者的原创 ,面向对象是 FPGA入门者 ,后续会有进阶的高级教程。宗旨是 让每个想做FPGA的人轻松入门 , 作者不光让大家知其然,还要让大家知其所以然 !每个工程作者都搭建了全自动化的仿真环境,只需要双击 top_tb.bat 文件就可以完成整个的仿真(前

    2024年01月21日
    浏览(50)
  • 【代码随想录python笔记整理】第八课 · 奇怪的信

    前言: 本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。        在之前的算术运算中,我们遇到了一种曾经不常见的运算——取模。接下来,我们就通过这道题目来理解一下取模的作用。        对于这道题目我们其实有两种角度。第一种

    2024年02月22日
    浏览(56)
  • MySQl数据库第八课-------SQL命令查询-------主要命脉

     欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————— 查询数据         条件         逻辑运算符         模糊查询         范围查询 in         判断空 UNION  排序 聚合 分组:gro

    2024年02月16日
    浏览(53)
  • 从零实战SLAM-第八课(非特征点的视觉里程计)

     在七月算法报的班,老师讲的蛮好。好记性不如烂笔头,关键内容还是记录一下吧,课程入口,感兴趣的同学可以学习一下。 ------------------------------------------------------------------------------------------------------------------------------- 特征点法流程: 1.在图像中提取特征点并计算特征

    2024年02月12日
    浏览(34)
  • 『C语言初阶』第八章 -结构体

    🔥 博客主页 : 小羊失眠啦. 🔖 系列专栏 : C语言 🌥️ 每日语录 : 相信自己,比谁都棒。 ❤️ 感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 今天小羊又来给铁汁们分享关

    2024年02月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包