C++自定义数据类型之结构

结构

结构是数目固定的不同数据类型的若干变量的集合。实际上,结构也可以是相同变量的集合。

定义结构变量应先定义结构,任何一个结构变量都具有某种结构模式。结构模式是结构变量所属的形式,一个结构模式可以定义若干个结构变量。

结构模式的定义格式:

struct     <结构名>

{

<若干成员说明>(给出每个成员的名字和类型)

};

结构变量的定义格式:

struct   <结构名>  <结构变量名表>

例如:

struct    student

{

char    name;

int     age;

char     sex;

struct   date  birthday; (结构变量)

}c1,*p,a[12];

struct   date

{

int   year,month,day;

};

一个结构的结构变量也可以作为另一个结构的成员。而结构的成员是不同的数据类型。结构变量可以是一般的结构变量,也可以是指向结构变量的指针,还可以是结构数组。(结构数组是数组元素为结构变量的数组)

定义结构变量可以在定义结构模式后单独定义,也可以在定义结构模式的同时进行定义。上述的结构变量就是在定义结构模式的同时定义结构变量的,来看看分开单独定义的:

struct   card

{

int   a;

char   b;

};

struct   card   s1,s2,*pi,d[12];

结构变量成员的表示;

一般结构变量的成员的表示方法是用运算符“.”将.结构变量名与成员名连接起来:

<结构变量名>.<成员名>   
s1.a

指向结构变量的指针的成员的表示方法是用运算符“->”将指向结构变量的指针名和成员名连接起来:

<结构变量指针名>-><成员名>  
pi->b

指向结构变量的指针的成员的表示方法也可以是:

(*<结构变量指针名>).<成员名>  
(*pi).b

结构变量的赋值:

1结构变量赋初值:

结构变量赋初值的方法是使用初始值表,初始值表中给定的数据项的顺序应与定义时各成员的顺序一致。

一般结构变量赋初值:struct  card  c1={1,‘s‘};

指向结构变量指针赋初值: struct  card  *pi=&c1;(&c1表示结构变量c1的地址值)

结构数组赋初值; struct  card  s[2]={{1,‘s‘},{2,‘s‘}};

2结构变量赋值:

一般结构变量赋值:struct.old=23;struct.birthday.day=15;

指向结构变量指针赋值: pi->birthday.year=2017;

结构数组赋值; s[2].name="wang yan";

在两个结构变量具有相同的结构模式下还可以将一个结构变量整个赋值给另一个结构变量。

struct  card  c1={1,‘s‘},c2;

c2=c1;

结构变量的运算:

结构变量的运算主要是指结构变量成员的运算,结构变量在整体上只有赋值运算。

写一个程序:

#include <iostream.h>
struct student
{
	char *name;
	long stu_no;
	float math;
	float english;
};
void main()
{
	static struct student s1={"Ma jing",99012,89.0,78.5},
		                  s2={"Lu ping",99023,90.0,85.5};
	float m1,m2;
	m1=(s1.math+s1.english)/2;
    m2=(s2.math+s2.english)/2;
	cout<<s1.name<<'\t'<<m1<<endl;
    cout<<s2.name<<'\t'<<m2<<endl;
}

输出的结果:Ma jing  83.75

Lu ping  87.75

时间: 2024-08-07 08:39:40

C++自定义数据类型之结构的相关文章

自定义数据类型 C++ 结构体类型 共同体类型 枚举类型 类类型{}

一.结构体类型 结构体类型,共用体类型,枚举类型,类类型等统称为自定义类型(user-defined-type,UDT). 结构体相当于其他高级语言中的记录(record);例如: struct Student{ int num; char name[20]; char sex; int agel float score; char addr[30]; }; 结构体声明的一般形式: struct 结构体类型名 {成员列表}: 结构体类型名用作结构体类型的标志,上面的Student就是结构体类型名

【剑仙教程】易语言的结构体。自定义数据类型。

