初识结构体(C语言)

目录

1、结构体声明

2、结构体访问

3、结构体传参


1、结构体声明

        结构是一些值的集合,这些值称为成员变量。结构的每一个成员可以是不同类型的变量。有点像数组,但是一个数组只能存放同一种类型的变量。如果要描述复杂对象的时候,对象由多种变量组成,如“个人信息”这个变量,它里面包含了“姓名”,“年龄”,“电话”,“性别”等多个不同类型的变量,这时候我们就可以创建一个结构体变量。

        1.2 结构体声明

        

         如此便声明了一个结构体类型struct Peo,之后可以通过类型定义结构体变量

        1.3 结构体成员的类型

        以这个结构体为例,结构体内的成员,可以说标量、数组、指针、甚至是其他结构体。

        1.4 结构体定义和初始话

        结构体定义:

        这里main函数内的 struct Peo pa;就定义了一个结构体变量pa。

        结构体初始化:

  

        定义好结构体后,创建结构体变量时就可以对其进行初始话,按照定义的顺序依次初始化,两个成员间用 ‘ ,’隔开。效果:

        可以看到,初始化成果。

        

2、结构体访问

        结构体通过. 或者->访问

        可以发现 ,当我们直接访问p1这个结构体变量时,我们用的是 ‘.’,而当我们将p1的地址赋值给一个结构体指针p时,通过p访问结构体内容用的是‘->’。其实‘->’就相当于先‘*’后‘.’的作用,对于p指针,就是(*p).的意思。

3、结构体传参

        直接看一个代码:

        这里举例了两种结构体传参,都是可以正常传参的。

        但是,我们推荐用指针进行传参,因为直接传结构体的话,不仅主函数要创建一次空间,函数建立的时候又要建立一次结构体形参,占用内存较大,不推荐。如果用指针进行传参的话,就只需要创建一次结构体变量,内存占用减少,性能提升。

        结论,结构体传参是,传传地址(指针)。

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

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

相关文章

基于Java SSM框架实现留学生交流互动论坛网站项目【项目源码+论文说明】

摘要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

【leetcode】常用数学题解法介绍

当涉及到ACM算法题中常见的数学常识和知识点时,以下是更加详细和全面的分析: 二进制: 二进制在计算机中是最基础的进制,它只包含两个数字0和1。在ACM算法题中,常用的二进制操作有: 位运算:包括…

关于三色标记算法

关于三色标记算法 三色标记算法是一种用于垃圾收集得算法,主要用于解决在并发垃圾收集中可能出现得对象引用更新问题。在JVM中,这种算法主要应用于CMS(ConcurrentMarkSweep)收集器和G1(Garbage-first)收集…

基于ant的图片上传组件封装(复制即可使用)

