Extractos de puntos de conocimiento de la estructura de C ++

estructura

La forma general de la definición de estructura es:

struct <结构名>{
    <成员列表>
};
  • struct es una palabra clave, lo que significa definición de estructura;

  • <nombre de la estructura> es un identificador, el nombre de la estructura;

  • La <lista de miembros> consta de declaraciones de varios miembros, y cada miembro es una parte integral de la estructura.

Por ejemplo, una fracción contiene dos miembros: numerador y denominador, que se pueden definir como una estructura. El nombre de la estructura de la puntuación puede denominarse racionalNumber. Ambos miembros son variables enteras y pueden llamarse fenzi y fenmu respectivamente. Entonces la estructura de la puntuación se puede definir como:

struct rationalNumber{
    int fenzi;     // 分子
    int fenmu;     // 分母
};

La definición de la estructura es definir un nuevo tipo de datos (el nombre del nuevo tipo es el nombre de la estructura) para que no haya asignación de memoria. Luego, puede usar el tipo de estructura como un tipo predefinido (como int).

P.ej:

rationalNumber x,y;

Esta declaración declara dos variables xey de tipo númeroRacional.Cada variable contiene dos miembros: integer fenzi y fenmu. La declaración de variable tendrá asignación de memoria, puede usar los dos miembros de variable entera de xey para almacenar datos, de modo que el numerador y el denominador de la misma puntuación se puedan almacenar en la variable correspondiente del tipo racionalNumber, y la variable puede representar uno puntuado.

La definición de la estructura se puede anidar. Por ejemplo, la estructura de la persona contiene miembros de cumpleaños y el cumpleaños contiene tres miembros: año, mes y día. El código es el siguiente:

// 定义结构date
struct date
{
    
    
    int year, month, day;
};
// 定义结构person
struct person
{
    
    
    int IDNumber;     // 身份证号
    char name[20];     // 姓名
    char sex;      // 性别
    date birthday;     // 生日,嵌套定义
};

Inicialización y uso de estructura

La inicialización de las variables de estructura es la misma que la inicialización de las variables de matriz, en forma de una lista de valores iniciales entre llaves.
P.ej:

rationalNumber x={
    
    12,46};

En esta declaración, su valor inicial se asigna a cada miembro en secuencia, es decir, 12 y 46 se asignan a los miembros fenzi y fenmu de x, respectivamente.
Hay dos formas de usar variables de estructura: una es usar la variable de estructura como un todo; la otra es desensamblarla y operar un miembro de ella por separado:
cuando la variable de estructura se usa como un todo, hay dos operaciones Símbolo: El operador de asignación = y el operador de dirección & pueden actuar directamente sobre las variables de estructura;
por ejemplo:

rationalNumber x = {
    
    12,46}, y ;
y = x ;     // 结构变量中的每个成员分别赋值
rationalNumber *p = &x;      // 声明结构指针,并初始化为 x 的地址

Cuando la variable de estructura se usa por separado, es necesario acceder a los miembros de la variable de estructura y los miembros de la variable de estructura se pueden usar como variables ordinarias. Por ejemplo, los dos miembros de la puntuación se pueden considerar como variables de tipo int ordinarias .
Entre ellas: hay dos formas de desmontar la estructura, una es usar el nombre de la estructura + operador de punto (.); La otra es usar el puntero para estructurar la variable + operador de flecha (->).

P.ej:

rationalNumber x= {
    
    12,46}, y ;
y = x ;     // 结构变量中的每个成员分别赋值
rationalNumber *p = &x;     // 声明结构指针 p,并让 p 指向 x
x.fenzi = 18;     // 使用圆点操作符访问并修改 x 的成员 fenzi
p->fenmu = 108;     // 使用箭头操作符并修改 x 的成员 fenmu

Las funciones no solo pueden pasar variables de estructura a través de parámetros, sino también devolver variables de estructura a través de valores de retorno.
Por ejemplo: la siguiente función de suma suma 1 al numerador y al denominador de la fracción x y devuelve:

#include <iostream>
using namespace std;
struct rationalNumber{
    
    
    int fenzi;     // 分子
    int fenmu;     // 分母
};
rationalNumber add(rationalNumber x)
{
    
    
    x.fenzi++;     // 分子加 1
    x.fenmu++;     // 分母加 1
    return x;     // 返回结果
}
int main()
{
    
    
    rationalNumber a ={
    
    23,56}, b ;
    b=add(a);     // 调用add 函数
    cout << b.fenzi << "/" << b.fenmu << endl;     // 输出返回值
    return 0;
}
  • El resultado de salida es: 24/57.
    Recordatorio cálido: como nuevo tipo de datos, las variables de estructura se pueden usar de la misma manera que los tipos predefinidos.

Matriz de estructura

La definición de la estructura es definir un nuevo tipo de datos, por lo que puede usar el nombre de la estructura (tipo) para declarar la matriz de la estructura. Cada elemento de la matriz de la matriz de estructura es una variable de estructura.
Cuando use una matriz estructurada, primero, como una matriz, use el nombre de la matriz y el subíndice para acceder al elemento de la matriz. El elemento de la matriz es la variable de estructura y luego el miembro de la variable de estructura (usando el operador de punto o el operador de flecha) , la variable de estructura Members se puede utilizar como variables ordinarias.
El siguiente programa define la estructura del estudiante y declara la matriz de tipo estudiante cs (cs contiene 5 elementos, a saber, cs [0], cs [1], cs [2], cs [3], cs [4]), al mismo tiempo tiempo, la matriz cs se inicializa:

struct student {
    
    
    int num;
    char name[20];
    float score;
}cs[5]={
    
    {
    
    110, ″Zhang Ping″, 45},
        {
    
    102, ″Li Xiaoming″, 92},
        {
    
    153, ″Wang Ming″, 52.5},
        {
    
    134, ″Cheng Ling″, 87},
        {
    
    105, ″Wang Xiaofang″, 95},
};

Dado que cs es una matriz, la sintaxis de inicialización son 5 datos separados por comas entre llaves. Dado que cada elemento de la matriz cs es una variable de estructura, la sintaxis de inicialización para las variables de estructura es el valor de cada miembro entre llaves.
La primera parte de llave {110, "Zhang Ping", 45} se inicializa en cs [0], donde 110 se asigna a cs [0] .num y "Zhang Ping" se asigna a cs [0] .name (en realidad cs [0] .name también es una matriz, que también se inicializa uno por uno. 'Z' se asigna a cs [0] .name [0], ...), y 45 se asigna a cs [0] .score .

Miembros de la matriz de estructura de acceso

Para usar una matriz estructurada, también necesita ser desensamblada. La matriz usa recorrido de bucle y usa [] para agregar subíndices para acceder a sus elementos de matriz, y las variables estructurales se pueden desensamblar usando el operador de punto.
Por ejemplo, el siguiente programa genera toda la información del arreglo cs:

for(int i = 0; i < 4; i++)
{
    
    
    cout<<cs[i].num<<", "<<cs[i].name<<": "<<cs[i].score<<endl;
}

Supongo que te gusta

Origin blog.csdn.net/interestingddd/article/details/114409097
Recomendado
Clasificación