Array de Estructuras en C
Este tutorial introduce cómo crear un array de estructuras en C. Es la colección de variables de estructura múltiple donde cada variable contiene información sobre diferentes entidades.
Matriz de struct
en C
Un array es una colección secuencial del mismo tipo de datos, y una estructura es un tipo de datos definido por el usuario. La declaración de un array de estructuras es la misma que la de un array de los tipos de datos primitivos, pero utiliza la estructura tiene el tipo de datos de sus elementos.
Considere un ejemplo de una estructura llamada Studeng
como se muestra a continuación:
struct Student {
int rollNumber;
char studentName[10];
float percentage;
};
Podemos declarar un array de estructuras como se indica a continuación.
struct Student studentRecord[5];
Aquí, el studentRecord
es un array de 5 elementos donde cada elemento es de tipo struct
Student
. Los elementos individuales se acceden usando la notación de índice ([]
), y los miembros se acceden usando el punto .
operador.
El studentRecord[0]
apunta al 0º
elemento del array, y el studentRecord[1]
apunta al 1º
elemento del array.
De manera similar,
- El
studentRecord[0].rollNumber
se refiere al miembrorollNumber
del 0º elemento del array. - El
studentRecord[0].studentName
se refiere alstudentName
del 0º elemento del array. - El
studentRecord[0].percentage
se refiere al miembro delpercentage
del 0º elemento del array.
El programa completo para declarar un array de la struct
en C es el siguiente.
#include <stdio.h>
#include <string.h>
struct Student {
int rollNumber;
char studentName[10];
float percentage;
};
int main(void) {
int counter;
struct Student studentRecord[5];
printf("Enter Records of 5 students");
for (counter = 0; counter < 5; counter++) {
printf("\nEnter Roll Number:");
scanf("%d", &studentRecord[counter].rollNumber);
printf("\nEnter Name:");
scanf("%s", &studentRecord[counter].studentName);
printf("\nEnter percentage:");
scanf("%f", &studentRecord[counter].percentage);
}
printf("\nStudent Information List:");
for (counter = 0; counter < 5; counter++) {
printf("\nRoll Number:%d\t Name:%s\t Percentage :%f\n",
studentRecord[counter].rollNumber,
studentRecord[counter].studentName,
studentRecord[counter].percentage);
}
return 0;
}
Resultado:
Enter Record of 5 students
Enter Roll number:1
Enter Name: John
Enter percentage: 78
Enter Roll number:2
Enter Name: Nick
Enter percentage: 84
Enter Roll number:3
Enter Name: Jenny
Enter percentage: 56
Enter Roll number:4
Enter Name: Jack
Enter percentage: 77
Enter Roll number:5
Enter Name: Peter
Enter percentage: 76
Student Information List
Roll Number: 1 Name: John percentage:78.000000
Roll Number: 2 Name: Nick percentage:84.000000
Roll Number: 3 Name: Jenny percentage:56.000000
Roll Number: 4 Name: Jack percentage:77.000000
Roll Number: 5 Name: Peter percentage:76.000000
Crear un array de struct
usando la función malloc()
en C
Hay otra forma de hacer un array de struct
en C. La memoria puede ser asignada usando la función malloc()
para un array de estructuras. Esto se llama asignación de memoria dinámica.
La función malloc()
(asignación de memoria) se utiliza para asignar dinámicamente un solo bloque de memoria con el tamaño especificado. Esta función devuelve un puntero de tipo void
.
El puntero devuelto puede ser lanzado en un puntero de cualquier forma. Inicializa cada bloque con el valor de basura por defecto.
La sintaxis de la función malloc()
es la siguiente:
ptrVariable = (cast - type*)malloc(byte - size)
El programa completo para crear un array de estructuras dinámicas es como sigue.
#include <stdio.h>
int main(int argc, char** argv) {
typedef struct {
char* firstName;
char* lastName;
int rollNumber;
} STUDENT;
int numStudents = 2;
int x;
STUDENT* students = malloc(numStudents * sizeof *students);
for (x = 0; x < numStudents; x++) {
students[x].firstName = (char*)malloc(sizeof(char*));
printf("Enter first name :");
scanf("%s", students[x].firstName);
students[x].lastName = (char*)malloc(sizeof(char*));
printf("Enter last name :");
scanf("%s", students[x].lastName);
printf("Enter roll number :");
scanf("%d", &students[x].rollNumber);
}
for (x = 0; x < numStudents; x++)
printf("First Name: %s, Last Name: %s, Roll number: %d\n",
students[x].firstName, students[x].lastName, students[x].rollNumber);
return (0);
}
Resultado:
Enter first name:John
Enter last name: Williams
Enter roll number:1
Enter first name:Jenny
Enter last name: Thomas
Enter roll number:2
First Name: John Last Name: Williams Roll Number:1
First Name: Jenny Last Name: Thomas Roll Number:2
Artículo relacionado - C Array
- Asignar dinámicamente un array en C
- Copiar Char Array en C
- Borrar un array de caracteres en C
- Imprimir un array de caracteres en C
- Inicializar un array de caracteres en C
- Matriz de cadenas en C