`

C++中的 自定义数据类型

阅读更多

自定义数据类型

一、结构体类型

1、   C++允许用户自己定义一组包含若干个类型不同(或相同)的数据项的数据类型,称为结构体。

2、   声明符号:struct

3、   一般形式:struct 结构体类型名{成员表列};

4、   结构体类型名用来作结构体类型的标志。

5、   结构体中的每个成员也称为结构体中的一个域。成员表列又称为域表。

6、   声明结构体类型的位置一般在文件的开头,在所有函数之前。

7、   C++提供了类类型,所以在一般情况下,不必使用带函数的结构体。

二、结构体类型变量的定义方法及其初始化

1、   定义结构体类型变量的方法:

a) 先声明结构体类型再定义变量名

结构体类型名     结构体变量名

 Student            student1;

C语言中结构体类型名前面加上关键字struct

C++中可以省略

Student1中具有Student中同样的属性

b) 在声明类型的同时定义变量

一般形式:

struct 结构体名

     成员表列

    }变量名表列;

c)  直接定义结构体类型变量

一般形式:

struct           //没有结构体类型名

 {

     成员表列

  }变量名表列;    

                这种方式虽然合法,但很少使用。提倡先定义类型后定义变量的第一种方法.

 

说明:

1、   不是所有的结构体类型都有相同的结构。

2、   类型与变量是不同的概念,只能对结构体变量中的成员赋值,不能对结构体类型赋值。在编译时,不会对类型分配空间,只为变量分配空间。

3、   结构体中的成员可以单独使用,它的作用与地位相当于普通变量。

4、   成员也可以是一个结构体变量。

5、  #include<iostream>

6、  usingnamespace std;

7、   

8、  struct Date   //声明一个结构体类型Date

9、  {

10、   int month;

11、   int day;

12、   int year;

13、 };

14、 struct Student  //声明一个结构体类型Student

15、 {

16、   int num;

17、   char name[20];

18、   char sex;

19、   int age;

20、   Datebirthday;  //Date是结构体类型,birthdayDate类型的成员

21、   char addr[30];

22、 }student1={},student2;//定义student1student2为结构体类型Student的变量

首先声明了一个Date类型,具有三个成员month,day,year。然后声明Student类型,将成员birthday指定为Date类型,即birthday作为Date结构体类型名的结构体变量,具有month,day,year三个属性。

5、结构体中的成员名可以与程序中的变量名相同,但二者没有关系,互不影响。

 

三、结构体变量的引用

1、可以将一个结构体变量的值赋给另一个具有相同结构的结构体变量。

    Student1=Student2;

2、   可以引用一个结构体变量中的一个成员的值。

Student1.num=1000;

3、   如果成员本身也是一个结构体类型,则要用若干个成员运算符,一级一级找到最低一级的成员。

例如;student1.birthday.month(引用结构体student1中的birthday中的month成员)

4、   不能将一个结构体变量作为一个整体进行输入和输出。

不能:cout<<student1;只能对各个成员分别输入和输出;

5、   对结构体变量的成员可以像普通变量一样进行各种运算。

例如:student2.score=student1.score;

sum=student1.score+student2.score;

student1.age++;

++student1.age

6、   可以引用结构体变量成员的地址,也可以引用结构体变量的地址。

例如;cout<<&student1;  //输出student1的首地址

cout<<&student1.age;//输出student1.age的地址

结构体变量的地址主要用作函数参数,将结构体变量的地址传递给形参。

 

三、结构体数组

1、   结构体数组和其他数值型数组的不同之处在于:每个数组元素都是一个结构体类型的数组,他们都分别包含各个成员项。

2、   结构体数组就是用数组的形式保存复制多个结构体变量,不用在定义结构体后声明无数的变量实体。

3、   关于初始化:在声明结构体数组的时候可以对其进行初始化,数据类型必须对应,和普通数组初始化的模式一样,不确定数组长度的时候可以不写数组长度直接声明初始化。

四、结构体数组应用

对候选人得票的统计程序。设有三个候选人,最终只有一个人当选为领导。今有十个人参加投票,从键盘先后输入这十个人所投的候选人名字,要求最后输出这三个候选人的得票结果。

解析:这个题可以定义一个候选人结构体数组,包含3个元素,在每个元素中存放有关的数据。

实现程序如下:

 

/*

 * newtest.cpp

 *

 *  Created on: 2012-4-8

 *      Author: David

 */

 

#include <iostream>

/*

 * 声明结构体类型Person

 * 拥有name数组和count整型变量

 * */

struct Person   

{

char name[20];

int count;

};

 

int main()

{

//定义Person类型的数组,内容为三个候选人的姓名和当前的票数

Person leader[3]={"li",0,"zhang",0,"fun",0};

int i,j;

char leader_name[20]; //leader_name为投票人所选的人的姓名

for(i=0;i<10;i++)

{

cin>>leader_name;

for(j=0;j<3;j++)

{

if(strcmp(leader_name,leader[j].name)==0)

{

//如果与一个候选人的姓名相同,就给他加一票

leader[j].count++;

}

}

cout<<endl;

for(i=0;i<3;i++)

{

cout<<leader[i].name<<";"<<leader[i].count<<endl;

}

return 0;

}

}

分享到:
评论

相关推荐

    c++自定义数据类型

    ### C++自定义数据类型详解 #### 一、概述 在C++中,自定义数据类型为程序员提供了极大的灵活性和便利性。通过自定义数据类型,开发者可以根据具体的应用场景创建复合的数据结构,使得代码更加清晰、高效。本文将...

    C++自定义数据类型(2013级-C++程序设计)

    在C++语言中,自定义数据类型为我们提供了一种途径,能够根据程序的需求定义复合数据类型,以更好地适应程序设计的需要。下面将详细讨论结构体(struct)、共用体(union)、枚举类型(enum)以及typedef声明类型的...

    C++程序设计课件 ch7 自定义数据类型

    在C++程序设计中,自定义数据类型是基础知识点之一,主要涉及到结构体(struct)、共用体(union)、枚举类型(enum)等。这些类型能够帮助程序员定义更为复杂和特定的数据结构,从而在程序中表示更加丰富的信息。 ### ...

    C++上机实验报告(自定义数据类型&类和对象Ⅰ).docx

    这篇实验报告主要涵盖了C++中的自定义数据类型、类和对象的使用。实验分为两部分,实验7主要关注结构体、数组、链表的操作,而实验8则涉及类的私有化、成员函数的使用及对象的初始化。 ### 实验7知识点 1. **...

    C自定义数据类型PPT课件.pptx

    在C++编程语言中,自定义数据类型是程序员根据需求创建的特定数据结构,用于表示更复杂的实体或概念。这通常涉及到使用基本数据类型(如int、char、float等)来构建新的复合类型,比如枚举(enumeration)、数组、...

    易语言DLL返回自定义数据类型源码.zip

    本资源“易语言DLL返回自定义数据类型源码.zip”是一个与易语言相关的压缩包,包含了一些用于演示或学习如何在DLL(动态链接库)中返回自定义数据类型的代码示例。 在Windows编程中,DLL文件是可执行代码和数据的...

    C++传递自定义类型作为参数到Qml

    本文将深入讲解如何实现C++自定义类型到Qml的传递。 首先,让我们了解基础概念。Qt的Qml是一种声明式UI编程语言,它可以与C++紧密结合,允许C++代码提供数据和功能给Qml。为了使C++类型能在Qml中使用,我们需要将...

    Visual C++ 2005入门经典中文版-第07章 自定义数据类型

    通过上述知识点的介绍,《Visual C++ 2005入门经典》第七章向读者展示了自定义数据类型在C++中的应用范围和深度,不仅涵盖了基础的结构体和类的定义,还深入讲解了面向对象编程的核心概念和高级特性。这对于想要深入...

    dh C++自定义数据类型(新).ppt

    在C++编程语言中,自定义数据类型是一个重要的特性,它允许程序员根据需求创建自己的数据结构,以便更高效地组织和处理数据。本篇内容主要围绕C++中的三种自定义数据类型展开:结构体(Struct)、共用体(Union)和...

    c++程序设计 第七章用户自定义数据类型

    本章主要介绍了C++语言中用户自定义数据类型的概念和应用,包括结构体类型、结构体变量、结构体数组、指向结构体变量的指针、结构体类型数据作为函数参数、枚举类型和typedef声明新类型名等。 结构体类型是C++语言...

    qml中TreeView自定义数据类型,使在代理(Delegate)中能传递到更多的数据

    在实际开发中,我们经常需要自定义数据类型来满足复杂的数据展示需求。`TreeView`默认情况下可能无法直接处理复杂的业务逻辑,这时就需要在代理(Delegate)中传递更多的数据。本文将深入探讨如何在`qml`中实现`...

    VB C/C++ C#中自定义数据结构源码

    在编程领域,自定义数据结构是提升程序效率和可...总的来说,VB、C/C++以及C#都提供了丰富的工具来创建自定义数据结构,理解它们之间的差异和优劣,有助于我们在开发过程中做出明智的选择,以实现高效、可维护的代码。

    DLL返回自定义数据类型.rar

    本资料"DLL返回自定义数据类型.rar"主要探讨了如何在DLL中定义并返回自定义数据类型,这在开发过程中非常实用,尤其是当多个程序需要共享复杂数据结构时。 首先,我们来理解自定义数据类型。在编程中,自定义数据...

    解决易语言转换到C++ 自定义数据类型

    在将易语言的代码转换为C++时,尤其是涉及到自定义数据类型时,需要特别注意两者的异同。 易语言中的自定义数据类型(数据结构)通常通过`.数据类型`进行定义,如文中的`数据`和`坐标_数据类型`。在C++中,类似的...

    TypeByte@2019_C#_C++_C数据类型转换时间戳转换_

    2. C++的数据类型转换:static_cast、dynamic_cast、C-style cast和const_cast,以及时间戳的自定义处理。 3. C语言的数据类型转换和时间戳处理:强制类型转换,time()、mktime()等系统接口的使用。 4. 跨语言接口...

    11自定义控件_C++_自定义控件_

    在C++编程中,自定义控件是一种非常重要的技术,它允许开发者根据需求创建具有特殊功能或特定外观的用户界面元素。自定义控件能够帮助我们实现标准库中没有的功能,提升应用程序的用户体验和交互性。本文将深入探讨...

    C++上机实验报告(自定义数据类型&类和对象Ⅰ).pdf

    实验报告主要涵盖了C++中的自定义数据类型、类和对象的应用。在实验7中,学生需要掌握结构体类型的使用,包括结构体变量的定义和结构体数组的操作。此外,还涉及到链表的基本概念和操作,如创建、输出、删除和插入...

    C++ 中自定义数组容器MyVector的实现

    在C++编程中,自定义数据结构是一种常见的实践,它可以帮助我们更好地理解和控制程序的运行。本篇文章将深入探讨如何实现一个类似于标准库中的`std::vector`的自定义数组容器——MyVector,并通过类模板来增强其泛型...

Global site tag (gtag.js) - Google Analytics