(c语言)初识结构体

2023-05-16

目录

1. 结构体的声明

1.1 结构的基础知识

1.2 结构的声明 

1.3 结构成员的类型 

1.4 结构体变量的定义和初始化 

2. 结构体成员的访问与传参 


1. 结构体的声明

1.1 结构的基础知识

结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。

例如常见的:int char,long..... 

1.2 结构的声明 

struct tag
{
member-list;
}variable-list; 

举两个例子

typedef struct Stu
{
      char name[20];//名字
      int age;//年龄
      char sex[5];//性别
      char id[20];//学号
}Stu;//记住分号不能丢

结构体类型的声明
//struct Stu
//{
//    char name[20];//名字
//    int age;//年龄
//    char sex[8];//性别
//    float score;
//}s1,s2,s3;
s1,s2,s3是通过struct Stu类型创建的变量
s1,s2,s3是全局变量

1.3 结构成员的类型 

结构的成员可以是标量、数组、指针,甚至是其他结构体。 

1.4 结构体变量的定义和初始化 

edef 类型重定义/重命名,也就是取别名

//结构体类型的声明
//typedef struct Stu
//{
//    char name[20];//名字
//    int age;//年龄
//    char sex[8];//性别
//    float score;
// }Stu;
//
//int main()
//{
//    //s4,s5是局部变量
//    //struct Stu 才是结构体类型,不能随便省略struct
//
//    struct Stu s4;
//    struct Stu s5;
//    Stu s6;
//
//    return 0;
//}
// 

2. 结构体成员的访问与传参 

//.      结构体变量.结构体成员
//->     结构体指针->结构体成员 

struct Point
{
	int x;
	int y;
}p1 = {10, 15};

struct S
{
	char c;
	struct Point sp;
	double d;
	char arr[20];
};

void print1(struct S s)
{
	printf("%c\n", s.c);
	printf("%d %d\n", s.sp.x, s.sp.y);
	printf("%lf\n", s.d);
	printf("%s\n", s.arr);
}
void print2(struct S* ps)
{
	printf("%c\n", ps->c);
	printf("%d %d\n", ps->sp.x, ps->sp.y);
	printf("%lf\n", ps->d);
	printf("%s\n", ps->arr);
}
int main()
{
	struct Point p = {100, 200};
	struct S ss = { 'w', {100,20}, 5.5, "hello"};
	//ss.c = 'b';
	//ss.sp.x = 1000;
	//ss.sp.y= 2000;
	//ss.d = 3.14;
	//strcpy(ss.arr, "world");//strcpy字符串拷贝
	print1(ss);//打印struct S类型的变量
	print2(&ss);//

	return 0;
}

函数传参的时候,参数是需要压栈的。(这部分内容我会在后续文章中讲到)。

