C语言第十四课-------结构体的认识和使用-------重要一笔

作者前言

🎂        ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂

   🎂      作者介绍:                              🎂🎂

       🎂 🎉🎉🎉🎉🎉🎉🎉              🎂

          🎂作者id:老秦包你会,         🎂

简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂

             喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨         🎂🎂🎂🎂🎂🎂🎂🎂

                 🎂个人主页::小小页面🎂

                  🎂gitee页面:秦大大🎂

                   🎂🎂🎂🎂🎂🎂🎂🎂
        🎂  一个爱分享的小博主 欢迎小可爱们前来借鉴🎂

_______________________________________________________

______________________________________________________________________

目录

结构体

        1.结构体类型的声明
       2. 结构体初始化
       3. 结构体成员访问
        4.结构体传参
————————————————————————————————————

插播小知识

1.char 、int 、short、double、等等都是C语言的内置类型

结构体的声明

结构的基础知识

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

这里的结构就是结构体
前面我的学习的数组:一组相同类型元素的集合

结构的声明

struct tag
{
member - list ;
} variable - list ;
结构体关键字:struct
结构体类型名字:tag
成员列表: member-list    可以是一个或者多个
variable-list:变量列表
#include <stdio.h>
struct Studey
{//描述学生的相关属性char name[20];int age;char sex[5];char tele[12];
} s3, s4;
//s3.s4是结构体类型的变量
//全局变量
int main()
{struct Studey s1;struct Studey s2;return 0;
}

代码中有两种定义结构体类型 ,s3,和s4的定义的是结构体类型变量,是全局变量,s1和s2定义结构体类型变量,是局部变量,

有小可爱觉得定义结构体类型变量有点繁琐,我们可以使用typedef类型重定义

#include <stdio.h>
typedef struct Studey
{//描述学生的相关属性char name[20];int age;char sex[5];char tele[12];
} Stu;
int main()
{Stu s1;Stu s2;return 0;
}

结构成员的类型

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

#include <stdio.h>
struct B
{char c;int i;
};
struct C
{char c;int num;int arr[10];double* pd;struct B b;struct B* pb;
} s0;
struct B s1;
int main()
{return 0;
}

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

#include <stdio.h>
struct B
{char c;int i;
};
struct C
{char c;int num;int arr[10];double* pd;struct B b;struct B* pb;
} s0;
struct B s1;
int main()
{// 按照顺序初始化double a = 10;struct C s2 = { 'q', 100, {1,2,3}, &a, {'a', 99}, NULL };//指定成员初始化struct C s3 = { .c = 's', .num = 100 };return 0;
}

初始化有两种,一种是全部初始化,一种是部分初始化。

结构体成员的访问

.

->

