Programación C · 3 min read · Nov 18, 2025

Tutorial de Programación en C de Linux Parte 26 - Estructuras y Funciones

En uno de nuestros tutoriales anteriores sobre la línea de comandos, tocamos el concepto de Estructuras. Usando ejemplos fáciles de entender, discutimos cosas básicas como qué son las estructuras y por qué son necesarias. Ampliando eso, en este tutorial, discutiremos cómo se pueden usar juntas las estructuras y las funciones.

Estructuras y Funciones en el Lenguaje de Programación C

Antes de comenzar, refresquemos rápidamente cómo se declara una estructura. Aquí hay un ejemplo:

struct emp_details {  
 
 int emp_code;  
 int emp_age;  
 
};

Así que aquí, la palabra clave struct - que es obligatoria si estás definiendo una estructura en C - significa el comienzo de la declaración. Es seguida por una etiqueta, o puedes decir el nombre de la estructura. Luego, dentro de corchetes, tienes dos variables enteras, que están agrupadas como parte de esta estructura.

Para usar esta estructura, primero necesitas definir su instancia u objeto. Puedes hacerlo de la siguiente manera:

emp_details obj;

Y luego los miembros de la estructura se pueden acceder de la siguiente manera:

obj.emp_code  
obj.emp_age

Ahora, pasando a las funciones, una función puede devolver estructuras así como aceptar estructuras en forma de argumentos. Aquí hay un ejemplo:

#include   
  
struct emp_details {  
  
 int emp_code;  
 int emp_age;  
  
};  
  
struct emp_details fill(int code, int age)  
{  
 struct emp_details obj;  
 obj.emp_code = code;  
 obj.emp_age = age;  
  
 return obj;  
}  
  
int main()  
{  
 int x,y;  
  
 printf("Ingrese el código del empleado: ");  
 scanf("%d", &x);  
  
 printf("\n Ingrese la edad del empleado: ");  
 scanf("%d", &y);  
  
 struct emp_details new_obj;  
  
 new_obj = fill(x,y);  
  
 printf("\n El código del empleado y la edad que ingresaste son: %d y %d", new_obj.emp_code, new_obj.emp_age);  
  
 return 0;  
}

Así que aquí, en este ejemplo, tenemos una función ‘fill’ que acepta dos enteros, los trata como código y edad, llena una estructura basada en esta información y devuelve la estructura por valor al llamador de la función.

Ahora, como mencioné anteriormente en una declaración anterior, las estructuras también se pueden pasar como argumentos de función. A continuación se muestra un ejemplo, donde la función ‘fill’ acepta una estructura ‘emp_details’ como argumento.

#include   
  
struct emp_details {  
  
 int emp_code;  
 int emp_age;  
  
};  
  
void fill(struct emp_details obj)  
{  
 printf("\n El código del empleado y la edad que ingresaste son: %d y %d", obj.emp_code, obj.emp_age);  
}  
  
int main()  
{  
 int x,y;  
  
 printf("Ingrese el código del empleado: ");  
 scanf("%d", &x);  
  
 printf("\n Ingrese la edad del empleado: ");  
 scanf("%d", &y);  
  
 struct emp_details new_obj;  
 new_obj.emp_code = x;  
 new_obj.emp_age = y;  
  
 fill(new_obj);  
  
 return 0;  
}

Y aquí está la salida en mi caso:

Ingrese el código del empleado: 36   
 Ingrese la edad del empleado: 29   
   
 El código del empleado y la edad que ingresaste son: 36 y 29

Pasando a otro tema, al igual que las variables normales, los arreglos y más, también pueden existir punteros a estructuras. Aquí hay un ejemplo:

struct emp_details *ptr;

Como siempre, los punteros son útiles en caso de que el tamaño de la estructura sea grande y la estés enviando como argumento a una función. Idealmente, aquí está cómo puedes acceder a las variables de la estructura a través de objetos punteros:

(*ptr).emp_code  
(*ptr).emp_age

Pero por simplicidad, C permite omitir * y . y usar ‘->’ en su lugar. A continuación se muestra un ejemplo:

ptr->emp_code  
ptr->emp_age 

Aquí hay un ejemplo que utiliza un puntero de estructura:

#include   
  
struct emp_details {  
  
 int emp_code;  
 int emp_age;  
  
};  
  
void fill(struct emp_details *obj)  
{  
 printf("\n El código del empleado y la edad que ingresaste son: %d y %d", obj->emp_code, obj->emp_age);  
}  
  
int main()  
{  
 int x,y;  
  
 printf("Ingrese el código del empleado: ");  
 scanf("%d", &x);  
  
 printf("\n Ingrese la edad del empleado: ");  
 scanf("%d", &y);  
  
 struct emp_details new_obj;  
 new_obj.emp_code = x;  
 new_obj.emp_age = y;  
  
 fill(&new_obj);  
  
 return 0;  
}

Si bien este es el mismo ejemplo que usamos anteriormente, los cambios - ya que ahora estamos usando un puntero de estructura - están resaltados en negrita.

Conclusión

En este tutorial, ampliamos nuestra comprensión de las estructuras al discutir cómo se pueden usar juntas las funciones y las estructuras. Se te anima a probar los ejemplos que usamos aquí en tu sistema local. En caso de cualquier duda o consulta, deja un comentario a continuación.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.