第十九章(自定义类型:结构体)

news2024/10/1 15:26:37

1. 结构体类型的声明

2. 结构体变量的创建和初始化

3. 结构成员访问操作符

4. 结构体内存对⻬

5. 结构体传参

一、结构体类型的声明

1.1结构体的声明

struct student
{
	int age;
	int id[10];
	char name[10];
};

1.2 结构体变量的初始化

struct student
{
	int age;
	char id[10];
	char name[10];
};

int main()
{
	// 1. 按照顺序初始化
	struct student s = { 18,"22021111","张三" };
	printf("%d %s %s\n", s.age, s.id, s.name);
	//2. 不按顺序初始化 
	struct student s1 = { .id = "2222555",.age = 28,.name = "王五"};
	printf("%d %s %s\n", s1.age, s1.id, s1.name);

	return 0 ;
}

三、这里我们在原来的知识中已经介绍过了

这里我们需要注意的是,我们在使用结构体的时候,尽量要给结构体变量命名。

四、结构体内存对齐
我们通过上边的学习已经初步掌握了结构体的基本使用了。
现在我们深入讨论一个问题:计算结构体的大小。
这也是一个特别热门的考点:结构体内存对齐

4.1 结构对齐
我们首先需要知道对齐规则
注意:这里需求到一个偏移量的知识
在这里插入图片描述
我们来举例子练习一下

#include<stdio.h>
struct s1
{
	char a1;
	int  a2;
	int a3;
};
int main()
{

	printf("%zd\n", sizeof(struct s1));
	return 0;
}

在这里插入图片描述

struct s3
{
	char nun1;
	int  nun2;
	double nun3;
};
int main()
{

	printf("%zd\n", sizeof(struct s3));

	return 0;
}

在这里插入图片描述
在这里插入图片描述

struct s3
{
	char nun1;
	int  nun2;
	double nun3;
};

struct s4
{
	char b1;
	struct s3;
	int b2;
};
int main()
{

	printf("%zd\n", sizeof(struct s4));

	return 0;
}

在这里插入图片描述

在这里插入图片描述

五、结构体传参
我们从两方面解释
1.传值
2.传址

struct s1
{
	int a ;
	char name[20];
};
void print_data(struct s1 num)//传值
{
	num.a = 20;
	printf("%d\n", num.a);
}
void print_score(struct s1* pr)  //传址
{
	pr->a = 30;
	printf("%d\n", pr->a);

}
int main()
{
	struct s1 num = { 10,"lisi" };
	print_data(num);
	printf("%d\n", num.a);
	print_score(&num);
	printf("%d\n", num.a);

	return 0;
}

结论:在我们传参的时候,要传结构体的地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2182612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv1代码复现(论文复现)

YOLOv1代码复现&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 YOLOv1代码复现&#xff08;论文复现&#xff09;论文介绍主要内容实验部分卷积网络结构计算损失核心代码 缺点 论文介绍 该论文就是YOLOv1&#xff0c;YOLOv1是YOLO系列目…

大模型部署——NVIDIA NIM 和 LangChain 如何彻底改变 AI 集成和性能

DigiOps与人工智能 人工智能已经从一个未来主义的想法变成了改变全球行业的强大力量。人工智能驱动的解决方案正在改变医疗保健、金融、制造和零售等行业的企业运营方式。它们不仅提高了效率和准确性&#xff0c;还增强了决策能力。人工智能的价值不断增长&#xff0c;这从它处…

Ubuntu网卡配置

一、低阶版本配置网卡步骤:(如Ubuntu 16.04.2 LTS) 编辑配置文件interfaces,添加网卡配置信息 我这边以root用户登录进服务器,就不需要普通用户每次在命令前添加sudo vim /etc/network/interfaces 1.动态获取ip设置: auto ens3 # 网卡设备名称ens3 iface ens3 ine…

Tdesign TreeSelect 树形选择 多选

这里写自定义目录标题 小程序原生开发 Tdesign TreeSelect 树形选择 多选可以选择不同一级分类下的数据 小程序原生开发 Tdesign TreeSelect 树形选择 多选可以选择不同一级分类下的数据 TreeSelect 树形选择 在原demo基础上修改 const chineseNumber 一二三四五六七八九十.…

音视频入门基础:FLV专题(9)——Script Tag简介

一、SCRIPTDATA 根据《video_file_format_spec_v10_1.pdf》第75页到76页&#xff0c;如果某个Tag的Tag header中的TagType值为18&#xff0c;表示该Tag为Script Tag&#xff08;脚本Tag&#xff0c;又称Data Tag、SCRIPTDATA tag&#xff09;。这时如果Filter的值不为1表示未加…

昇思MindSpore进阶教程--使能图算融合

大家好&#xff0c;我是刘明&#xff0c;明志科技创始人&#xff0c;华为昇思MindSpore布道师。 技术上主攻前端开发、鸿蒙开发和AI算法研究。 努力为大家带来持续的技术分享&#xff0c;如果你也喜欢我的文章&#xff0c;就点个关注吧 正文开始 图算融合是MindSpore特有的网络…

十二生肖国庆姓氏专属头像