/*** 上传图片组件* param imgSize 图片大小限制* param data 上传数据* param disabled 是否禁用*/import React, { useState,useEffect } from react; import { Upload, Icon, message} from antd; const UploadImage ({imgSize 50,data { Directory: Image },disabled f…

Vue封装全局公共方法

有的时候,我们需要在多个组件里调用一个公共方法,这样我们就能将这个方法封装成全局的公共方法。 我们先在src下的assets里新建一个js文件夹,然后建一个common.js的文件,如下图所示: 然后在common.js里写我们的公共方法,比如这里我们写了一个testLink的方法,然后在main…

Apache Flink连载(三十):Flink 内存模型

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录

【GUI编程】Tkinter之OptionMenu

OptionMenu OptionMenu类是一个辅助类,它用来创建弹出菜单,并且有一恶搞按钮显示它。它非常类似Windows上的下拉列表插件。 如果要获取当前选项菜单的值,你需要把它和一个Tkinter变量联系起来。 def __init__(self, master, variable, val…

【LeetCode+JavaGuide打卡】Day19|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

学习目标: 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树 学习内容: 654.最大二叉树 题目链接&&文章讲解 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&…

“无限交互,全新驾驶体验!智能语音小车,与您共同开创未来出行。”#51单片机最终项目《智能语音小车》【上】

"无限交互,全新驾驶体验!智能语音小车,与您共同开创未来出行。”#51单片机最终项目《智能语音小车》【上】 前言预备知识1. L9110S电机控制器接线1.1 L9110S概述1.2 L9110S IO口描述1.3 L9110S 实物图1.4 L9110S与单片机接线 2. L9110前…

java基础 -- 事件监听器

要实现一个事件监听器,您可以使用Java中的事件模型和接口。以下是一个简单的示例,演示如何创建和使用一个事件监听器: 创建事件类(Event Class): import java.util.EventObject;public class MyEvent ext…

ComfyUI添加IP白名单功能

AI生图很火,相信你对ComfyUI不陌生,查看ComfyUI的源码可以发现它是使用aiohttp来作为服务端的。那么我们在使用ComfyUI的时候可能需要做一些安全的限制,接下来我们将探讨如何在 ComfyUI 中添加 IP 白名单功能,以确保只有特定的用户…

PostgreSQL按日期列创建分区表

在PostgreSQL中,实现自动创建分区表主要依赖于表的分区功能,这一功能从PostgreSQL 10开始引入。分区表可以帮助管理大量数据,通过分布数据到不同的分区来提高查询效率和数据维护的便捷性。以下是在PostgreSQL中自动创建分区表的一般步骤&…

【Git】Gitbash使用ssh 上传本地项目到github

SSH Git上传项目到GitHub(图文)_git ssh上传github-CSDN博客 前提 ssh-keygen -t rsa -C “自己的github电子邮箱” 生成密钥,公钥保存到自己的github的ssh里 1.先创建一个仓库,复制ssh地址 git init git add . git commit -m …

GEE必须会教程—跳舞的线(字符串类型)

字符串,GEE上跳舞的线! GEE学习之路漫长,跟着小编一起走进今天的数据类型的学习。字符串是各大编程语言的常用数据类型,我们今天需要了解GEE平台上字符串的定义、以及常用的方法。 1.定义字符串 //字符串构造 var base_str &q…

C#面:.NET中所有类型的基类是什么

System.Object 是C# .NET中所有类型的基类,它提供了一些通用的方法和属性,以及对象的类型信息和引用比较等功能。 例如:System.ObjectToString(),Equals(),GetHashCode() 等。 由于所有类型都继承自 System.Object&a…

「Java同步原理与底层实现解析」

原理概要: java虚拟机中的同步基于进入与结束Monitor对象实现,无论是显式同步(同步代码块进入在jvm是根据monitorenter标志、结束是monitorexit标志,那最后一个是monitorexit是异常结束时被执行的释放指令)、隐式同步…

图像预处理技术与算法

图像预处理是计算机视觉和图像处理中非常关键的第一步,其目的是为了提高后续算法对原始图像的识别、分析和理解能力。以下是一些主要的图像预处理技术: 1.图像增强: 对比度调整:通过直方图均衡化(Histogram Equalization)等方法改善图像整体或局部的对比度。 伽玛校正:…

MT4技术分析工具介绍:让你更好地把握市场趋势

在外汇交易市场中,技术分析是一种常用的分析手段,而MT4作为外汇交易中广泛使用的交易平台,拥有丰富的技术分析工具,能够帮助交易者更好地把握市场趋势。本文将介绍几款常用的MT4技术分析工具,帮助读者更好地理解和运用…

STM32 输入捕获模式测频率

单片机学习! 目录 文章目录 前言 一、输入捕获测频率配置步骤 二、代码示例及注意事项 2.1 RCC开启时钟 2.2 GPIO初始化 2.3 配置时基单元 2.4 配置输入捕获单元 2.5 选择从模式的触发源 2.6 配置从模式为Reset 2.7 开启定时器 总结 前言 博文介绍如何配置输入捕获电…

OpenAI 全新发布文生视频模型 Sora,支持 60s 超长长度,有哪些突破?将带来哪些影响?

Sora大模型简介 OpenAI 的官方解释了在视频数据基础上进行大规模训练生成模型的方法。 我们下面会摘取其中的关键部分罗列让大家快速get重点。 喜欢钻研的伙伴可以到官网查看技术报告: https://openai.com/research/video-generation-models-as-world-simulator…