结构体类型

c博客06-2019-结构体&文件

拟墨画扇 提交于 2019-12-15 22:50:07
1.本章学习总结 1.1 学习内容总结 1.结构的定义 结构类型定义的一般形式为: struct 结构名{ 类型名 结构成员1; 类型名 结构成员2; ······ 类型名 结构成员n; }; 例如: ``` struct USER { char account[100]; char password[200]; }; ``` 2.结构的嵌套定义 先定义成员的结构类型,再定义主结构类型。 例如: ``` struct address{ char city[10]; char street[20]; }; struct nest_student{ int num; char name[10]; struct address addr; }; ``` 3.结构变量的定义和初始化 (1)单独定义 先定义一个结构类型,再定义这种结构类型的变量。 (2)混合定义 在定义结构类型的同时定义结构变量。 一般形式为: struct 结构名{ 类型名 结构成员1; 类型名 结构成员2; ······ 类型名 结构成员n; }结构变量名表; 例如: ``` struct student { int num; char name[10]; int computer,english,math; }s1,s2; ``` (3)无类型名定义 在定义结构变量的同时省略结构名。 一般形式为: struct {

c博客06-结构体&文件

*爱你&永不变心* 提交于 2019-12-15 22:35:15
1.本章学习内容总结 1.1学习内容总结 1.结构体如何定义及成员如何赋值 先定义结构体再定义变量 struct 结构体名 { 数据类型   成员名1; 数据类型   成员名2; : 数据类型   成员名n; }; struct 结构体名 变量名; 在定义结构体同时定义变量 struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; .... }变量名; 成员的赋值 假如变量名是s,直接赋值:s.成员名=内容、当s是数组名是,利用strcpy赋值,赋值时注意是否需要加& 2.结构体数组排序做法 3.结构体指针怎么用 定义结构体指针:struct 结构体名 p; 利用( p)成员名或p->成员名访问结构体成员 # include <stdio.h> struct STU { char name[20]; int age; char sex; char num[20]; }; int main(void) { struct STU stu[5] = {{"小红", 22, 'F', "Z1207031"}, {"小明", 21, 'M', "Z1207035"}, {"小七", 23, 'F', "Z1207022"}}; struct STU *p = stu; return 0; } 此时指针变量 p 就指向了结构体数组的第一个元素,即指向 stu[0]

c博客06-2019-结构体&文件

让人想犯罪 __ 提交于 2019-12-15 22:30:57
1.本章学习内容总结 1.1 学习内容总结 结构体的定义 struct 结构名 { 类型名 结构成员1; 类型名 结构成员2; ... ... }结构变量名; 结构成员赋值 通过 结构变量名.结构成员名 进行调用并赋值。 结构体数组排序做法 #define N 20 struct my_struct { int i; char chars[100]; float f; } structs[N]; struct my_struct *pointers[N]; int i; for (i = 0; i < ; i++) pointers[i] = &structs[i]; 比较时遇到要交换时,交换数组pointers的里面的指针就行了. 结构体指针怎么用 用指针引用结构体变量成员的方式是: (*指针变量名).成员名 注意,*p 两边的括号不可省略,因为成员运算符“.”的优先级高于指针运算符“*”,所以如果 *p 两边的括号省略的话,那么 *p.num 就等价于 *(p.num) 了。 此外为了使用的方便和直观,用指针引用结构体变量成员的方式: (*指针变量名).成员名 可以直接用: 指针变量名->成员名 来代替,它们是等价的。“->”是“指向结构体成员运算符”,它的优先级同结构体成员运算符“.”一样高。p->num 的含义是:指针变量 p 所指向的结构体变量中的 num 成员。p-

go笔记--json包使用

北城以北 提交于 2019-12-15 21:55:30
目录 Marshal Unmarshal 处理json对象 @ json包实现了json对象的编解码,参见RFC 4627。Json对象和go类型的映射关系主要通过Marshal和Unmarshal函数实现 Marshal func Marshal(v interface{}) ([]byte, error) Marshal函数返回v的json编码。 Marshal函数会递归的处理值。如果一个值实现了Marshaler接口切非nil指针,会调用其MarshalJSON方法来生成json编码。nil指针异常并不是严格必需的,但会模拟与UnmarshalJSON的行为类似的必需的异常。 否则,Marshal函数使用下面的基于类型的默认编码格式: 布尔类型编码为json布尔类型。 浮点数、整数和Number类型的值编码为json数字类型。 字符串编码为json字符串。角括号"<"和">"会转义为"\u003c"和"\u003e"以避免某些浏览器吧json输出错误理解为HTML。基于同样的原因,"&"转义为"\u0026"。 数组和切片类型的值编码为json数组,但[]byte编码为base64编码字符串,nil切片编码为null。 结构体的值编码为json对象。每一个导出字段变成该对象的一个成员,除非: 字段的标签是"-" 字段是空值,而其标签指定了omitempty选项

c博客06-结构体&文件

久未见 提交于 2019-12-15 21:22:04
1.本章学习总结 1.1 学习内容总结 1.1.1结构体大概 ①结构体定义: struct 结构名 { 类型名 结构成员名1 类型名 结构成员名2 ... 类型名 结构成员名n }; ②结构体的定义是一条语句,因此末尾需要有分号。 ③struct是定义结构类型的关键字,在struct之后,自行命名一个结构名,struct与结构名共同组成结构类型名。 1.1.2结构变量的使用 ①结构变量成员的引用:使用结构成员操作符“.”,格式为:结构变量名.结构成员名 ②结构成员赋值:先使用结构成员操作符,再以该成员类型名的形式对其进行赋值,或者在相同结构类型的变量之间可直接赋值。 1.1.3结构体数组 ①对结构数组元素成员的引用是通过使用数组下标与结构成员操作符“.”,格式为:结构数组名 [下标].结构成员名 ②结构数组排序:先确定排序对象,然后通过结构成员操作符引用,之后便可用之前的排序方法进行排序,其中,作为交换的中间变量的类型也应是结构类型。 1.1.4结构指针 ① 结构体指针怎么用 共用体、枚举类型做法 文件读写,文件中数据如何读进结构体数组 1.2 本章学习体会 1.2.1学习感受 1.2.2代码量 代码量大约509行。 2.综合作业--“我爱成语” 2.1.文件介绍 头文件介绍 名称 说明 ID结构体 储存用户的账号和密码 CY结构体 储存成语和意思 void

