09 自定义类型和结构体

C++知识点总结(16):结构体排序 第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的志愿者人数。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。从第二行开始,每行包含两个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。 阅读详情

一、类型type

type myint1 int   //自定义类型
type myint2 = int //类型别名

func main() {
	var m myint1
	m = 100
	fmt.Printf("%T\n", m) //main.myint1

	var n myint2
	n = 200
	fmt.Printf("%T\n", n) //int
}

二、结构体

1.定义

//方法1:常规定义
type person struct {
	name string
	age  int
	sex  string
}

//方法2:匿名字段定义
type animal struct {
	//每种类型只能出现一次,尽量避免使用这种方法
	string
	int
}

2.结构体初始化

type person struct {
	name string
	age  int
	sex  string
}

func main() {
	//方法1:常规初始化
	var v person
	v.name = "zhangsan"
	v.age = 20
	v.sex = "男"

	fmt.Println(v) //{zhangsan 20 男}

	//方法2:key-value初始化使用方法
	var v2 = person{
		name: "lisi",
		age:  20,
		sex:  "男",
	}

	fmt.Println(v2) //{lisi 20 男}

	//方法3:值列表初始化,值的顺序要和类型的字段定义顺序一样
	var v3 = person{
		"wangwu",
		25,
		"女",
	}

	fmt.Println(v3) //{wangwu 25 女}
}

3.匿名结构体

var v struct {
	name string
	age  int
	sex  string
}
v.name = "zhangsan"
v.age = 20
v.sex = "男"

fmt.Println(v) //{zhangsan 20 男}

4.结构体指针

type person struct {
	name string
	age  int
	sex  string
}

func main() {
	//定义方法1
	var p = new(person)

	p.name = "zhangsan"
	p.age = 20
	p.sex = "男"

	fmt.Println(p)        //&{zhangsan 20 男}
	fmt.Printf("%T\n", p) //*main.person

	//定义方法2
	var p1 = &person{
		name: "lisi",
		age:  20,
		sex:  "男",
	}

	fmt.Println(p1) //&{lisi 20 男}

	//定义方法3
	var p2 = &person{
		"wangwu",
		25,
		"女",
	}

	fmt.Println(p2) //&{wangwu 25 女}
}

5.接收者:给自定义类型定义方法

注意:接收者方法首字母大写表示方法是公共的,表示外部包可以访问

type person struct {
	name string
	age  int
	sex  string
}

//值接收者,传递结构体变量副本
func (p person) changeName1(name string) {
	p.name = name
}

//指针接收者,传递结构体变量指针
func (p *person) changeName2(name string) {
	p.name = name
}

func main() {
	var p1 = person{
		name: "lisi",
		age:  20,
		sex:  "男",
	}

	//值接收者
	p1.changeName1("zhangsan")
	fmt.Printf("我的名字叫:%s\n", p1.name) //我的名字叫:lisi

	//指针接收者
	p1.changeName2("zhangsan")
	fmt.Printf("我的名字叫:%s\n", p1.name) //我的名字叫:zhangsan
}

6.结构体嵌套

  • 常规嵌套
type animal struct {
	name string
	age  int
}

type dog struct {
	height string
	anl    animal
}

func main() {
	//方法1:
	var v dog
	v.anl.name = "beibei"
	v.anl.age = 20
	v.height = "80cm"

	fmt.Println(v) //{80cm {beibei 20}}

	//方法2:
	var v2 = dog{
		height: "90cm",
		anl: animal{
			"xiaopei",
			15,
		},
	}

	fmt.Println(v2) //{90cm {xiaopei 15}}
}
  • 匿名嵌套
type animal struct {
	name string
	age  int
}

type dog struct {
	height string
	animal
}

func main() {
	//方法1:
	var v dog
	v.name = "beibei"
	v.age = 20
	v.height = "80cm"

	fmt.Println(v) //{80cm {beibei 20}}

	//方法2:
	var v2 = dog{
		height: "90cm",
		animal: animal{
			"xiaopei",
			15,
		},
	}

	fmt.Println(v2) //{90cm {xiaopei 15}}
}
安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案 本文主要介绍了安装openclaw时出现node.exe : npm error code EIDLETIMEOUT的解决方案,希望能对学习使用openclaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案 阅读详情

相关推荐

Obsidian与GPT协作:数学公式从KaTeX到MathJax的无缝转换实践

本文针对Obsidian用户从GPT等AI助手复制数学公式时遇到的KaTeX与MathJax格式不兼容问题,提供了高效的解决方案。重点介绍了KaTeX to MathJax插件的核心作用,它能自动将AI生成的KaTeX格式公式(如\(...\))无缝转换为Obsidian默认支持的MathJax格式($...$),实现复制粘贴后公式即时渲染,极大提升了数学笔记与AI协作的效率和流畅度。

weixin_29209825的博客 136

自定义类型(结构体、位段、枚举、联合)

本文章主要介绍自定义数据类型:结构体、联合体、枚举、位段。

谢广涛的博客 2268

Sourcetree与Gitee的完美协作:从身份验证到推送成功的全流程指南

