结构体类型

C++中类和结构体的区别

假装没事ソ 提交于 2020-02-23 23:00:38
结构体和类的唯一区别就是: 结构体和类具有不同的默认访问控制属性 即:类中,对于未指定访问控制属性的成员,其访问控制属性为私有类型(private) 结构体中,对于未指定任何访问控制属性的成员,其访问控制属性为公有类型(public)    【注】C中的结构体完全不同于C++中的结构体:在C中的结构体只能自定义数据类型,结构体中不允许有函 数,而C++中的结构体可以加入成员函数、访问控制权限、继承、包含多态等面向对象特性。 解释: C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象 的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。在C++中,不使用结构体丝毫不会影响 程序的表达能力。C++之所以要引入结构体,是为了保持和C程序的兼容性。但有时仍会在C++中使用结构 体,是因为,可以使用结构体将不同类型数据组成整体,方便于保存数据。 C++在struct之外引入了class关键字(类),但为了保持与C程序的兼容,C++保留了struct关键字,并规定结 构体默认访问控制权限为公有类型。 来源: CSDN 作者: 学无止境~zZ 链接: https://blog.csdn.net/weixin_44480968/article/details/104464321

[C++语法] 关键字typedef用法(转)

孤街醉人 提交于 2020-02-21 23:56:48
[C++语法] 关键字typedef用法(转) C/C++ 语言中的 typedef 相信大家已经不陌生,本文对 C/C++ 语言关键字 typedef 的各种用法作一个介绍。 typedef ,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。例如: typedef unsigned int UINT; int main ( int argc, char *argv[]) { unsigned int a;// it’s OK UINT b;// it’s OK, a and b are of the same type (int) // . . .// code references the symbol a and b return 0; } 上面的代码中, a 和 b 属于同一种数据类型( unsigned int 型),因为 UINT 标识符已经标示为 unsigned int 类型。上面的代码看似简单,相信很多读者都用过这种方法,但这绝不是 typedef 的全部,下面介绍使用 typedef 定义复杂数据类型的几种用法。 1 、 定义结构体类型 结构体是一种较为常见的数据类型,在 C/C++ 程序设计中使用的非常广泛。下面的代码就是结构体类型的一个应用: #include <iostream.h>

C#中的枚举与结构体

試著忘記壹切 提交于 2020-02-18 03:05:49
枚举类型 什么是枚举? 1.枚举类型是⼀个⾃定义类型。 定义方式:enum 枚举名 { 枚举值1,枚举值2… } 2.枚举类型是⼀个值类型枚举值还可标记一个整型数字予以匹配,默认从0开始计数 3.枚举类型的创建 //装备类型 enum EquipType { Helmet = 100 , //头盔 BodyArmor = 200 , //防弹⾐ Knapsack , //背包 Knife } 枚举类型变量的定义与使⽤ //定义⼀个枚举类型的变量 EquipType myEquip = EquipType . Knapsack ; EquipType yourEquip = EquipType . Knapsack ; //判断枚举变量 if ( myEquip == EquipType . BodyArmor ) { } switch ( myEquip ) { case EquipType . BodyArmor : break ; case EquipType . Helmet : break ; case EquipType . Knife : break ; //case EquipType. default : break ; } //枚举类型和整型之间的转换 //枚举类型可以强制转换为整型 int num = ( int ) myEquip ; Console .

golang学习系列——22. 结构体(struct)

痞子三分冷 提交于 2020-02-16 03:23:22
目录 1. 说明 2. 结构体 2.1 定义 2.2 创建 2.3 初始化 2.4 使用 2.5 结构体转换 3. 结构体进阶 3.1 带标签的结构体 3.2 匿名字段和内嵌结构体 3.3 工厂模式 1. 说明 Go 通过类型别名和结构体的形式支持用户自定义类型,或者叫定制类型。 Go 语言可以为自定义类型定义方法, 来完成类似其他语言类的定义. 2. 结构体 2.1 定义 type identifier struct { field1 type1 field2 type2 ... } 结构体成员一般都有名字,如果字段在代码中从来也不会被用到,那么可以命名它为 _。 结构体成员类型可以是任意类型, 可以是结构体/函数或者接口. 注意:当成员类型是结构体自身的时候(如:链表/树), 必须使用指针类型. 类型 struct1 在定义它的包 pack1 中必须是唯一的,它的完全类型名是:pack1.struct1。 2.2 创建 使用 new 函数, 会给结构体变量分配内存, 并返回该类型的指针 var t *T t = new(T) //t := new(T) // 等价于 t = &T{} 直接声明变量, 也会分配内存, 并初始化为零值 var t T 2.3 初始化 type struct1 struct { age int high float name string } ms

13.结构体

こ雲淡風輕ζ 提交于 2020-02-15 00:56:35
1.结构体 a.struct是关键字; b.struct Student合起来才是结构体“类型”; c.结构体内部定义的变量不能直接赋值; d.结构体只是一个类型,没有定义变量前,是没有分配空间,就不能赋值。 2.使用: (1).定义结构体变量; (2).类型名 变量名: struct Student stu; //struct关键字 //结构体变量初始化,和数组一样,要使用大括号 //在定义时才初始化 struct Student stu2 = {18,"hello",59}; (3).如果是普通变量,使用“.”运算符; (4).结构体指针变量使用:-> struct Student *p; p = &tmp; //给结构体变量一个空间 p -> age = 18;p->name = (char *)malloc((strlen("mike")+1); //给成员分配空间,如果name是结构体成员是数组,和数组操作类似 strcopy(p->name,"mike"); p->score = 59; //指针要有合法指向,才能操作结构体成员 //任何结构体变量都可以用“.”或“->” (&temp)->age = 18; (*p).age = 18; //合法 3.结构体变量定义: 4.迭名结构体 5.结构体数组 6.结构体嵌套 struct Info { int age;

C语言结构体和共用体_07

陌路散爱 提交于 2020-02-14 17:45:21
概述 定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表 共用体 枚举类型 用 typedef定义类型 概述 定义一个结构体的一般形式: struct 结构名 { 成员列表 }; 一个结构体有一个结构名,但不是必须的。成员列表有若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为: 类型说明符 成员名; 例如: // 学号、姓名、性别、年龄、地址等属性 struct Student { int num; char name[20]; char sex; int age; char addr[30]; }; 定义结构体类型变量的方法 在定义了结构体变量后,系统会位置分配内存单元。 可以采用三种方法定义结构体类型变量: 1)先声明结构体类型再定义变量名; struct Student person1; struct Student person2; 则,person1、person2 具有struct Student类型的结构。 2)在声明类型的同时定义变量 struct Student { int num; char name[20]; char sex; int age; char addr[30]; } student1, student2; 3)直接定义结构体类型变量

利用结构体观察浮点数

被刻印的时光 ゝ 提交于 2020-02-14 11:14:11
利用结构体定义位域,可以观察浮点数内部是如何存储的,看代码: #include<cstdio> using namespace std; struct fp{ unsigned fraction:23; unsigned exponent:8; unsigned sign:1; }; int main(){ float a=0.1; fp *p=(fp*)&a; printf("%d\n",p->sign); printf("%d\n",p->exponent-127); printf("%d\n",p->fraction); return 0; } 位域在本质上就是一种结构类型, 不过其成员是按二进位分配的。关于位域的几点说明: 1、位域以二进制位来存储数据,可以在冒号左边是位域名,冒号右边是位域的长度。 2、位域按定义顺序存储,记住是从存储变量的个位,也就是最右边开始的。 3、一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。 4、来确定结构体类型的成员变量的值所占的字位数,如果在实际应用中,该变量的值超出了在声明它时所声明的字位数,那么溢出的部分将会丢失。 struct bs { unsigned a:4 unsigned :0 /*空域*/ unsigned b:4 /

Go语言结构体转json的坑

一笑奈何 提交于 2020-02-12 15:39:24
Go语言结构体转json的坑 标签(空格分隔): go json.Marshal() JSON输出的时候必须注意,只有导出的字段(首字母是大写)才会被输出,如果修改字段名,那么就会发现什么都不会输出,所以必须通过struct tag定义来实现。 针对JSON的输出,我们在定义struct tag的时候需要注意的几点是: - 字段的tag是"-",那么这个字段不会输出到JSON - tag中带有自定义名称,那么这个自定义名称会出现在JSON的字段名中 - tag中如果带有"omitempty"选项,那么如果该字段值为空,就不会输出到JSON串中 - 如果字段类型是bool, string, int, int64等,而tag中带有",string"选项,那么这个字段在输出到JSON的时候会把该字段对应的值转换成JSON字符串 代码示例 package main import ( "encoding/json" "fmt" ) func main() { type UserInfo struct { Id int Name string Address string } type Comiket struct { id int title string } type Test struct { Id int `json:"-"` Content string `json:"content

黑马程序员-关于结构体

女生的网名这么多〃 提交于 2020-02-11 10:24:27
------- IOS培训、android培训 、java培训 、期待与您交流! ---------- 1 结构体: 作用:可以由多个不同类型的数据构成。 //定义结构体类型,类型为person: ( 此阶段不会分配存储空间 1 struct person 2 { 3 变量; // 称为结构体变量或属性 4 } 5 //根据结构体类型person,定义结构体变量,变量名为p(此阶段分配存储空间) 6 struct person p={ }; // 赋值的时候只能在定义结构体的时候同时赋值 错误写法 struct person p; p={ }; 2. 内存分析: 对齐算法:结构体所占用内存空间的大小, 一定是结构体中最大成员所占用存储空间的倍数。 1 struct Student 2 { 3 int age; // 4个字节 4 char *name; // 8个字节 5 }stu; 结构体所占用的字节:16个字节(8的倍数); 内存分配:定义结构体类型时不会分配内存空间,只有当赋值的时候才能分配存储空间。 3.结构体类型不能够重复定义 定义结构体变量的三种方式:(从类型和变量进行考虑) (1)先定义类型(相当于int、double等),再定义变量 1 struct student 2 { 3 int age; 4 }; 5 struct student stu; (2)

黑马程序员-----结构体数组

别等时光非礼了梦想. 提交于 2020-02-11 07:15:00
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! ----- 第一讲 结构体数组 一、结构体数组的概念 数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下表结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。如一个班的学生档案,一个车间职工的工资表等。 二、结构数组定义 定义格式: struct 结构名{ 成员表列 }数组名[数组长度]; 例如:定义一个长度为5的数组,其中每一个元素都是stu结构类型。 struct stu{ int num; char *name; char sex; float score; }boy[5]; 定义了一个结构数组boy,共有5个元素,boy[0]~boy[4].每个数组元素都具有struct stu的结构形式。 1 /* 2 结构体数组: 3 4 用来存放大量的结构体相同的结构体变量。 5 6 结构体数组定义: 7 8 结构体数组定义的第一种方式: 9 1.定义结构体的同时,定义数组 10 struct Student{ 11 int age; 12 char *name; 13 int sno; 14 float score; 15