18-结构体(初识)

18-1 概念

我们现在已经知道的数据类型:

char short int long float double

但是当我们需要描述一个复杂对象时,这些数据类型单独拿出来不能满足,如:

人:名字+年龄+性别+地址+电话

书:书名+作者+出版社+定价+书号

所以,C语言就给了自定义类型的能力,自定义类型中有一种叫:结构体struct

结构体是把一些单一类型组合在一起的做法:

struct Stu  //学生
{
	char name[20];  //名字
	int age;  //年龄
	char sex[10];  //性别
	char tele[12];  //电话号码
};

struct Stu占空间吗?

并不占空间,这里的struct Stu实质上就是个类型,只有:

struct Stu s;

创建该类型的变量的时候才占空间

18-2 结构体的初始化

创建并初始化:

struct Stu
{
	char name[20];
	int age;
	char sex[10];
	char tele[12];
};
int main()
{
	struct Stu s = { "zhangsan",20,"nan","15596668862" };
	return 0;
}

18-3 操作符.和->

在此,我们可以讲一下之前跳过的操作符.和->了 

18-3-1 .

使用前提:有结构体对象

访问结构体对象的成员:结构体对象.成员名:s.name/s.age/ s.sex/ s.tele

struct Stu
{
	char name[20];
	int age;
	char sex[10];
	char tele[12];
};
int main()
{
	struct Stu s = { "zhangsan",20,"nan","15596668862" };
	printf("%s %d %s %s\n", s.name, s.age, s.sex, s.tele);
	return 0;
}

运行结果:

当然,只要打印的类型与结构体对象的成员对应,顺序可以改变

18-3-2 ->

使用前提:有地址/指针

结构体指针变量->成员名:ps->name/ps->age/ps->sex/ ps->tele

struct Stu
{
	char name[20];
	int age;
	char sex[10];
	char tele[12];
};
void print(struct Stu* ps)
{
	printf("%s %d %d %s\n", (*ps).name, (*ps).age, (*ps).sex, (*ps).tele);
	printf("%s %d %d %s\n", ps->name, ps->age, ps->sex, ps->tele);
}
int main()
{
	struct Stu s = { "zhangsan",20,"nan","15596668862" };
	print(&s);
	return 0;
}

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DHCP-SNOOPING-嗅探/窥探

DHCP-SNOOPING 私接设备了,非终端收到了报文 所有接口设置为非信任,然后单独配置其中一个接口为信任

Elasticsearch:从 Java High Level Rest Client 切换到新的 Java API Client