本文提供了一份详细的Sourcetree与Gitee协作全流程指南,重点解决身份验证失败、Git版本配置及远端仓库设置等常见问题。通过分步讲解,帮助用户掌握从克隆、提交到成功推送的完整操作,并整合了使用个人访问令牌进行身份验证等关键热词信息,确保Windows与MacOS用户都能顺畅完成代码管理。

m2n3b4v5c6的博客 708

《零基础看得懂的C语言入门教程 》——(十二)原来结构体是这么回事

一、学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 二、了解结构体的使用方法 C语言没有一些其它高级语言中的面向对象概念,如果你是新手的话知道这个专业术语即可,在之后的不断深入学习中早晚会遇见;为什么我把C语言的结构体与面向对象做一个比较?因为他们之间有一定的相似度,这是一个很重要的概念。 2.1 什么是C语言结构体 在学习C语言结构体前我们需要知道C语言结构体是什么东西,形式是如何的,它的核心的组成思想是什么。 结构体简单的来说是一个

1_bit 的博客 6088

Spring Authorization Server自定义密码模式:突破标准OAuth2限制,实现MFA与复杂业务集成

OAuth 2.0授权框架是构建现代应用安全体系的基石,其密码模式(Resource Owner Password Credentials Grant)提供了一种直接的资源所有者凭证交换令牌的机制。该模式的核心原理是客户端收集用户密码并直接向授权服务器请求访问令牌,适用于受信任的客户端场景。在技术价值上,它简化了某些传统应用的OAuth集成流程。然而,标准实现往往难以满足复杂的现实业务需求,例如需要集成多因素认证(MFA)、对接外部LDAP目录服务或执行自定义密码加密校验等场景。Spring Authori

weixin_34302561的博客 437

k8s学习笔记(3)--- kubernetes核心技术概念

kubernetes核心技术概念 1.API对象         API对象是K8s集群中的管理操作单元。K8s集群系统每支持一项新功能,引入一项新技术,一定会新引入对应的API对象,支持对该功能的管理操作。例如副本集Replica Set对应的API对象是RS。 2.集群(Cluster)         集群是指由...

梦谜的博客 1291

09--结构体

C语言提供了众多的基本类型,但现实生活中的对象一般都不是单纯的整型、浮点型或字符串,而是这些基本类型的综合体。比如一个学生,典型地应该拥有学号(整型)、姓名(字符串)、分数(浮点型)、性别(枚举)等不同侧面的属性,这些所有的属性都不应该被拆分开来,而是应该组成一个整体,代表一个完整的学生。在C语言中,可以使用结构体来将多种不同的数据类型组装起来,形成某种现实意义的自定义的变量类型。结构体本质上是一种自定义类型。结构体的声明:声明语句不是在生产某一个产品,只是向系统报备某一个类型的模型。

weixin_44834310的博客 2249

低功耗设计:rush current

在power gating的设计中引入了一个rush current的概念,它的产生原因是switch cell上电过程相当于电容充电过程,会产生一个短期的大电流,称之为rush current。 1.rush current的危害 1)造成巨大的ir drop 2)导致功能错误 3)一些极端例子中,rush current会引发VDD短期崩溃,造成存储在retention register与mem中的数据失效 4)大电流会还对周围always on模块造成干扰,产生大的压降 2.控制rus

m0_61544122的博客 3071

自定义类型:结构体

详细介绍结构体的声明、定义,如何计算结构体大小,内存对齐规则,结构体实现位段的功能等

sparrowfart的博客 1447

海康威视嵌入式最全面试题及参考答案(3万字长文)

主营业务:提供包括前端摄像头、后端存储设备、显示控制设备等在内的全方位视频监控解决方案。市场地位:在全球范围内享有较高的市场份额,在安防领域具有较强的竞争力。技术创新:持续投入研发,拥有多项核心技术和专利,特别是在视频处理算法、人工智能等方面取得了显著成果。社会责任:积极参与公共安全项目,为智慧城市、交通管理等领域提供技术支持和服务。国际业务:除了国内市场外,海康威视的产品和服务也销往全球多个国家和地区。面向对象编程。

大模型大数据攻城狮的专栏 1764

基于 FastAPI + LangGraph + LLM 大语言模型的通用 Agent 多智能体系统架构设计与开发实战、产业应用

FastAPI是一个现代、快速(高性能)的Python Web框架,专门用于构建API。它由Sebastián Ramírez(@tiangolo)创建,基于Starlette(用于Web部分)和Pydantic(用于数据部分)构建。性能优先:FastAPI是当前最快的Python Web框架之一,性能与NodeJS和Go相当。这得益于其基于Starlette的异步架构,能够充分利用Python 3.6+的async/await特性。开发效率。

AI天才研究院 230

09C++结构体

cout<<"姓名:"<<s1.name<<" "<<"年龄:"<<s1.age<<" " <<"分数:"<<s1.score<<endl;cout<<"姓名:"<<s2.name<<" "<<"年龄:"<<s2.age<<" " <<"分数:"<<s2.score<<endl;cout<<"姓名:"<<s3.name<<" "<<"年龄:"<<s3.age<<" " <<"分数:"<<s3.score<<endl;<<"分数: "<<stuarray[i].score<<endl;