如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的
下降。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(c语言)初识结构体 的相关文章

  • DBSCAN算法,概念+示例,超详细!!

    DBSCAN xff08 Density Based Spatial Clustering of Applications with Noise xff09 与划分和层次聚类方法不同 xff0c 它将簇定义为密度相连的点的最大集合 xff0
  • 层次聚类,概念+示例,超详细!!!

    介绍 层次聚类 Hierarchical Clustering 是聚类算法的一种 xff0c 通过计算不同类别数据点间的相似度来创建一棵有层次的嵌套聚类树 在聚类树中 xff0c 不同类别的原始数据点是树的最低层 xff0c 树的顶层是一个
  • ceph 17版本:使用cephadm部署单节点集群

    ceph 17版本 xff1a 使用cephadm部署17 2版本的单节点集群 文章目录 前言一 环境版本信息二 基础环境部署1 服务器准备2 配置DNS3 安装时间服务4 关闭防火墙5 安装docker服务5 安装lvm服务 二 ceph
  • C++静态成员静态函数,语法+示例,超详细!!

    类的静态成员定义 静态成员是指用static定义的变量 就是成员变量前面加了个 static 静态变量分为全局变量和局部变量两种 静态全局变量 静态全局变量声明在程序所有函数之外 xff0c 其作用域与全局变量一样 xff0c 所有函数体都
  • 数据结构。顺序栈的一些操作(两种定义、进栈、出栈、获取栈顶、共享栈)

    栈的两种定义 define MAXSIZE 50 静态 define ERROR 0 typedef struct int data MAXSIZE int top SqStack void init Stack SqStack amp s
  • 【无标题】数据结构。链栈的一些操作(定义、进栈、出栈)

    include lt iotream gt include lt stdio h gt include lt stdlib h gt using namespace std 构造节点 typedef struct StackNode int
  • 数据结构。栈+队列判断字符序列是否属于回文数字或回文字符,非常详细

    精髓 xff0c 请仔细体会 bool test SqQueue amp Q Stack amp s char c while c 61 getchar 61 39 64 39 因为栈是先进后出 push Stack s c 队列是先进先出
  • 动画函数添加回调函数

    回调函数原理 xff1a 函数可以作为一个参数 将这个函数作为参数传到另一个函数里面 xff0c 当那个函数执行完之后 xff0c 再去执行传进去的这个函数 xff0c 这个过程就叫做回调 回调函数的位置 xff1a 写到定时器结束的位置
  • 数组向后移动M位(C语言)

    include lt stdio h gt int main int N M int a 100 scanf 34 d d 34 amp N amp M for int i 61 0 i lt N i 43 43 scanf 34 d 34
  • 数据结构——顺序表

    一 定义 顺序表是一种线性的存储结构 xff0c 采用一段连续的地址存储单元依次存放数据元素 xff0c 一般采用数组存储 顺序表一般可分为 xff1a 1 静态顺序表 xff1a 使用定长数组存储元素 2 动态顺序表 xff1a 使用动态
  • WSL2安装

    目录 什么是WSL2 xff1f 安装WSL导入镜像设置Linux用户信息如何在资源管理器查看文件 xff1f 参考链接 笔者使用环境 Windows11 22H28GB RAM512GB ROM 什么是WSL2 xff1f WSL2是Wi
  • 计分板-2021安徽省机器大赛程序设计赛道

    题目描述 Alice 和 Bob 在玩游戏 xff0c 两个人分别有一个计分板 xff0c 记录各自的得分 得分 X 的 字典序严格小于得分 Y xff0c 那么就认为得分 X 高于得分 Y Bob 想要自己的分数高 于 Alice xff
  • 九、Debian 10 SSH

    要求 1 安装 SSH 工作端口监听在 19210 2 仅允许 InsideCli 客户端进行 ssh 访问 其余所有主机的请求都应该拒绝 3 在 cskadmin 用户环境 InsideCli 下可以使用密钥免密码登录 并且拥有超级 管理
  • Oracle函数中常用的日期函数实用案例

    获取系统当前时间 select sysdate from dual select current date from dual select localtimestamp from dual 获取两天以后的时间 select sysdate
  • 十六、Debian 10 WEB服务(lighttpd)

    题目要求 1 安装 lighttpd 使用其他 web 平台 以下功能均不得分 2 启用 fastcgi php 模块 3 index php 网页内容显示当前服务器的日期和时间 刷新页面时间自动更 新 解题步骤 1 了解 lighttpd
  • 数组及字符处理(C语言复习)

    1 编写程序 从键盘上输入10个整数 xff0c 求其中最大值和最小值及其序号 例 xff1a 输入 xff1a 88 95 10 3 6 81 12 77 166 35 输出 xff1a 最大值 xff1a 166 xff0c 序号 xf
  • 如何用python获取单个文件 或 文件夹中所有文件的行数

    目录 一 获取单个文件的行数二 获取文件夹中所有文件的行数三 关于os walk 函数 一 获取单个文件的行数 本例展示获取单个txt文件中的行数 xff1a span class token comment 统计单个文件的行数 span
  • 保姆级教程,阿里云快速搭建个人网站

    首先想要搭建一个网站需要一个域名和服务器 xff0c 我们先去阿里云搜索这两个东西 xff0c 然后分别去购买一下 服务器这里有轻量级应用服务器和云服务器ECS都可以选择 我选择的是ECS xff0c 然后我们去购买 xff0c 产品区域选
  • C语言-实现栈的基本操作(顺序栈)

    下面用两种方式来构建顺序栈 xff0c 分别是将top定义为指针类型和将top定义成指针下标两种形式 xff0c 实现栈的基本操作 目录 方法一 xff1a 1 1结构定义 1 2 完整代码 1 3测试用代码 xff08 用来逐步测试以上栈
  • 电脑无法打开相机照片怎么解决?

    相机拍照后的照片 xff0c 大部分人把照片保存在电脑上 xff0c 这样就可以把相机的内存卡腾空出来进行新的一轮拍摄 最近有新朋友询问如果电脑上的照片打不开怎么办 xff1f 首先我们要了解什么情况下电脑的照片会打不开 xff0c 原因可

