初级C语言:6 结构体

6.1 结构体的声明

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

内置类型:char;short;int;long;long long;float;double

复杂对象的描述就会使用到:结构体。

结构的声明:

结构成员的类型:

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

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

6.2 结构体的初始化

6.3 结构体成员访问

结构体变量访问成员:  .

结构变量的成员是通过点操作符(.)访问的。点操作符接受两个操作数。//结构体变量.成员变量

结构体指针访问指向变量的成员:  

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

6.4 结构体传参

函数传参的时候,参数是需要压栈的,占用内存空间,所以结构体传参的时候,要传结构体的地址。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>//结构的声明:
struct people //struct+名
{//成员变量char name[18];char phone[12];char sex[5];int high;
};struct sr
{struct people p;char school[20];char work[20];
};void print0(struct people* p1)//接收地址
{printf("%s %s %d %s\n", p1->name, p1->sex, p1->high, p1->phone);//结构体指针->成员变量}void print1(struct people p1)//接收形参,占用内存空间
{printf("%s %s %d %s\n", p1.name, p1.sex, p1.high, p1.phone);//结构体变量.成员变量}int main()
{//使用struct People结构类型创建2个变量struct people p1 = {"张三","13567519419","男",177};//结构体变量初始化struct sr p2 = { {"李红","13867816316","女",165},"南京大学","工程师"};//结构体嵌套printf("姓名:%s 性别:%s 身高:%d 号码:%s\n", p1.name, p1.sex, p1.high, p1.phone);printf("姓名:%s 性别:%s 学校:%s 职业:%s 身高:%d 号码:%s\n", p2.p.name, p2.p.sex, p2.school, p2.work, p2.p.high, p2.p.phone);print0(&p1);//传地址print1(p1);//传实参return 0;
}

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

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

相关文章

通过拖拽动态调整div的大小

最近遇到一个需求&#xff0c;页面展示两块内容&#xff0c;需要通过拖拽可以动态改变大小&#xff0c;如下图&#xff1a; 实现思路&#xff1a;其实就是改变div样式的width&#xff0c;本质上就是Dom操作。 完整代码&#xff1a;&#xff08;基于vue2项目实践&#xff09; …

面试题:HashMap线程不安全 ConcurrentHashMap为什么线程安全

文章目录 背景常见集合线程安全性HashMap为什么线程不安全&#xff1f;怎么保证HashMap线程安全 ConcurrentHashMap为什么线程安全代码中分析 小结 背景 面试的时候先会喊你说说集合&#xff0c;那些集合线程不安全&#xff1f;当你说了HashMap线程不安全&#xff0c;面试官可能…

第 7 章 导航实现(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 准备工作 请先安装相关的ROS功能包&#xff1a; 安装 gmapping 包(用于构建地图)&#xff1a; sudo apt inst…

3d世界坐标转换到某个二维平面。

有个功能需要截取某个平面的点云数据&#xff0c;然后计算宽高。需要将3d点投影到二维平面上。 //将3d坐标点转换为2d/*** 法向量(A, B, C)* 常量D* 原点x0,y0,z0* 方向向量(vx, vy, vz)* 投影点(x,y,z)* public static double[] Convert3DPointTo2D(double A, double B, doub…

爬虫机试题-爬取新闻网站

之前投简历时遇到了这样的一个笔试。本以为会是数据结构算法之类的没想到直接发了一个word直接提需求&#xff0c;感觉挺有意思就写了这篇文章&#xff0c;感兴趣的朋友可以看看。 拿到urllist 通过分析页面结构我们得以知道&#xff0c;这个页面本身没有新闻信息&#xff0c;是…

什么是强化学习?什么是自监督学习?

强化学习&#xff08;Reinforcement Learning&#xff0c;RL&#xff09;是机器学习的一个范式和方法论&#xff0c;主要用于描述和解决智能体&#xff08;agent&#xff09;在与环境的交互过程中&#xff0c;通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的特点…

比特币叙事大转向

作者&#xff1a;David Lawant 编译&#xff1a;秦晋 要理比特币解减半动态&#xff0c;最关键的图表是下面这张&#xff0c;而不是价格图表。它显示了自 2012 年以来&#xff0c;矿业总收入与比特币现货交易量的比例&#xff0c;并标注了三个减半日期。 虽然矿工仍然是比特币生…

OpenHarmony图像解码库—stb-image [GN编译]

简介 stb_image主要是C/C实现的图像解码库。 下载安装 直接在OpenHarmony-SIG仓中搜索stb-image并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 库代码存放路径&#xff1a;./third_party/stb-image 修改添加依赖的编译脚本&#xff0c;路径&#xff1a;/devel…

编程入门(五)【Visual Studio Code安装与C/C++语言运行】

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 前言VScode安装与环境配置编写第一个C语言程序总结 前言 经过了前面对计算机…

mars3d实现禁止地图移动,禁止地图左右平移,但是鼠标可以移动的效果。

new mars3d.layer.GeoJsonLayer({渲染后实现鼠标左键按住不释放拖动时&#xff0c;地图不跟着拖动效果 当前问题&#xff1a; 1.在map初始化&#xff0c;或者是加载效果的时候&#xff0c;整个地球的场景都是一样的。 如果鼠标左键按住不释放&#xff0c;在屏幕上拖动的时候…

怎样将Windows系统上的V2rayN通过局域网共享

比我想象得要简单&#xff0c;看到了这里的讨论&#xff1a; v2ray是否可以局域网共享&#xff1f; Issue #210 v2ray/v2ray-core GitHub 这个博客就简单记录一下。相信有需求的朋友不止我一个。

还在 MySQL 中使用枚举?小心有坑~

为什么使用枚举 限定值的取值范围&#xff0c;比如性别&#xff08;男&#xff0c;女&#xff0c;未知&#xff09;等。 枚举类型使用陷阱 1.超级不推荐在mysql中设置某一字段类型为enum&#xff0c;但是存的值为数字&#xff0c;比如‘0’&#xff0c;‘1’&#xff0c;‘2…

软考135-上午题-【软件工程】-软件配置管理

备注&#xff1a; 该部分考题内容在教材中找不到。直接背题目 一、配置数据库 配置数据库可以分为以下三类&#xff1a; (1) 开发库 专供开发人员使用&#xff0c;其中的信息可能做频繁修改&#xff0c;对其控制相当宽松 (2) 受控库 在生存期某一阶段工作结束时发布的阶段产…

【算法】深度优先遍历(DFS)算法详解与实现

文章目录 1.算法原理2. 常见的深度优先遍历方式3. 代码实现总结 深度优先遍历&#xff08;DFS&#xff09;是一种常用的树或图的遍历算法&#xff0c;它通过尽可能深地搜索树或图的分支&#xff0c;直到路径上的所有节点都被访问完毕&#xff0c;然后再回溯到上一层&#xff0c…

什么是云渲染?云渲染平台怎么使用?云渲染怎么收费?

什么是云渲染&#xff1f; 云渲染是一种利用云计算技术提供的云端服务&#xff0c;用户可以将本地任务递交到远程服务器上&#xff0c;由远程计算集群协调和完成渲染&#xff0c;并将结果返回本地&#xff0c;最后用户可以在本地下载渲染结果。 而实时云渲染则是云渲染的一种…

P1010 [NOIP1998 普及组] 幂次方

本文由Jzwalliser原创&#xff0c;发布在CSDN平台上&#xff0c;遵循CC 4.0 BY-SA协议。 因此&#xff0c;若需转载/引用本文&#xff0c;请注明作者并附原文链接&#xff0c;且禁止删除/修改本段文字。 违者必究&#xff0c;谢谢配合。 个人主页&#xff1a;blog.csdn.net/jzw…

python入门之简洁安装VS保姆版安装(含虚拟环境)

11、保姆版安装 Anoconda安装&#xff08;python的一个发行版本&#xff09; 优点&#xff1a;集成了许多关于python科学计算的第三方库&#xff0c;保姆级别 下载&#xff1a;www.anaconda.com/download/ 版本默认64位&#xff0c;py37 √&#xff1a;add anaconda to my…

OCP Java17 SE Developers 复习题14

答案 C. Since the question asks about putting data into a structured object, the best class would be one that deserializes the data. Therefore, ObjectInputStream is the best choice, which is option C. ObjectWriter, BufferedStream, and ObjectReader are no…

可视化看板有那么多应用场景,该如何快速搭建?可视化工具该如何选择?

在当今的信息化时代&#xff0c;数据已经成为了现代决策的核心。无论是企业战略规划、运营管理&#xff0c;还是个人生活决策&#xff0c;数据都扮演着至关重要的角色。随着数据分析技术和工具的不断进步&#xff0c;数据在决策中的作用将变得更加突出&#xff0c;对组织和个人…

【Qt】Qt中代替C语言scanf和gets函数的方法

1、图形界面 Qt可以使用图像界面控件获取输入(这不废话吗?) 1)QLineEdit获取单行输入 QLineEdit *lineEdit = new QLineEdit(); // 单行输入框 QString strTextInput = lineEdit->text(); // 获取输入内容2)QTextEdit 获取多行输入框 QTextEdit *textEdit =