#include <stdio.h>
#include <string.h>struct S
{char name[20];int age;
};
void  set_s(struct S* t)
{//s.name = "zhangsan";t->age = 18;strcpy(t->name, "张三");}
int main()
{struct S s = { 0 };//写一个函数给s中存放数据set_s(&s);return 0;
}

需要注意的是往数组名里写入数据要使用strcpy ,因为数组名是一个常数,往常数里面是不能写入数据的,

结构体传参

#include <stdio.h>
#include <string.h>struct S
{char name[20];int age;
};
void  set_s(struct S* t)
{//s.name = "zhangsan";t->age = 18;strcpy(t->name, "张三");}
void prit_s(struct S* s)
{printf("%d\n%s", s->age, s->name);
}
int main()
{struct S s = { 0 };//写一个函数给s中存放数据set_s(&s);//打印结构体prit_s(&s);return 0;
}

如果是打印结构体一般是传地址过去,因为创建形参会在栈区申请一块空间,如果使用传值,空间的申请就很大,如果传址,就会节省很大空间,

结论:
结构体传参的时候,要传结构体的地址。

总结:

结构体就介绍到这里了,有不懂的小可爱可以私聊我

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

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

相关文章

P1195 口袋的天空

口袋的天空 题目背景 小杉坐在教室里&#xff0c;透过口袋一样的窗户看口袋一样的天空。 有很多云飘在那里&#xff0c;看起来很漂亮&#xff0c;小杉想摘下那样美的几朵云&#xff0c;做成棉花糖。 题目描述 给你云朵的个数 N N N&#xff0c;再给你 M M M 个关系&…

mac m1使用docker安装kafka

1.拉取镜像 docker pull zookeeper docker pull wurstmeister/kafka 2.启动zookeeper docker run -d --name zookeeper -p 2181:2181 zookeeper 3.设置zookeeper容器对外服务的ip Zookeeper_Server_IP$(docker inspect zookeeper --format{{ .NetworkSettings.IPAddress }}…

Rocky(centos) jar 注册成服务,能开机自启动

概述 涉及&#xff1a;1&#xff09;sh 无法直接运行java命令&#xff0c;可以软连&#xff0c;此处是直接路径 2&#xff09;sh脚本报一堆空格换行错误&#xff1a;需将转成unix标准格式&#xff1b; #切换到上传的脚本路径 dos2unix 脚本文件名.sh 2&#xff09;SELINUX …

【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)

prometheus 出现NaN场景以及如何去除干扰(Not a Number) 1、在prometheus中使用NaN来表示无效数值或者结果 场景&#xff1a; 一些监控系统使用 NaN 作为空值或缺失值&#xff0c;但在 Prometheus 中 NaN 只是另一个浮点值。Prometheus 表示缺失数据的方式是让数据缺失。Prom…

哪些年,我们编程四处找的环境依赖

基于Maven&#xff0c;快速构建SSM项目 <properties><!-- 将spring和有关的升级版本&#xff0c;设置为5.0.5--><spring.version>5.0.5.RELEASE</spring.version><!-- 将mybatis和有关的升级版本&#xff0c;设置为3.1.1--><my…

深度Q学习的收敛性分析:通过渐近分析方法

深度Q学习收敛性分析:通过渐近分析方法 1. 概述1.1. 理论的相关研究1.2. 主要贡献1.2.1. 目标网络1.2.2. 经验回放2. 神经网络2.1. 前馈网络2.2. 激活函数σ2.3. 深度Q网络3. 深度Q学习:算法和假设4. 收敛性分析4.1. DQN的连续化深度Q学习是一种重要的强化学习算法,它涉及到…

W6100-EVB-PICO做DNS Client进行域名解析(四)

前言 在上一章节中我们用W6100-EVB-PICO通过dhcp获取ip地址&#xff08;网关&#xff0c;子网掩码&#xff0c;dns服务器&#xff09;等信息&#xff0c;给我们的开发板配置网络信息&#xff0c;成功的接入网络中&#xff0c;那么本章将教大家如何让我们的开发板进行DNS域名解…

【C# 基础精讲】C# 数据类型概述

在C#中&#xff0c;数据类型可以分为以下三大类&#xff1a;值类型、引用类型和指针类型。每种类型都具有不同的特点和适用场景&#xff0c;了解这些类型对于编写高效和稳健的C#程序至关重要。下面将依次介绍这三大类数据类型&#xff0c;并列出C#中常见的每种类型。 值类型 值…

【Linux命令详解 | cd命令】Linux系统中用于更改当前工作目录的命令

文章标题 简介一&#xff0c;参数列表二&#xff0c;使用介绍1. 使用cd命令切换到特定目录2. 使用cd命令与路径相关的特殊字符3. 使用cd命令切换到包含空格的目录4. 使用cd命令切换到前一个和后一个目录5. 使用cd命令切换到用户的主目录6. 使用cd命令与绝对路径和相对路径 总结…

宁波银行最新内推码 MK4913

宁波银行最新内推码 MK4913 内推码&#xff1a; MK4913 内推二维码 &#xff1a; 网申路径&#xff1a; 网页端&#xff1a;登录宁波银行招聘官网&#xff1a; https://zhaopin.nbcb.com.cn 选择【校园招聘】-【招聘岗位】手机端&#xff1a;关注【宁波银行招聘】公众号&a…

【物理】带电粒子在磁场和电场中移动的 3D 轨迹研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

无涯教程-Perl - chdir函数

描述 此功能将当前工作目录更改为EXPR,如果未指定,则更改为用户的主目录。此函数调用等效于Unix命令 cd EXPR 。 语法 以下是此函数的简单语法- chdir EXPRchdir返回值 如果失败,此函数返回0,如果成功,则返回1。 例 以下是显示其基本用法的示例代码,假设您在/user/home/…

java之jmh初识及使用

最近有场景需要数据支撑json的toJsonString方法和java原生的toString方法的运行速度&#xff0c;因此选用了JMH测试工具。 以下代码大致意思是&#xff1a;初始化一个list集合&#xff0c;放入100个对象&#xff0c;然后遍历这个集合&#xff0c;调用fastjson的toJsonString方…

助力618-Y的混沌实践之路 | 京东云技术团队

一、写在前面 1、混沌是什么&#xff1f; 混沌工程&#xff08;Chaos Engineering&#xff09;的概念由 Netflix 在 2010 年提出&#xff0c;通过主动向系统中引入异常状态&#xff0c;并根据系统在各种压力下的行为表现确定优化策略&#xff0c;是保障系统稳定性的新型手段。…

CS 144 Lab Six -- building an IP router

CS 144 Lab Six -- building an IP router 引言路由器的实现测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Six 对应的PDF: Lab Checkpoint 5: building an IP router 引言 在本实验中&#xff0c;你将在现有的NetworkInterface基础上实现一个IP路由器&#xf…

Linux知识点 -- 进程间通信(二)

Linux知识点 – 进程间通信&#xff08;二&#xff09; 文章目录 Linux知识点 -- 进程间通信&#xff08;二&#xff09;一、System V共享内存1.原理2.申请共享内存3.System V共享内存的使用4.为共享内存添加访问控制 二、信号量&#xff08;概念理解&#xff09;1.概念2.信号量…

OpenCV之信用卡识别实战

文章目录 代码视频讲解模板匹配文件主程序(ocr_template_match.py)myutils.py 代码 链接: https://pan.baidu.com/s/1KjdiqkyYGfHk97wwgF-j3g?pwdhhkf 提取码: hhkf 视频讲解 链接: https://pan.baidu.com/s/1PZ6w5NcSOuKusBTNa3Ng2g?pwd79wr 提取码: 79wr 模板匹配文件 …

Ubuntu开机自启服务systemd.service配置教程(Ubuntu服务)(Linux服务)upstart

文章目录 为什么要将程序配置成服务&#xff1f;1. 自动启动2. 后台运行3. 定时重启4. 简化管理5. 整合系统 版本支持1. Ubuntu 14.04及更早版本&#xff1a;使用upstart作为默认的init系统/etc/rc.local旧版本新版本 2. Ubuntu 15.04到16.04版本&#xff1a;默认使用systemd作…

【敏捷开发】测试驱动开发(TDD)

测试驱动开发&#xff08;Test-Driven Development&#xff0c;简称TDD&#xff09;是敏捷开发模式中的一项核心实践和技术&#xff0c;也是一种设计方法论。TDD有别于以往的“先编码&#xff0c;后测试”的开发模式&#xff0c;要求在设计与编码之前&#xff0c;先编写测试脚本…

1310. 数三角形

题目链接&#xff1a;https://www.acwing.com/problem/content/1312/ 首先不考虑三点共线的情况一共有 种&#xff0c;现在来计算三点共线的情况 1.三点在一条直线上 2.三点在一条竖线上 3.三点在一条斜线上&#xff0c;正反斜线对称&#xff0c;仅需考虑一边的情况 如果…