结构体类型

C语言结构体

社会主义新天地 提交于 2020-03-16 14:43:25
数据经常以组的形式存在,例如,学生的信息包括姓名、学号、性别。年龄等;当我们查看学生的信息时,如果这些信息在一起访问起来会很高效简单。但是这些信息的值的类型都不同就不能够放入是数组中,但是C语言中,我们却可以使用结构来解决这个问题。 什么是结构体? 在C语言中,聚合数据类型能够同时存储超过过一个的数据,该类型有两种: 数组和结构 ,数组存储出的型同类型的元素,而结构却可以存储不同类型的元素(标量、数组、指针、结构),并且这些元素叫结构的 成员变量 ; 结构体的声明 struct tag //标签,为成员类表提供一个名字,作用就是允许多个声明使用同一个成员列表 { member - list ; //必须给出锁把包含的成员(类型+名字) } variable - list ; //结构变量列表 结构体变量的定义和初始化 定义变量: struct Point { int x ; int y ; } p1 ; //1、在声明时同时定义变量 struct Point p2 ; //2、定义结构体变量 初始化: 结构和数组的初始化方式相同,全部初始化或者是部分初始化,不过部分初始化剩余的成员将是使用缺省值进行初始化; 初始化的值必须和成员列表中顺序相同; struct Stu //类型声明 { char name [ 15 ] ; //名字 int age ; //年龄 } ; struct

container_of宏剖析

我的未来我决定 提交于 2020-03-16 06:45:14
container_of宏剖析 //该宏位于include/linux/kernel.h 1.定义格式 /** * container_of - cast a member of a structure out to the containing structure * * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member:the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) 作用:就是根据一个结构体变量中的一个域成员变量的指针来获取指向整个结构体变量的指针。 例: struct demo_struct { type1 member1; type2 member2; type3 member3; } struct demo_struct demo1,*pdemo; type2 *

Go笔记-结构体

六月ゝ 毕业季﹏ 提交于 2020-03-15 06:37:47
结构体简介   Go 通过类型别名(alias types)和结构体的形式支持用户自定义类型,或者叫定制类型。一个带属性的结构体试图表示一个现实世界中的实体。结构体是复合类型(composite types),当需要定义一个类型,它由一系列属性组成,每个属性都有自己的类型和值的时候,就应该使用结构体,它把数据聚集在一起。然后可以访问这些数据,就好像它是一个独立实体的一部分。结构体也是值类型,因此可以通过 new 函数来创建。   组成结构体类型的那些数据称为 字段(fields)。每个字段都有一个类型和一个名字;在一个结构体中,字段名字必须是唯一的。   Go中没有类的概念 结构体定义 如果字段在代码中从来不会用到,那么就可以把它命名为_(单独使用下划线,在Go中表示忽略) 结构体的字段可以事任何类型,也可以是函数或是接口 1 type identifier struct{ 2 field1 type1 3 field2 type2 4 ... 5 } 6 7 // 声明 8 var s identifier 9 identifier.field1 = value 10 identifier.field2 = value 结构体声明 1 // 下面三种相同,t为结构体指针 2 var t *T // T是结构体类型 3 t = new(T) // 结构体指针变量t 4 5 var

Linux-标准字符设备

