Está en la página 1de 2

Facultad de Ingeniería

Programa de Ingeniería de Sistemas


Programación I


Estructuras (structs)
Una estructura (struct) permite agrupar variables de varios tipos bajo un mismo nombre.

De esta forma es posible crear elementos de datos complejos, basándose en los tipos
básicos que suministra el lenguaje de programación. Una declaración de estructura define
un tipo, y por lo tanto será posible definir variables de este nuevo tipo. Cada una de estas
variables estará compuesta a su vez por las variables que se definieron en la estructura.

Una declaración típica de estructuras sería:

struct nombre {
componente1 ;
componente2 ;
...
componenteN ;
} lista-variables ;

Cada uno de los componentes de la estructura tiene a su vez la forma de una declaración de
variables: tipo nombre ;

Por ejemplo, para declarar una estructura que permita manejar, de manera conjunta, los
datos de algunos alumnos de determinado curso, se podría hacer:

struct Alumno {
string Nombre;
string codigo;
float Nota1;
float Nota2;
float Nota3;
float NotaFinal;
} A1, A2, A3;

Esta declaración define tres variables (A1, A2 y A3), cada una compuesta a su vez por un

string para el nombre, un string para su número de alumno, tres float para sus notas
parciales, y un float para su nota final.Los elementos que componen una estructura se
acceden mediante la notación:

1
Facultad de Ingeniería
Programa de Ingeniería de Sistemas
Programación I
estructura.componente

Por ejemplo, el string que contiene el nombre del segundo alumno se referencia como:

A1.Nombre

Al igual que con los tipos simples de C, es posible definir vectores compuestos de
estructuras. Así, sería posible hacer la definición anterior aplicable a un mayor número de
alumnos:

struct Alumno {
string nombre[30];
string codigo[7];
float Nota1;
float Nota2;
float Nota3;
float NotaFinal;
} Alumnos[NUM_ALUMNOS];

En este caso, el nombre del primer alumno se referenciaría como:

Alumnos[0].Nombre

En las versiones ANSI de C (como gcc), también es posible asignar estructuras, pasarlas
como argumentos a funciones y retornarlas como resultado de funciones. En el caso del
paso de estructuras como argumento, éstas se pasan por valor (al igual que los tipos de
datos convencionales), por lo que es posible cambiar el contenido de las variables dentro
de la función, pero los cambios NO se propagarán al retornar. Las siguientes acciones y
declaraciones serían válidas:

A2 = A1; /* Asignacion de una estructura a otra */

/* Funcion que retorna una estructura */

struct Alumno NuevoAlumno(char Nombre[]) { ...}

/* Funcion que recibe como argumento una estructura */

void CalculaNota(struct Alumno A1) { ...}

También podría gustarte