结构体、枚举、联合(day14)】的更多相关文章

一.结构体 1, 结构体定义 结构体类型的定义:任意数据类型变量的集合.用于描述一个具体的事物的信息,在C语言中描述一件事物一般都是用结构体 声明结构体类型的格式: struct  结构体名 {成员列表}: 一般形式: //结构体定义一般形式 struct 结构体名 { 成员变量1; //成员变量后面是';' 成员变量2; .... }; //这里最后加';' 不能省略 例: struct Student { char name[30]; int age; double score; }; 说明…
//C++中结构体的不同之处 #include <iostream> #include <string> using namespace std; int main(void) { //自定义结构体类型 struct Student { string name;//姓名 int age;//年龄 void show(void) { cout << "我是" << name << ",今年" <<…
结构体  枚举作类的成员属性: 定义一个学生类 性别 -- 枚举 生日 入学日期  毕业日期  --  结构体 代码示例: 声明文件 Student.h: #import <Foundation/Foundation.h> typedef struct { int year; int month; int day; } Date; typedef enum { kGenderGirl = , kGenderBoy = , kGenderChunGe = } Gender; @interface…
一.结构体 1.什么是结构体 2.结构体语法格式 3.结构体所占内存空间 4.结构体成员赋值 二.联合 1.什么是联合 2.联合语法格式 三.枚举 1.什么是枚举 2.枚举语法格式 一.结构体 1.什么是结构体 • 是一种数据类型 • 由程序员自定义的数据类型 • 结构体内可以包含不同类型的成员 2.结构体语法格式 struct{ 成员; }变量名; typedef struct { int age; char name[20]; }Student2;//别名 3.结构体所占内存空间 • 字符对…
----------------------------------------------------------我是一条划分线---------------------------------------------------------- ————声明结构的形式————*第一种struct point{    int x;    int y;    int z;};struct point p1,p2://定义两个结构变量 *第二种struct {    int x;    int y;…
第十章 结构和联合 这个部分先介绍了.运算符,能够供直接訪问,还介绍了->运算符,它取代结构体指针的间接訪问操作(*struct).xxx 这一章新手理解起来不算太难,没有学过操作系统的话理解位段.对齐等概念会有一些问题. 越发的说明了指针和内存绝对是C的核心. 总结: 结构声明列出了结构包括的成员列表,不同类型的值能够存储在一起. 不同的结构声明即使他们的成员列表同样也被觉得是不同的类型. 声明结构时使用typedef创建一种新类型是一个好方法. typedef struct { int a;…
注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianling; public int fenshu; public string name; public string sex; public int sum; } 以上的语句就是定义一个名称为student的结构体,其中包含int类型的年龄.分数.总和,和string类型的姓名.性别. 二.用法: 在…
类: class Lei  //要和static void Main(string[] args)平级: { public int lei_int;  //public是关键字,代表访问权限,这里是公共的:(private:仅自己可见:protect:对同一个包内,以及子程序可见) public string lei_string; }  //定义类,class类型 List<Lei> lei1 = new List<Lei>();  //泛型集合定义类型: Lei sx = ne…
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fenshu; public string name; public string sex; public int sum; } 以上的语句就是定义一个名称为student的结构体,其中包含int类型的年龄.分数.总和,和string类型的姓名.性别. 二.用法: 在main主函数外面定义了一个名称为st…
http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用2维数组,但是可读性会很差.此时,你可以换用结构,结构中含有属性项x.y,这样更接近我们实际使用的方式. 枚举类型本质上就是一个标签集合,之所以有枚举变量,也是为了可读性.比如一个进程的状态有五种:创建.准备.运行.停止.销毁,如果使用数字来表示状态,我们直接用0~4来表示就行,但这样别的人会无法理…
结构体 struct 类型定义点运算符 . 变量名.成员 成员是数组的时候不能用等于号赋值箭头运算符 -> 指针->成员 作用 存放多个不同类型的有关联的数据 与结构体类似的类型1.联合作用 :存放不同类型的数据 (共同体) 同事只能存储一个数据关键字 :union 和结构体类似联合与结构体的区别: 结构体: 是每个成员有地址分配 即有单独的内存 所以对其中一个元素赋值的时候不会影响其他元素的值 结构体大小时所有成员之和 结构体>=所有成员之和(大于的原因 结构体的对齐) 联合: 是共用…
1.C语言中的结构体 1.1 定义 结构体是由一系列相同或不同类型的变量组成的集合. struct 结构体名{               //struct为关键字,“结构体名”为用户定义的类型标识. 数据类型1 成员名1;          //{ }中是组成该结构体的成员,其中数据类型可以是C语言所允许的任何数据类型. 数据类型2 成员名2; ... 数据类型n 成员名n; }; 1.2 结构体的内存分配(方法一) 结构体在内存中分配一块连续的内存,但结构体内的变量并不一定是连续存放的,这涉…
12_枚举&结构体 枚举 是一种数据类型 适用于某些取值范围有限的数据 语法: [访问权限修饰符] enum 枚举名 { 枚举值 } 枚举名遵循大驼峰命名法 枚举一般情况下是和switch case结合使用的 注意: 1.虽然枚举中的元素的值可以相同,但是强烈不推荐这样使用 2.枚举元素默认的值类型是int型,可以修改为其他的整型 结构体 结构体和类基本一样 相同点: 都包含字段.属性.方法 修饰的访问权限 都是通过关键字new来实例化对象 区别点: 结构体对象是在栈上开辟的空间 类对象在堆上开…
在Clang 3.7之前,Objective-C已经可以使用类似@100.@YES.@10.5f等字面量表示一个NSNumber对象:用类似@"xxx"的字面量表示一个NSString对象:用@[]字面量表示一个NSArray对象:用@{}字面量表示一个NSDictionary对象:用@(expr)字面量根据expr的类型来表示其对应的上述类型的其中之一,此外还包括一个类型——NSValue. 在Clang3.7中引入了__attribute__((objc_boxable))属性,如…
知识点 基本概念 结构体的基本使用 结构体构造器(构造函数/构造方法) 结构体扩充函数(方法), 又称成员方法 结构体是值类型 1. 基本概念 1.1 概念介绍 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合 结构体(struct)指的是一种数据结构 结构体是值类型,在方法中传递时是值传递 Swift中的结构体是一类类型, 可以定义属性和函数(甚至构造函数和析构函数等) 结构体的格式 struct 结构体名称 { 结构体属性和函数 } 2. 结构体的基本使用 2.1…
之前若是有人拿个结构体或者联合体问我这个结构占用了多少字节的内存,我一定觉得这个人有点low, 直到某某公司的一个实习招聘模拟题的出现,让我不得不重新审视这个问题, 该问题大致如下: typedef struct _A{ char a; int b; float c; double d; int *pa; char* pc; short e; }A; #pragma pack(pop) int main(int argc, char *argv[]) { printf("size = %d\n&…
写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法) 3)都能使用扩展(extension)与协议(protocol) 4)类与结构体(枚举)中的全局属性/方法:在类中用class关键字,但在结构体中…
1.全局变量和局部变量 局部变量:     概念:定义函数内部变量     定义格式:变量类型 变量名称;     作用域:从定义那一行開始到所在代码块结束     生命周期:从代码运行到定义的哪一行開始,到其所在的代码的结束为止     特点:同样的代码块中不能够有同名的变量          不同的代码块中能够有同名的变量.内部的变量会覆盖外部定义的变量 全局变量:     概念:定义在函数外部变量     定义:变量类型 变量名称 = 值;     声明:变量类型 变量名称;     特点…
引言 考虑下面的结构体定义: 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4. 现在,我们编写一个简单的程序: 运行后输出: 为什么会这样?这就是字节对齐导致的问题. 本文在参考诸多资料的基础上,详细介绍常见的字节对齐问题.因成文较早,资料来源大多已不可考,敬请谅解. 一,什么是字节对齐 现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量.但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种…
假设(并非完全假设,这里有 demo)你正在编写一个程序包,用于连接 Go 和其它一些提供大量 C 结构体内存的程序.这些结构可能是系统调用的结果,也可能是一个库给你提供的纯粹信息性内容.无论哪种情况,你都希望将这些结构传递给你的程序包的用户,以便他们可以使用这些结构执行操作.在你的包中,你可以直接使用 cgo 提供的 C. 类型.但这有点恼人(这些整型它们没有对应的原生 Go 类型,使得与常规 Go 代码交互需要乱七八糟的强制转换),并且对于其它导入你的包的代码没有帮助.因此,你需要以某种方式…
一个存储区的地址必须是它自身大小的整数倍 (double类型存储区的地址只需要是4的 整数倍) 这个规则叫数据对齐 结构体里面的子存储区通常也需要遵守数据 对齐的规则 数据对齐会造成结构体内部子存储区之间 有空隙 结构体存储区的大小必须是它所包含的基本类型 存储区中占地最大类型存储区大小的整数倍 (如果这个基本类型是double类型则结构体 存储区的大小只需要是4的整数倍) 这个规则叫数据补齐 数据补齐可能在结构体最后增加一些浪费的 字节 枚举有可以用来创建新的类型 枚举类型存储区就是整数类型存…
C++对C语言的结构.联合.枚举 这3种数据类型进行了扩展. 1.C++定义的结构名.联合名.枚举名 都是 类型名,可以直接用于变量的声明或定义.即在C++中定义变量时不必在结构名.联合名.枚举名 前加上前缀struct.union.enum. 例如有如下头文件(head.h) //head.h enum color {red,blak,white,blue,yellow}; ]; int age; int num;}; union score {int i_sc; float f_sc;};…
1.枚举 枚举类型的声明形式为:   enum  枚举类型名   {  变量值列表 };    变量值列表里都是整型变量,另外不要忘记最后面的分号! 比如,enum  weekday   { sun,mon,tue,wed,thu,fri,sat }; 这里的枚举元素sun.mon...都没有指定值,它们就使用默认值,依次为0,1,2....即sun就是0,mon就是1,...sat是6.也可以在声明枚举类型时指定枚举元素的值,比如 enum  weekday  { sun=7, mon=1,…
1.c语言中的类型 1)内置类型——char,short,int,float,double: 2)用户自定义类型(UDT)——struct结构体,union联合体,enum枚举类型 2.内存对齐 2.1概念 1)内存对齐就是编译器为程序中的每个“数据单元”安排在适当的位置上 2)对于内存对齐问题,主要存在于struct和union等复合结构在内存中的分布情况 2.2规则 1)对于结构的各个成员,第一个成员位于偏移为0的位置,以后的每个数据成员的偏移量 = min ( #pragma pack(n…
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不会清理栈,因此,栈是脏的,使用时可能分配到原来保留的值: 函数不能返回栈变量的指针,因为这个空间是临时的: 栈会溢出,如果在函数中无穷的分配内存: 堆(heap) 堆管理器是操作系统的一个模块,堆管理内存分配灵活,按需分配: 堆管理器管理着很大的操作系统内存块,各个进程按需申请使用,用完释放: 堆内…
一.结构体 1.1 结构体struct定义及初始化 #include <stdio.h> // 这个头文件在系统目录下 #include <stdlib.h> // 使用了system函数 #include <Windows.h> // 结构体简单使用 void structUseDemo(void); // 输出student结构体的内容 void print_student(struct student st); // 说明一种结构体类型 struct studen…
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询用.详细可以参考the-swift-programming-language-in-chinese,或者苹果官方英文版文档 当前版本是swift2.2 类和结构体 与 Objective-C 语言不同的是,Swift 允许直接设置结构体属性的子属性. 实际上,在 Swift 中,所有的基本类型:整数…
一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型,它除了可以定义枚举值外,还可以在枚举中像类一样定义属性和方法 1. 简单枚举定义和使用 //定义枚举,使用enum关键字 enum Method{ case Add case Sub case Mul case Div } //可以连在一起写,成员之间用","隔开 enum Compass…
1.构造类型 根据已经定义的一个或多个数据类型用构造的方法来定义. 分为:数组.结构体和共用体 2.结构体 struct 结构体名{ 成员列表: }; 1)结构体定义完成以后,计算机不会给结构体分配存储空间 2)会在定义结构体变量后,分配存储空间 struct student stu;//可以定义多个 3)匿名结构体 struct{ char * color; int  age; }stu1,stu2; 4)结构体中成员的访问 用点 stu1.age 5)结构体的初始化 // // main.c…
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name[20]; char sex; int age; struct date birthday; /*birthday 是 struct date 类型*/ char addr[30]; }student1,student2; (1):结构体可嵌套 (2):与枚举相比结构体内元素为变量,而枚举为常量 (…