c博客作业06-结构体&文件

帅比萌擦擦* 提交于 2019-12-15 21:14:06
1.本章学习总结 1.1 学习内容总结 1.结构体如何定义、成员如何赋值 1.结构体的定义 一般形式: struct 结构名{ 类型名 结构名成员1; 类型名 结构名成员2' ··· 类型名 结构名成员n; }; 结构的嵌套定义: /*设置结构体保存学生的学号,姓名,通行地址,以及计算机,英语,数学和平均成绩,其中通行地址包括,居住的城市,街道,门牌号,邮编*/ struct address { char city[10]; char street[20]; int code; int zip; }; struct nest_student{ int num; char name[10]; struct address addr; int computer,english,math; double auerage; }; 注意:在注意嵌套的结构类型时,必须先定义成员的结构类型,在定义主结构类型。 2.结构体成员的赋值 在c语言中,使用结构成员操作符"."来引用结构成员,格式为 结构变量名.结构成员名 。 /*对学生的信息进行赋值*/ struct student{ int num; char name[10]; int computer,english,math; double average; }; struct student s1,s2; /*分别对s1的每个结构体成员赋值;

c博客06-2019-结构体&文件

让人想犯罪 __ 提交于 2019-12-15 21:00:20
1.本章学习总结 1.1 学习内容总结 1.1.1 结构体如何定义、成员如何赋值 1.1.2 结构体数组排序做法 1.1.3 结构体指针怎么用 1.1.4 共用体、枚举类型做法 1.1.5 文件读写,文件中数据如何读进结构体数组 1.2 本章学习体会 1.2.1 学习感受 1.2.2 代码量 2.综合作业--“我爱成语” 2.1 文件介绍 2.1.1 头文件 2.2 函数实现文件介绍 文件1:main.c 文件2:Checkuser.c 文件3:GetIdiom.c 文件4:TimeCount.c 文件5:PlayGame.c 2.2 运行结果 1.登录界面 2.游戏界面 2.3大作业总结 1.碰到问题及解决办法 2.小结 来源: https://www.cnblogs.com/hekikimi/p/12045807.html

结构体和方法使用

喜欢而已 提交于 2019-12-15 12:12:17
package main import "fmt" // 示例1。 // AnimalCategory 代表动物分类学中的基本分类法。 type AnimalCategory struct { kingdom string // 界。 phylum string // 门。 class string // 纲。 order string // 目。 family string // 科。 genus string // 属。 species string // 种。 } //这里绑定,这个String方法不需要任何参数声明,但需要有一个string类型的结果声明。我在调用fmt.Printf函数时,使用占位符%s和category值本身就可以打印出后者的字符串表示形式,而无需显式地调用它的String方法。 func (ac AnimalCategory) String() string { return fmt.Sprintf("%s%s%s%s%s%s%s", ac.kingdom, ac.phylum, ac.class, ac.order, ac.family, ac.genus, ac.species) } // 示例2。 type Animal struct { scientificName string // 学名。 AnimalCategory // 动物基本分类

Go语法的基本使用(三)

半世苍凉 提交于 2019-12-14 01:44:05
  一. 在方法中使用 值 接收器 与 在函数中使用 值 参数   (1)定义用一个外部函数(接收器:接收值)方法中使用值接收器方法 package main import "fmt" // 在方法中使用 值 接收器 与 在函数中使用 值 参数 // 在方法中使用 指针 接收器 与函数再使用 指针 参数 // 结构体 type Person5 struct{ name string age int sex int } // (1)定义用一个外部函数(接收器:接收值)方法中使用值接收器方法 func (a Person5)printName(){ fmt.Println(a.name) fmt.Println(a.age) fmt.Println(a.sex) } func main(){ // 定义一个变量 p:=Person5{name:"tt",age:18,sex:1} // 调用值接收器 p.printName()   (2)方法中使用指针接收器 package main import "fmt" // 函数中使用 指针传值 // (1)定义一个结构体 type Person2 struct { name string age int sex int } // (2)定义一个函数 中功能代码 func (a *Person2)printName(){ // 需要执行的功能

C/C++内存对齐详解

旧时模样 提交于 2019-12-13 15:03:23
1、什么是内存对齐 还是用一个例子带出这个问题,看下面的小程序,理论上,32位系统下,int占4byte,char占一个byte,那么将它们放到一个结构体中应该占4+1=5byte;但是实际上,通过运行程序得到的结果是8 byte,这就是内存对齐所导致的。 //32位系统 #include<stdio.h> struct{ int x; char y; }s; int main() { printf("%d\n",sizeof(s); // 输出8 return 0; } 现代计算机中内存空间都是按照 byte 划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但是实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐。 2、为什么要进行内存对齐 尽管内存是以字节为单位,但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度. 现在考虑4字节存取粒度的处理器取int类型变量(32位系统),该处理器只能从地址为4的倍数的内存开始读取数据。 假如没有内存对齐机制,数据可以任意存放,现在一个int变量存放在从地址1开始的联系四个字节地址中,该处理器去取数据时