关注▲洋洋科创星球▲领取十二生肖国庆姓氏专属头像定制&#xff01; 庆祝祖国75周年华诞&#xff0c;在这个举国欢庆的国庆节时刻&#xff0c;我们特别为您准备了一份独特的礼物——十二生肖国庆姓氏专属头像定制。 十二生肖&#xff0c;又称属相&#xff0c;是中国传统文化中…

Linux 安装redis主从模式+哨兵模式3台节点

下载 https://download.redis.io/releases/ 解压 tar -zxvf redis-7.2.4.tar.gz -C /opt chmod 777 -R /opt/redis-7.2.4/安装 # 编译 make # 安装&#xff0c; 一定是大写PREFIX make PREFIX/opt/redis-7.2.4/redis/ install配置为系统服务 cd /etc/systemd/system/主服务…

盒子是什么? -- 第四课

文章目录 前言一、盒子是什么&#xff1f;二、元素介绍1.边框 - border2.内边距 - padding3. 外边距属性 -- margin 三、拓展知识1.块元素垂直外边距的合并2. 嵌套块元素垂直外边距的合并 四、背景属性五、元素的浮动1.浮动2.清除浮动3.元素定位4. 特殊定位 -- 黏性定位5. z-in…

Python selenium库学习使用实操二

系列文章目录 Python selenium库学习使用实操 文章目录 系列文章目录前言一、模拟登录二、表单录入 前言 在上一篇文章中&#xff0c;我们完成Selenium环境的搭建&#xff0c;和简单的自动化。今天继续深入学习。今天的目标是完成模拟登录&#xff0c;和表单录入。 一、模拟登…

什么是网络准入控制系统?2024年有哪些好用的网络准入控制系统?

网络准入控制系统&#xff08;Network Access Control, NAC&#xff09;是一种网络安全解决方案&#xff0c;旨在确保只有符合特定安全策略的设备和用户才能访问网络资源。NAC系统通过在设备连接到网络之前对其进行身份验证、授权和健康状态检查&#xff0c;从而防止未经授权的…

YOLOv11改进 | 注意力篇 | YOLOv11引入GAM注意力机制

1.GAM介绍 摘要&#xff1a;为了提高各种计算机视觉任务的性能&#xff0c;人们研究了各种注意机制。然而&#xff0c;现有的方法忽略了保留通道和空间信息以增强跨维交互的重要性。因此&#xff0c;我们提出了一种通过减少信息减少和放大全球交互表示来提高深度神经网络性能的…

vue3 实现拖拽排序效果 sortablejs

效果图 依赖安装 npm i sortablejs -S <template><div class"warp"><div class"parent-box" v-for"pItem in sortData" :key"pItem.name"><h2 class"parent-name">{{ pItem.name }}</h2>&l…

程序计数器(学习笔记)

程序计数器是一块较小的内存空间&#xff0c;它的作用可以看做是当前线程所执行的字节码的信号指示器&#xff08;偏移地址&#xff09;&#xff0c;Java编译过程中产生的字节码有点类似编译原理的指令&#xff0c;程序计数器的内存空间存储的是当前执行的字节码的偏移地址 因为…

唱响红色志愿,赞歌献给祖国——杭州建德市庆祝中华人民共和国成立75周年联欢盛宴纪实

作者&#xff1a;华夏之音/李望 通讯员&#xff1a;王江平 9月30日上午&#xff0c;金桂的香气与红旗的鲜艳交相辉映&#xff0c;杭州建德市党群服务中心、建德市新时代文明实践中心内洋溢着一股浓厚的节日氛围。在这里&#xff0c;一场名为“唱响红色志愿、赞歌献给祖国”的联…

企业架构系列(15)ArchiMate第13节:战略视角

战略视角提供了对企业高层战略方向和构成的不同视角建模&#xff0c;使建模者能够专注于某些特定方面。 一、战略视角概览 战略视角主要包括&#xff1a; 战略视角&#xff1a;提供企业战略、能力、价值流和资源以及预期成果的高层概述。能力地图视角&#xff1a;提供企业能力…

MySQL基础篇 part1

为什么使用数据库和数据库基本概念 想在vscode用markdown了&#xff0c;为什么不直接拿pdf版本呢&#xff1f; DB:数据库(Database) 即存储数据的“仓库”&#xff0c;其本质是一个文件系统。它保存了一系列有组织的数据。 DBMS:数据库管理系统(Database Management System)…

Oracle控制文件全部丢失如何使用RMAN智能恢复?

1.手动删除所有控制文件模拟故障产生 2.此时启动数据库发现控制文件丢失 3.登录rman 4.列出故障 list failure; 5.让RMAN列举恢复建议 advise failure; 6.使用RMAN智能修复 repair failure;

当AI遇上金融科技,创新业务场景和案例涌现

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 在这个信息爆炸的时代&#xff0c;我们每天…

【路径规划】使用 RRT、RRT* 和 BIT* 进行网格图的路径规划

摘要 本文比较了三种路径规划算法&#xff1a;快速随机树&#xff08;RRT&#xff09;、快速随机树星&#xff08;RRT* &#xff09;和批量信息树&#xff08;BIT*&#xff09;&#xff0c;在网格图环境中进行路径规划的效果。通过仿真分析这些算法在路径质量、计算效率和收敛…