estructura
C lenguaje permite a los usuarios crear una estructura de datos que consiste en una combinación de tipo compuesto de diferentes tipos de datos por sí mismos, se hace referencia a la estructura
La forma general de una declaración del tipo de estructura:
estructura struct {nombre} miembro tabular;
struct Student { int NUM; nombre char [20 es]; Char Sex; int Edad; }; llaves es un hijo de la estructura contiene, referido a los miembros de la estructura, el num, nombre, sexo, edad descrito anteriormente son es un miembro. Cada miembro debe ser el tipo de declaración que el tipo de nombre de miembro;
Los miembros de la columna de la tabla también se hace referencia como "tabla de dominio", cada miembro de un dominio es un cuerpo estructural
Definición de la variable tipo de estructura
1, el tipo de estructura de la primera declaración, y después definir los tipos de variables
struct estudiante { int num; char nombre [20 es]; Char sexo; int Edad; }; STUDENT1 estructura, Estudiante2; nombre del tipo de estructura Estructura nombre de la variable
2, en un comunicado, al mismo tiempo definir una variable de tipo
struct Student { int NUM; nombre char [20 es]; Char Sex; int Edad; } STUDENT1, Estudiante2; la forma general: struct nombre de la estructura { miembros enumeran } variable de relojes columna;
3, no especifique el nombre de la definición del tipo de la estructura y la variable de tipo directo
forma general: struct { miembros enumeran } variable de relojes columna;
Nota: Los miembros del nombre del tipo de estructura puede ser el mismo nombre de variable en el programa, pero no representan el mismo objeto
variables de estructura se inicializan y referencias
1, cuando la definición de las variables de estructura se puede inicializar a sus miembros
2, la estructura se puede citar un valor variable miembro, la referencia a:
Miembros variable de estructura
3, si el tipo de miembro estructural que sí tiene una estructura que pertenece a otro tipo, el uso de varios miembros de la operador para encontrar los miembros nivel más bajo de la etapa por etapa, sólo para el rango más bajo o el acceso y la asignación operaciones.
método miembro de Referencia:
(Estudiantes miembros estructura de variables en NUM) student1.num student2.birthday.month (student2 variable de estructura de cumpleaños del miembro de los miembros de mes)
4, los miembros de la estructura pueden ser cálculo variable de
student2.score = student1.score; (operador de asignación) SUM = student2.score + student1.score; (sumador) student2.age ++ (de más operación)
5, el mismo tipo de variable de estructura se puede asignar el uno al otro
student2 = STUDENT1
6, la dirección de los miembros de variables se puede referir a la estructura, se puede hacer referencia a la dirección de la variable de estructura
scanf ( "% d", y student2.score); ( valor de entrada student2.score) de la printf ( "% D", y Estudiante2); (estructura variable de salida del Estudiante2 dirección de inicio)
Dirección variable de estructura en función de los parámetros principales de la estructura de dirección de transmisión variable
Uso matriz de estructuras
Una variable de estructura puede ser almacenada en un conjunto de datos asociados, si hay 10 estudiantes en necesidad de operaciones de datos, obviamente se debe utilizar en una matriz, esto es la matriz de estructuras
Define una matriz de estructuras forma general:
. 1, nombre de la estructura struct {miembros} tabular nombre de la matriz [longitud de la matriz] 2, declarar una estructura, y luego definir una matriz de estructuras de este tipo: el tipo de nombre de la estructura array [tamaño de la matriz] como: líder persona struct [3]; // estructura líder es un nombre de matriz
Inicialización de una estructura de matriz se define más adelante en la matriz y además:
} = {Columna de la tabla valor inicial;
例如: Persona líder estructura [3] = { "li", 0, "Zhang", 0, "Wang", 0};
estructura del puntero
Estructura variable de puntero es un puntero a una estructura, la dirección de inicio de una variable de estructura es un puntero a este variables de estructura.
Si la dirección de inicio de una variable de estructura se almacena en una variable puntero, entonces los puntos variables puntero a las variables de estructura.
Puntero a una estructura de variables
Señalando estructura que apunta a las variables de estructura variable de puntero objeto también puede ser dirigido en la estructura de elemento de matriz.
variables de tipo puntero base deben ser del mismo tipo de variables de estructura.
Por ejemplo: Student struct * pt // pt puede ser dirigida a una variable de tipo struct Student o elementos de la matriz
struct Estudiante { largo NUM; char nombre [50]; Char sexo; una puntuación de flotación; }; struct stu_1 Estudiante; // define una variable de tipo struct stu_1 Estudiante estructura estudiante * P; // definir un tipo de datos variables puntero p estructura de Estudiantes y stu_1 = P; el printf ( "NO:% LD \ nname:% S \ nsex:% C \ NSCore :. 5.lf% \ n-", stu_1.num, stu_1.name, stu_1.sex, stu_1.score); es equivalente a la printf ( "NO:.% LD \ nname:% S \ nsex:% C \ NSCore: 5.lf% \ n-", (* .num P), (P *) .name, (P *) .sex, (p *) .score); lenguaje C permite .name (* p) usando p-> nombre de lugar; p-> nombre representa una variable de estructura puntos nombrar miembros en p '->' dice a punto para el operador si una variable de estructura p en la STU, los siguientes tres tipos de uso es equivalente a: . 1, los miembros Stu (por ejemplo: stu.name) 2, (P *) nombre del miembro (Tales como: (P *) .name). . 3, p-> Nombre de usuario (por ejemplo: p-> nombre)
Puntero a una matriz de estructuras
struct Student stu[3] = {
{10101,"mao",'M',78},
{10103,"li",'F',98},
{10106,"zhang",'M',86},
};
struct Student* p; //定义指向struct Student 结构体变量的指针变量
printf("学生的全部信息\n");
for (p = stu; p < stu + 3; p++)
{
printf("%5d %-20s %2c %4d\n",p->num,p->name,p->sex,p->age);
}
Y un puntero a una estructura con las variables de estructura en función del parámetro variable
La estructura de un valor de la variable a otra función, hay tres métodos:
-
Una variable de estructura de miembro como un parámetro. Por ejemplo: Stu [1] .num como argumentos de la función
-
Una variable de estructura como argumento.
-
Apuntando hacia la variable de estructura (o elemento de la matriz) como argumento un puntero a la dirección de las variables de estructura (o elemento de la matriz) se pasa parámetro.