C struct (estructuras)

En este tutorial, aprenderá sobre los tipos de estructuras en la programación en C. Aprenderá a definir y utilizar estructuras con la ayuda de ejemplos.

En la programación en C, una estructura (o estructura) es una colección de variables (pueden ser de diferentes tipos) bajo un solo nombre.

¿Cómo definir estructuras?

Antes de poder crear variables de estructura, debe definir su tipo de datos. Para definir una estructura, structse usa la palabra clave.

Sintaxis de la estructura

 struct structureName (tipo de datos miembro1; tipo de datos miembro2;…); 

Aquí hay un ejemplo:

 struct Person (char name (50); int citNo; float salario;); 

Aquí, struct Personse define un tipo derivado . Ahora puede crear variables de este tipo.

Crear variables de estructura

Cuando se declara un tipo de estructura, no se asigna almacenamiento ni memoria. Para asignar memoria de un tipo de estructura dado y trabajar con ella, necesitamos crear variables.

Así es como creamos variables de estructura:

struct Person (char name (50); int citNo; float salario;); int main () (estructura Persona persona1, persona2, p (20); retorno 0;)

Otra forma de crear una variable de estructura es:

 estructura Persona (nombre de char (50); int citNo; salario flotante;) persona1, persona2, p (20); 

En ambos casos, se crean dos variables person1, person2 y una variable de matriz p que tiene 20 elementos de tipo struct Person.

Acceder a miembros de una estructura

Hay dos tipos de operadores que se utilizan para acceder a los miembros de una estructura.

  1. . - Operador miembro
  2. -> - Operador de puntero de estructura (se discutirá en el próximo tutorial)

Supongamos que desea acceder al salario de person2. Así es como puede hacerlo.

 person2.salary

Ejemplo: sumar dos distancias

 // Program to add two distances (feet-inch) #include struct Distance ( int feet; float inch; ) dist1, dist2, sum; int main() ( printf("1st distance"); printf("Enter feet: "); scanf("%d", &dist1.feet); printf("Enter inch: "); scanf("%f", &dist1.inch); printf("2nd distance"); printf("Enter feet: "); scanf("%d", &dist2.feet); printf("Enter inch: "); scanf("%f", &dist2.inch); // adding feet sum.feet = dist1.feet + dist2.feet; // adding inches sum.inch = dist1.inch + dist2.inch; // changing to feet if inch is greater than 12 while (sum.inch>= 12) ( ++sum.feet; sum.inch = sum.inch - 12; ) printf("Sum of distances = %d\'-%.1f "", sum.feet, sum.inch); return 0; )

Salida

 Primera distancia Ingrese pies: 12 Ingrese pulgada: 7.9 Segunda distancia Ingrese pies: 2 Ingrese pulgada: 9.8 Suma de distancias = 15'-5.7 "

Tipo de palabra clave def

Usamos la typedefpalabra clave para crear un nombre de alias para los tipos de datos. Se usa comúnmente con estructuras para simplificar la sintaxis de declaración de variables.

Este codigo

estructura Distancia (pies int; pulgada flotante;); int main () (estructura Distancia d1, d2;)

es equivalente a

typedef struct Distancia (pies int; pulgada flotante;) distancias; int main () (distancias d1, d2;)

Estructuras anidadas

Puede crear estructuras dentro de una estructura en la programación en C. Por ejemplo,

estructura compleja (int imag; flotar real;); número de estructura (estructura compleja comp; enteros int;) num1, num2;

Supongamos que desea establecer la imagen de la variable num2 en 11. Así es como puede hacerlo:

 num2.comp.imag = 11; 

¿Por qué estructuras en C?

Suponga que desea almacenar información sobre una persona: su nombre, número de ciudadanía y salario. Puede crear diferentes variables nombre, citNo y salario para almacenar esta información.

¿Qué sucede si necesita almacenar información de más de una persona? Ahora, necesita crear diferentes variables para cada información por persona: nombre1, citNo1, salario1, nombre2, citNo2, salario2, etc.

Un mejor enfoque sería tener una colección de toda la información relacionada bajo una Personestructura de nombre único y usarla para cada persona.

Más sobre estructura

  • Estructuras y punteros
  • Pasar estructuras a una función

Articulos interesantes...