萝らか妹 提交于 2020-03-12 16:42:03
Linux-.标准字符设备 标准字符是内核对字符设备驱动的一种管理方式。 标准字符设备和早期字符、杂项字符设备本质上相同,都是对字符设备驱动的不同管理方式。 一个设备驱动,不管用早期字符设备、杂项字符设备、标准字符设备去管理,设备驱动功能没有任何区别! 标准字符设备是由早期字符设备拓展得到的,是由早期字符设备发展而来的,和早期字符设备80%相似! 标准字符设备的用途:主要在早期字符设备基础上,拓展了设备号的范围! 标准字符设备也可以用来管理一类类的设备! 特殊声明:标准字符设备的设备号分配比较灵活、自由! 3.1 标准字符设备的特性 字符设备具备三种核心属性:设备号、设备节点文件、文件操作集合 标准字符设备的设备号分布:u32 devnum = (major << 20) | minor; 主设备号: 0 ~ 2^12 次设备号: 0 ~ 2^20 设备节点文件: 标准字符设备注册成功之后,分配得到设备号。但是设备节点文件并不会自动创建,需要手动创建! 例: mknod /dev/led_hehe c major minor 文件操作集合: 所有设备驱动的文件操作集合完全相同。 3.2 标准字符设备结构体 标准字符设备结构体实质上和早期字符设备结构体一样! 标准字符设备结构体:struct cdev struct cdev { struct kobject kobj; struct

C和C++中结构体(struct)、联合体(union)、枚举(enum)的区别

半腔热情 提交于 2020-03-12 06:54:58
C++对C语言的结构、联合、枚举 这3种数据类型进行了扩展。 1、C++定义的结构名、联合名、枚举名 都是 类型名,可以直接用于变量的声明或定义。即在C++中定义变量时不必在结构名、联合名、枚举名 前加上前缀struct、union、enum。 例如有如下头文件(head.h) //head.h enum color {red,blak,white,blue,yellow}; struct student {char name[6]; int age; int num;}; union score {int i_sc; float f_sc;}; 在C中使用的使用的方法 #include "head.h" int main(void) { enum color en_col; struct student st_stu; union score un_sc; //.... return 0; } 在C++中使用的使用的方法 #include "head.h" int main(void) { color en_col; student st_stu; score un_sc; //.... return 0; } 在C语言中定义这3种变量显得很麻烦,在C中通常使用typedef来达到和C++一样的效果 //example.c typedef enum _color {red

struct和typedef struct

无人久伴 提交于 2020-03-12 06:20:42
1 首先: //注意在C和C++里不同     在C中定义一个结构体类型要用typedef:      typedef struct Student     {     int a;     }Stu;     于是在声明变量的时候就可:Stu stu1;( 如果没有typedef就必须用struct Student stu1;来声明)     这里的Stu实际上就是struct Student的别名。 Stu==struct Student      另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;)      typedef struct     {     int a;     }Stu;     但在c++里很简单,直接      struct Student     {     int a;     };           于是就定义了结构体类型Student,声明变量时直接Student stu2; =========================================== ===========================================   2.其次:     在c++中如果用typedef的话,又会造成区别:      struct Student     {    

结构体的基础芝士

拟墨画扇 提交于 2020-03-10 20:44:45
emmmmm 结构体是一种构造数据类型,可以将不同类型的数据构成一个集合,用于描述复杂的对象; 使用结构体可以实现大规模对象集合的存储与处理,并且可以通过运用结构体和动态内存分配构造出一种新型线性结构–链表; 结构体类型与结构体变量 结构体类型声明: struct 结构体类型名 //结构体类型为用户自定义类型,需要先定义,后使用;struct是关键字 { 数据类型 属性名 1 ; //“属性名”也可称“成员” 数据类型 属性名 2 ; . . . . . . } ; //!!!!不能把这个分号给忘了一定; 类似代码 struct Family { char name [ 10 ] ; //姓名 int age ; //年龄 char sex ; //性别 char IDcard [ 19 ] ; //身份证号码 char TElphone [ 12 ] ; //电话号码 } ; 结构体类型定义还可以嵌套,即利用一个已定义的结构体类型作为另一个结构体类型的成员; 定义一个日期结构体类型 struct data { int year ; int month ; int day ; } ; 将struct Family 中的 age 属性修改成 struct data 类型的 BIRth 属性。 struct Family { char name [ 10 ] ; struct data

打开一个文件操作系统做了什么?

情到浓时终转凉″ 提交于 2020-03-10 15:28:00
当我们打开一个文件时,主要涉及了进程,文件描述符,文件描述表,打开文件表,目录项,索引表之间的联系。 今天主要围绕这几个图来说 第一进程控制块PCB与文件描述符的关系 在进程控制块维护一个指向files-structure的结构体(可以看作是一个指向file结构体的指针数组 *file[n]),而所谓的文件描述符就是这个表的索引(就是数组的下标),表中存储的是一个指针(数组的类型),指向files结构体。 file结构体—文件控制块 struct file { union { struct llist_node fu_llist; struct rcu_head fu_rcuhead; } f_u; struct path f_path; #define f_dentry f_path.dentry struct inode *f_inode; /* cached value */ const struct file_operations *f_op; /* * Protects f_ep_links, f_flags. * Must not be taken from IRQ context. */ spinlock_t f_lock; atomic_long_t f_count; unsigned int f_flags; fmode_t f_mode; struct

C#调用C函数(DLL)传递参数问题

只愿长相守 提交于 2020-03-10 12:04:20
备忘: 1.C函数参数为字符串char*。 如果是入参,对应C#中string或StringBuilder; 如果是出参对应C#中StringBuider; 2.C函数参数为结构体指针,需在C#中对应定义结构体 。如果是入参,C#中可为myfunction(MyStruct mystruct )或myfunction(ref MyStruct mystruct);如果是出参,C#中为 myfunction(ref MyStruct mystruct)。有多个函数使用MyStruct参数时,如果有一个函数使用ref,则其它函数也要使用ref,无论其是否是出参,否则会在运行时提示出现内存错误。即要尽量保证同一结构体类型的参数在C#中定义的一致性。 3.C函数不能返回数组,但可将数组封装为结构体的成员,通过返回结构体结果,从而得到要返回的数组。 其它参考文章: 平台调用P-INVOKE(一)--(基础篇) : http://blog.csdn.net/sdl2005lyx/article/details/6796037 平台调用P-INVOKE(二)--(封送字符串) : http://blog.csdn.net/sdl2005lyx/article/details/6799495 平台调用P-INVOKE(三)--(封送结构体) : http://blog.csdn.net

C#访问修饰符

本秂侑毒 提交于 2020-03-09 22:54:27
访问修饰符 类和结构体里面的成员如果没有访问修饰符,默认是私有的 使用这些访问修饰符可指定下列五个可访问性级别: public:表示公有的,成员访问不受限制。 protected:访问仅限于包含类或从包含类派生的类型。 Internal:访问仅限于当前程序集。 protected internal:访问仅限于当前程序集或从包含类派生的类型。 private:表示私有的,只能在结构体和类里面使用,类或者结构体的外面不能使用,访问仅限于包含类型。 来源: https://www.cnblogs.com/520YAOER/p/9709431.html