C/Estruturas

En Galilibros, o Wikibooks en galego.
< C
C
← Volver a Cadeas de caracteres Estruturas Seguir con Unións


Unha estrutura de datos é un tipo definido polo programador que está formado por un conxunto definido de datos de calquera tipo. Estes datos son os “elementos” da estrutura.

Definición[editar]

Para utilizar as estruturas, primeiro hai que definir unha. A definición dunha estrutura consiste en asignarlle un identificador a un tipo de estrutura, que estará formada por unha serie de variables internas que se declaran dentro da definición da estrutura. A sintaxe fundamental sería a seguinte:

// Definición da estrutura:
struct identificador{
  tipo1 variable1;
  tipo2 variable2;
  // ...
  tipon variable n;
}

Unha vez definida unha estrutura, pódense declarar variables dese tipo. Esta sería a sintaxe fundamental da declaración dunha variable do tipo dunha estrutura previamente definida:

// Declaración de variables do tipo da estrutura:
struct identificador variable;

Velaquí un exemplo, que quizais facilite a comprensión das estruturas:

// Definición da estrutura:
struct t_data
{
  int dia;
  int mes;
  int ano;
}

// Declaración de variables do tipo da estrutura:
struct t_data data_inicial, data_final;

Tamén é posible definir unha estrutura durante a declaración dunha variable dese tipo. A súa sintaxe sería a seguinte:

struct identificador {
  tipo1 variable1;
  tipo2 variable2;
  // ...
  tipon variable n;
} variable;

Cómpre mencionar que habitualmente asígnaselles un identificador personalizado ás estruturas para poder substituír «struct identificador» por un simple «identificador» á hora de declarar variables do tipo da estrutura. Isto pode facerse de maneira especial coas estruturas na súa definición:

typedef struct {
  // Definición da estrutura.
} identificador;

Deste xeito, abondará co «identificador» para declarar unha variable do tipo da estrutura:

identificador variable;

Ademais, é habitual que o identificador das estruturas comece por letra maiúscula.

Traballar con estruturas[editar]

Para traballar individualmente cun dos datos dunha estrutura, utilízase o identificador da estrutura e mailo identificador da súa variable interna á que se quere facer referencia, separados por un punto. A sintaxe fundamental sería:

estrutura.variable_interna

Valga este exemplo para ilustralo mellor:

// Continuando co exemplo anterior, poderíamos traballar só co día da
// variable "data_inicial" facendo referencia a el como:
data_inicial.dia

Ás veces non se vai contar co identificador da estrutura con cuxos datos imos traballar, senón que só disporemos dun punteiro a dita estrutura. Neste caso, para facer referencia a un dos datos da estrutura, farase o seguinte:

punteiro->dato

Ademais, na declaración dunha estrutura pódense inicializar os valores das variables que contén. O que si, isto só pode facerse para asignarlle valores iniciais a todas as variables da estrutura, e na orde en que se declararon ao declarar o tipo de estrutura. Nada mellor para entender o modo de facelo que seguir co exemplo anterior:

// Declaración inicializada de variables do tipo da estrutura antes declarada:
struct t_data data_inicial={18,5,1991}, data_final={28,1,2010};

Dentro dunha estrutura pódese meter calquera tipo de dato. Podemos meter calquera dos datos fundamentais, pero tamén podemos meter, por exemplo, matrices, punteiros e mesmo outras estruturas. De aí a súa versatilidade e a importancia de coñecer a súa existencia e comprender o seu funcionamento. Ademais, pode que comprender o funcionamento das estruturas facilite posteriormente a comprensión do funcionamento das clases de C++.

Campos de bits[editar]

O campo de bits é unha estrutura utilizada con moi pouca frecuencia. Esta estrutura, en vez de utilizar variables con tipos diferentes, está formada polas partes dun enteiro. É dicir, divídense os bits que conforman un tipo enteiro en varios elementos. A seguinte é a súa sintaxe fundamental:

struct identificador {
  tipo
  elemento1: bits1,
  elemento2: bits2,
  // ...
  elementon: bitsn;
};

Un exemplo podería ser o seguinte:

struct campodebits { 
  unsigned short
  campo_1: 6, // 6 bits
  campo_2: 6,
  campo_3: 1,
  campo_4: 1,
  campo_5: 2;
};

Á hora de traballar cos elementos da estrutura, faise como con calquera outra estrutura.


C
← Volver a Cadeas de caracteres Estruturas Seguir con Unións