1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言的IDE,IDE,是开发环境. 点击“插入”菜单,选择“数据类型” 这时,代码编辑框就会增加一个数据类型的窗口. 把“数据类型1”命名为“精易_座标”,勾选“公开项”. 这样,一个 精易_座标 的类就做好了. . 再按回车键,给这个类增加2个成员. x 整数型 y 整数型 . 访问时,直接写代码就O

Oracle自定义数据类型 1

原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nvarchar2.2.数值类型.如:int.number(p,s).integer.smallint.3.日期类型.如:date.interval.timestamp.4.PL/SQL类型.如:pls_integer.binary_integer.binary_double(10g).binary_fl

第六讲 自定义数据类型

为什么要使用自定义数据类型呢?原因很简单,在现实生活中,比如一个学生他有姓名,学号,年龄,身高,出生年月,而在上一讲中,我们提到的数据类型无法满足现实生活需求,这个时候,自定义数据类型该派上用场了,我们可以定一个学生类型.从而达到我们的需求了.自定义数据类型又可以分为子界类型,数组类型,记录类型,枚举类型,指针类型,集合类型等等... 下面分别对这些数据类型讲解 子界类型 子界类型定义了某种类型的取值范围(因此定名subrange).你可定义整数类型的子界类型,如取值从1到10或从100到100

C++自定义数据类型

C++中有以下几种自定义数据类型方式:typedef.union.enum typedef typedef只是用于重命名一种已有的数据类型. typedef char C; //C c即char c typedef char field [50]; //field s即char[50] 注意第二种用法,数组的维数[50]是写在最后的. union union中的每个成员共享同一段内存(每个成员的起始内存位置都是一样的),整个union的大小取决于最长的成员的大小. union mix_t { l

干货--Hadoop自定义数据类型和自定义输入输出格式整合项目案例

正文开始前 ,先介绍几个概念 序列化 所谓序列化,是指将结构化对象转化为字节流,以便在网络上传输或写到磁盘进行永久存储. 反序列化 是指将字节流转回到结构化对象的逆过程 序列化在分布式数据处理的两个大领域经常出现:进程间通信和永久存储 在Hadoop中,系统中多个节点上进程间的通信是通过"远程过程调用"(remote procedure call,RPC)实现的 .RPC协议将消息序列化成二进制流后发送到远程节点,远程节点接着将二进制流反序列化为原始消息 Hadoop使用了自己写的序列

Atitit.各种 数据类型 ( 树形结构,表形数据 ) 的结构与存储数据库 attilax 总结

Atitit.各种  数据类型 ( 树形结构,表形数据  ) 的结构与存储数据库 attilax  总结 1. 数据结构( 树形结构,表形数据,对象结构 ) 1 2. 编程语言中对应的数据结构 java c# php ( Dic/Map      List    datatable ) 1 3. 数据库存储数据  1 4. 数据的表形显示( 多条记录 与单条记录 ) 2 5. ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormVie

自定义数据类型使用QVariant转换的方法

QVariant类型的放入和取出必须是相对应的,你放入一个int就必须按int取出,不能用toString(), Qt不会帮你自动转换. 数据核心无非就是一个 union,和一个标记类型的type:传递的是整数 123,那么它union存储整数123,同时type标志Int:如果传递字符串,union存储字符串的指针,同时type标志QString. QVariant 属于 Qt 的Core模块,属于Qt的底层核心之一,ActiveQt.QtScript.QtDeclarative等都严重依赖于

结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)

大家都知道,Hadoop中为Key的数据类型必须实现WritableComparable接口,而Value的数据类型只需要实现Writable接口即可:能做Key的一定可以做Value,能做Value的未必能做Key.但是具体应该怎么应用呢?--本篇文章将结合手机上网流量业务进行分析. 先介绍一下业务场景:统计每个用户的上行流量和,下行流量和,以及总流量和. 本次描述所用数据: 日志格式描述: 日志flowdata.txt中的具体数据: 接下来贴出详细代码,代码中含有详细注释,从代码中可以看出,