随机推荐

  • Ubuntu22.04网络连接不上的问题

    平台 xff1a virtualbox Ubuntu22 04 在VirtualBox虚拟机上Ubuntu莫名其妙的连不上网 xff0c 在网络搜寻并尝试各种解答后问题终于得以解决 网络连接启动未打开 xff1b 在设置里面应该将网络勾选
  • 如何在Linux中安装redis(图文教程,按照步骤可安装成功)

    目录 1 在Redis版本库 xff1a https download redis io releases 可根据自己的需求选择下载对应的版本 xff0c 然后直接下载 2 通过Xftp工具进行上传 xff0c 选择指定的应用拖到右侧对应的
  • C++11入门

    文章目录 1 C 43 43 11简介2 列表初始化2 1 initializer list2 2 小结 3 声明3 1 auto3 2 decltype3 3 nullptr 4 范围for4 1 使用4 2 使用条件 5 STL新容器5
  • 51单片机实例6——用定时器T0中断控制1位LED秒闪烁

    用定时器T0中断控制1位LED秒闪烁 1 设计目的 用定时器T0中断控制1位LED秒闪烁 2 仿真电路 3 程序设计 xff08 C语言 xff09 include lt reg51 h gt include lt math h gt sb
  • ubuntu 18.04 ARM架构ECS更换默认源(2020.04)

    这里写自定义目录标题 0x00 ubuntu18 04 apt国内源0x01 一个source list的构成0x02 更换并更新源0x03 其他 0x00 ubuntu18 04 apt国内源 最近开的新的arm架构的ECS更换国内源的记
  • 【python】使用pip安装python第三方库(简单易懂)

    作者 二月知野 专栏 人生苦短 我学python Python语言有超过12万个第三方库 xff0c 覆盖信息技术几乎所有领域 例如 网络爬虫 自动化 数据分析与可视化 WEB开发 机器学习和其他常用的一些第三方库 什么是pip pip是p
  • PTA 7-1 字符串模式匹配(KMP)

    给定一个字符串 text 和一个模式串 pattern xff0c 求 pattern 在text 中的出现次数 text 和 pattern 中的字符均为英语大写字母或小写字母 text中不同位置出现的pattern 可重叠 输入格式 输
  • 洛谷P1233 木棍加工 动态规划 最大上升子序列

    P1233 木棍加工 Java 实现 思路 xff1a 这题的思路一定是贪心 xff0b 动态规划 xff0c 当遇上既有长度又有宽度的木棒的 xff0c 可以先对长度进行排序 xff08 如果长度相同 xff0c 则根据宽度排序 xff0
  • 解决selenium使用webdriver.Chrome()报错的问题

    运行时报错 第一个解决方法 xff1a driver 61 webdriver Chrome 34 webdriver驱动路径 34 记得是绝对路径 xff0c 记得和谷歌浏览器放在一起 谷歌驱动下载 xff08 你安装驱动才可以用seln
  • 猜数字游戏(c语言实现)

    一个简单的猜数字游戏送给大家 xff0c 非常适合初学者练习 xff0c 为此 xff0c 我将详细地讲解每一个步骤 我的码云地址 xff1a https gitee com small protrusion c practice code
  • goto语句实现关机小程序

    C语言中提供了可以随意滥用的 goto语句和标记跳转的标号 从理论上 goto语句是没有必要的 xff0c 实践中没有goto语句也可以很容易的写出代码 而goto语句无非就是直接跳到符号那里去 xff0c 这个符号不固定 xff0c 可以
  • C语言中的函数(详解)

    目录 1 函数是什么 2 c语言中函数的分类 xff1a 2 1 库函数 2 自定义函数 3 函数的参数 3 1 实际参数 xff08 实参 xff09 3 2 形式参数 xff08 形参 xff09 4 函数的调用 xff1a 4 1 传
  • C语言练习题(递归)

    目录 1 接受一个整型值 xff08 无符号 xff09 xff0c 按照顺序打印它的每一位 2 编写函数不允许创建临时变量 xff0c 求字符串的长度 3 求n的阶乘 xff08 不考虑溢出 xff09 4 求第n个斐波那契数 xff08
  • c语言—数组

    目录 1 一维数组的创建和初始化 1 1 数组的创建 1 2 数组的初始化 1 3 一维数组的使用 1 4 一维数组在内存中的存储 2 二维数组的创建和初始化 2 1 二维数组的创建 2 2 二维数组的初始化 2 3 二维数组的使用 2 4
  • 【C语言】三子棋游戏(详解)

    大家好 xff0c 我是小突突 今天我想详细地和你讲解这个三子棋小游戏是怎样实现的 目录 1 基本流程 2 配置运行环境 3 代码过程 3 1菜单界面选择开始或者退出游戏 3 2 创建棋盘并初始化 3 3打印棋盘 4 玩家落子并打印棋盘 5
  • ARM64开发板Ubuntu18.04环境安装docker-compose

    ARM64开发板Ubuntu18 04环境安装docker compose 硬件环境安装docker compose 硬件环境 我使用的是3399开发板 xff0c 开发板安装了ubuntu18 04 xff0c 最近想把程序都倒腾到doc
  • 一篇文章带你搞懂扫雷小游戏(c语言实现)

    目录 前言 1 游戏设计逻辑 2 游戏思考及实现过程 2 1符号与棋盘的建立 2 2棋盘的初始化与打印 2 3布置雷 2 4 排查雷并设置结束标志 3 代码展示 test c game c game h 前言 扫雷是一款经典的小游戏 xff
  • 操作符详解—c语言

    目录 1 操作符分类 xff1a 2 算术操作符 3 移位操作符 3 1 左移操作符 3 2 右移操作符 4 位操作符 5 赋值操作符 6 单目操作符 6 1 单目操作符介绍 7 关系操作符 8 逻辑操作符 9 条件操作符 10 逗号表达式
  • (初阶)指针

    好长时间没有更新博客了 xff0c 博主前段时间考虑了自己的学习路线 xff0c 还是想要去考个研究生 xff0c 以后会一直更新的 本篇文章简单地讲解一下指针的一些基础知识 xff0c 大招还会放在后面 目录 1 指针是什么 xff1f
  • (c语言)初识结构体

    目录 1 结构体的声明 1 1 结构的基础知识 1 2 结构的声明 1 3 结构成员的类型 1 4 结构体变量的定义和初始化 2 结构体成员的访问与传参 1 结构体的声明 1 1 结构的基础知识 结构是一些值的集合 xff0c 这些值称为成