a que refiere esta sintaxis

Iniciado por fafafa01, 3 Enero 2017, 08:34 AM

0 Miembros y 1 Visitante están viendo este tema.

fafafa01

typedef struct{
char *name;
int nia;
}datos;
struct elemento_t{
datos valor;
struct elemento_t *next;
};
typedef struct elemento_t elemento_type;
typedef struct{
int tamanho;
int num_elementos;
double densidad_deseada;
elemento_type **tabla;
}tabla_type;


el primer typedef define un tipo de datos llamado "datos" que es una estructura que tiene un puntero a char y un entero.
luego define otra estructura llamada elemento_t que adentro contiene una estructura tipo "datos" creada anteriormente y que tiene el nombre valor, y un puntero a la misma estructura.
luego lo que hace es definir a la estructura ultima como un tipo de dato llamado elemento_type.
por ultimo define una estructura como table_type que contiene dos enteros, un double y un apuntador que apunta a apuntadores que apuntan al tipo de dato elemento_type.

AHORA BIEN, MI DUDA VIENE EN EL SIGUIENTE PEDAZO DE CÓDIGO:


tabla_type table;
int i;
table.tamanho=20;
tabla.num_elementos=0;
tabla.densidad_deseada=0.25;
tabla.tabla = (elemento_type **) malloc (sizeof(elemento_type *)*table.tamanho);
for (i=0;i<table.tamanho;i++)
{
     tabla.tabla[i]=NULL;
}


¿a que se refiere la expresión "tabla.tabla"?

se que tabla es un puntero que apunta a un puntero que apunta a una estructura de tipo elemento_type

lo que me confunde es el signo de puntuación, según entiendo con el signo de puntuación se entra a los miembros de una estructura.

fafafa01

#1
creo que los ultimos tres tabla esta mal, se refiere al nombre de la estructura que es table.

acá el link de donde saque el código:

http://www.it.uc3m.es/abel/as/MMC/M2/HashTable_es.html

ivancea96

Sí, debería poner table.

Y con respecto al punto, sí, como dices. Accedes a un elemento de la estructura.