2402_86622585的博客 1803

Openai gym environment for multi-agent games

用于多智能体游戏的 OpenAI Gym 环境

suiusoar 1193

【C++基础】09、结构体

在 C++ 中,struct 语句用于定义结构体(structure)。结构体是一种用户自定义的数据类型,用于将不同类型的数据组合在一起。与类(class)类似,结构体允许你定义成员变量和成员函数。为了定义结构,必须使用struct语句。type_name是结构体类型的名称,是标准的变量定义,比如int i;或者float f;或者其他有效的变量定义。在结构定义的末尾,最后一个分号之前,可以指定一个或多个结构变量,这是可选的。下面是声明一个结构体类型Books,变量为book} book。

qq_45591302的博客 1425

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

day09 结构体等复合类型(自定义类型)

文章目录一、结构体1.概述2. 结构体变量的定义和初始化2.1定义结构体变量的方式:2.2 结构体类型和结构体变量关系2.3 结构体成员的使用2.4 结构体的大小和内存结构2.4.1 测试代码2.4.2 分析测试结果 一、结构体 1.概述   我们知道数组用来描述一组具有相同类型数据的有序集合,用于处理大量相同类型的数据运算。   有时我们需要将不同类型的数据组合成一个有机的整体,来满足需求,因为普通的数据类型无法满足需求。比如说需要打印一个学生的具体信息,一个学生有学号/姓名/性别/年龄/地址等属性。显然

qq_43403759的博客 1409

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

11 09 结构体和指针

11 09 结构体和指针 01 结构体作为实参 值传递 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> struct students { char name[21]; int age; }; void fun(struct students stu) { strcpy(stu.name, "刘敬宣"); stu.age =

weixin_39538253的博客 130

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

c语言中的自定义类型(结构体)

结构是⼀些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。结构的成员可以是标量、数组、指针,甚至是其他结构体。

m0_74859128的博客 1325

09-结构体指针和预处理指令

// 定义结构体类型 typedef struct {     int num;        // 学号     char name[20];  // 姓名     char gender;    // 性别     float score;    // 分数 } Student; // 打印结构体指针数组函数

mag1c1an的黑魔法书 571

09.结构体

结构体变量的定义和初始化 定义结构体变量的方式:  先声明结构体类型再定义变量名  在声明类型的同时定义变量  直接定义结构体类型变量(无类型名) #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h> ...

augfun的博客 225

09FMPEG的AVFrame结构体分析

FMPEG的AVFrame结构体分析 概述: 该结构体位于libavutil库中的frame.h中。 1 AVFrame结构体 typedef struct AVFrame { #define AV_NUM_DATA_POINTERS 8 /** * pointer to the picture/channel planes. * This might be different from the first allocated byte * * Some de

weixin_44517656的博客 658

【Go语言-Day 19】深入理解Go自定义类型:Type、Struct、嵌套与构造函数实战

文章将从 `type` 关键字的基础用法(类型别名与新类型定义)切入,逐步引导读者掌握 `struct` 的定义、多种实例化方法、字段访问、以及匿名结构体和嵌套等高级技巧。最后,我们将讨论构造函数(工厂函数)这一重要的编程模式,帮助你编写出更健壮、更具可维护性的 Go 代码。无论你是 Go 新手还是希望巩固基础的开发者,本文都将为你提供清晰的指引和丰富的实战代码。

吴师兄大模型的博客 1067

Go 1.19.4 结构体-Day 09

本章主要介绍结构体、结构体定义、可见性、查询修改、成员方法、结构体指针、匿名结构体、构造函数、父子关系、指针类型receiver、深浅拷贝。

qq_42515722的博客 1259

chap09:结构体、枚举与共用体

本章简单介绍了结构体、枚举和共用体三种自定义类型的定义与使用。

ahBingo的博客 930

CPP入门09:结构体

语法:struct 结构体{结构体成员列表};使用:使用结构体创建变量的方式有三种struct 结构体名 变量名struct 结构体名 变量名 = { 成员1值 ,成员2值... ... }创建结构体时顺便创建变量//创建一个名为student的结构体int age;int score;//结构体变量创建方式一//struct 可以省略:student stu1;stu1.name = "张三";

Heisenburg_JauZ的博客 1221

09:Rust中结构体

Rust中结构体

SQZXR的博客 644

二次学习C语言09——结构体

What(是什么):结构体(Struct,Structure 的缩写) 是一种用户自定义的数据类型,用于将多个不同类型的数据元素组合在一起,形成一个有机的整体。Why(为什么):结构体是为了把相关的不同类型数据打包成一个整体,解决数据零散、混乱的问题,让代码更清晰、易维护,也更贴近现实事物的描述方式。Way(怎么用):见下文。在声明结构体类型时直接定义变量int id;int score;}STU;//STU为结构体变量structint id;int score;}STU;

有些怕虫子,但不怕bugs 399
上一篇: 08 函数和defer
下一篇: 10 接口(interface)
拼搏的菜鸟
博客等级 码龄10年 9粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拼搏的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值