内容纲要

自定义数据类型

什么是结构体

1.与这个东西相似的是数组。但是数组中各个数据属于同一类型。局限性较大。有时候需要将不同数据组合成一个有机整体,这些组合在整体中数据又是相互联系的。列如一个人的姓名,年龄,电话等。
2.也可以叫他们组合项,在一个组合项中包含若干个不同的数据项。结合在一起称为结构体。

声明

格式为

struct 结构体类型名{成员列表};

结构体类型名用来做结构体标志。在声明结构体时必须对各个成员都进行类型声明

成员格式为

类型名 成员名;

每个成员也称为结构体中的一个域。成员表列又称为域表。成员名字的定名规则与变量名字的定名规则相同。

示例

#include 
using namespace std;
struct MyStruct
{
    char name[100];
    char xingbie;
    int age;
};
void main()
{

}

声明位置

声明结构体的位置一般在结构开头,在所有函数之前,以便文件中所有的函数都利用他来定义变量。
在函数中也可以声明结构体类型。

结构体类型变量的定义方法初始化

前面只是指定了结构体类型,它相当一个模型,但无具体数据,系统也不会分配实际的内存单元。为了能在程序中使用结构体类型的数据,应当使用结构体变量,并在其中存放结构体数据。

定义结构体变量的方法

1.

struct 结构体类型名 结构体变量名1,结构体变量名2.....结构体变量名n;

列如

struct Struct1 MyStruct1,MyStruct2;

2.

struct 结构体名 {成员表列}变量名表列;

3.直接定义结构体类型变量

struct {成员列表}变量名列表;
 每一种结构体都有自己的结构,可以定义出具体的结构体烈性
 只能对结构体的成员赋值,而不能对结构体的成员赋值。
 对结构体的成员,可以单独使用,它的作用和地位相当于普通变量。
 成员也可以是个结构体变量
 结构体中的成员名可以与程序中的变量名相同,但二者没有关系。

结构体变量初始化

和其他类型变量一样,对结构体变量定义时,可以指定初始值。

#include 
using namespace std;
struct MyStruct
{
    char name[100];
    char xingbie;
    int age;
}student{"lalala;",'男',20};

也可以是这样

MyStruct struct1 = { "lalala;",'男',20 };

结构体变量的引用

1.可以给一个结构体变量赋值给另外一个结构体变量
列如在声明中举例声明的两个

student=struct1;

2.可以引用一个结构体变量中的一个成员值
列如

#include 
using namespace std ;
struct MyStruct
{
    char name[10];
    int age;
    int Idcard[];
}has,he;
void main()
{
    has = {"hahaha;",10,100000};
    has.age = 20;//直接引用成员
}

3.如果成员本身也是结构体运算符,想要引用确定成员。需要逐级引用
4.不能将结构体变量作为一个整体输入输出,只能输出单个成员
5.对结构体变量成员可以像普通变量进行各种运算
6.可以引用结构体成员的地址也可以引用结构体变量的地址,结构体变量地址主要是作为函数参数的形参(书里没有具体解释)

结构体数组

和其他类型数组一样,可以对结构体初始化。列如

#include 
using namespace std ;
struct MyStruct
{
    char name[10];
    int age;
    int Idcard[10];
}has[2];
void main()
{
    has[0] = {"hahaha;",10,100000};
    has[0].age = 20;
}

当然也可以不指定元素个数。
has[]={{…..},{……}};

指向结构变量的指针

一个结构体指针变量就是该变量所占据内存段的起始地址,指针变量也可以指向结构体数组中的元素。

通过结构体变量的指针引用结构体变量的成员

发表评论