作者:David Pilato 我经常在讨论中看到与 Java API 客户端使用相关的问题。 为此,我在 2019 年启动了一个 GitHub 存储库,以提供一些实际有效的代码示例并回答社区提出的问题。 从那时起,高级 Rest 客户端 (High Level Rest Clie…

滑块验证码

1.这里针对滑块验证给了一个封装的组件verifition,使用直接可以调用 2.组件目录 3.每个文件的内容 3.1 Api文件中只有一个index.js文件,用来存放获取滑块和校验滑块结果的api import request from /router/axios//获取验证图片 export function reqGe…

从0开始回顾MySQL---事务四大特性

事务概述 事务是一个最小的工作单元。在数据库当中,事务表示一件完整的事儿。一个业务的完成可能需要多条DML语句共同配合才能完成,例如转账业务,需要执行两条DML语句,先更新张三账户的余额,再更新李四账户的余额&…

一文带你了解神经网络是如何学习预测的

文章目录 1、GPT与神经网络的关系 2、什么是神经网络 3、神经网络是如何计算的 数据是如何输入到神经网络中的 神经网络是如何进行预测的 神经网络是如何进行学习的 4、小结 1、GPT与神经网络的关系 GPT想必大家已经耳熟能详,当我们与它进行对话时,通常…

人民艺术家、中国书画院院士王家才

人民艺术家王家才 在中国画坛的广袤土地上,一位名叫王家才的艺术家以其深厚的艺术造诣和独特的艺术风格,赢得了“人民艺术家”的殊荣。她的作品不仅在国内受到广泛赞誉,还多次走出国门,成为中外文化交流的桥梁。 王家才女士是一…

springboot项目自定义切面增强方法功能(springboot记录日志)

说明 背景:记录系统接口日志入库,包含接口方法、入参、回参、响应时间、操作人、操作时间等信息。 方案:添加自定义切面处理 一、自定义切面注解 package com.gstanzer.supervise.annotation;import com.gstanzer.supervise.enums.Busine…

C语言中,可以在子函数中动态申请一个指向二维数组的内存给调用函数使用么——看ChatGPT的回答——

下面是ChatGPT的回答&#xff0c;太专业了&#xff0c;比网上查的资料都好很多可能。 是的&#xff0c;可以在子函数中动态申请一个指向二维数组的内存&#xff0c;然后将其传递给调用函数使用。在C语言中&#xff0c;可以通过以下方式实现&#xff1a; #include <stdio.h…

7、Design Script之自定义函数

关联式编程 VS. 命令式编程 关联式编程使用图依赖的概念来建立“流控制”。Associative是代码块内的默认模式。 命令式编程的特点是使用“For”和“While”循环进行显式流控制(用于迭代)和if/elseif/else语句(用于条件语句),要初始化命令式代码,你可以使用以下语法: [Impe…

【LeetCode: 2684. 矩阵中移动的最大次数 + dfs】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Webapi(.net6) 批量服务注册

如果不考虑第三方库&#xff0c;如Autofac这种进行服务注入&#xff0c;通过本身的.Core Weabpi实现的&#xff0c;总结了两种实现方法&#xff0c; 1.一种是参考abp框架里面的形式; 1.1 新建个生命周期的文件夹: 三个接口分别为: public interface IScopedDependency { }pu…

vs实用调试技巧

前言&#xff1a; 我们在写程序的时候可能多多少少都会出现一些bug&#xff0c;使我们的程序不能正常运行&#xff0c;所以为了更快更好的找到并修复bug&#xff0c;使这些问题迎刃而解&#xff0c;学习好如何调试代码是每个学习编程的人所必备的技能。 1. 什么是bug&#xf…

html canvas怎么在图片上面加文字

在HTML canvas中&#xff0c;要让文字显示在图片上方&#xff0c;你需要按照以下步骤操作&#xff1a; 首先&#xff0c;使用drawImage()方法将图片绘制到canvas上。 然后&#xff0c;使用fillText()或strokeText()方法在canvas上绘制文本。 以下是一个简单的示例代码&#…

C#Socket通信实现

1.编写服务端代码&#xff0c;以原石兑换码为例&#xff08;分别建立两个控制台应用&#xff0c;一个用于服务端&#xff0c;一个用于客户端&#xff09; using System.Net.Sockets; using System.Net; using System.Text;namespace 网络游戏服务器 {internal class Program{s…

【Eviews实战】——重庆市居民消费城乡差异研究

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

Python内存管理与垃圾回收机制:深入理解与优化【第138篇—RESTful API】

Python内存管理与垃圾回收机制&#xff1a;深入理解与优化 在Python编程中&#xff0c;内存管理与垃圾回收机制是至关重要的主题。了解Python如何管理内存和处理垃圾回收对于编写高效、稳定的程序至关重要。本文将深入探讨Python中的内存管理和垃圾回收机制&#xff0c;包括内…

【ARM】UBL本地服务器离线激活license

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 UBL本地服务器离线激活license。 2、 问题场景 解决有用户外出时激活 license。 3、软硬件环境 1&#xff09;、软件版本&#xff1a;MDK5.39 2&#xff09;、电脑环境&#xff1a;Ubuntu 20.04 LTS 3&…

【Eviews实战】——时序的平稳性检验

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

Microsoft OneDrive的10个常见问题及其解决方法,总有一种适合你

前言 Microsoft OneDrive是一个有用的工具,用于在线和跨多个设备备份和同步文件。然而,问题和冲突确实会发生。可能OneDrive突然停止工作,文件无法同步,项目被意外删除,或者同一文件的两个版本出现。然而,在你转到其他云存储服务之前,下面是如何解决这些(和其他)常见…

基于openresty构建运维工具链实践

本文字数&#xff1a;4591字 预计阅读时间&#xff1a;25 01 导读 如今OpenResty已广泛被各个互联网公司在实际生产环境中应用&#xff0c;在保留Nginx高并发、高稳定等特性基础上&#xff0c;通过嵌入Lua来提升在负载均衡层的开发效率并保证其高性能。本文主要介绍接口鉴权、流…