La declaración directa y la diferencia entre Struct y typedef struct en C

Atika Islam 15 febrero 2024
  1. Crear un proyecto C
  2. Estructura en lenguaje C
  3. typedef en C
  4. Estructura typedef en C
  5. Reenviar Declaración en C
La declaración directa y la diferencia entre Struct y typedef struct en C

Este tutorial explicará el concepto de estructura y el uso de la palabra clave typedef. Veremos también el concepto de declaración anticipada en C.

Comencemos por crear un proyecto C.

Crear un proyecto C

  • El primer paso es instalar un compilador. Pasos para descargar e instalar el compilador de C.
  • En el siguiente paso, cree un proyecto vacío en lenguaje C haciendo clic en Archivo en la barra de menú.

    creando nuevo proyecto

    seleccionando el tipo de proyecto

  • Guarde el archivo antes de compilar.
  • Ejecuta el código. Haciendo clic en compilar y ejecutar.

    proceso de ejecución de código

  • Aparecerá una pantalla de ejecución.

    pantalla de ejecución

Estructura en lenguaje C

Struct se usa en lenguaje C para hacer el grupo de miembros de datos relacionado. Los miembros de la estructura no tienen el mismo tipo de datos y el grupo contiene diferentes variables guardadas en un solo lugar.

Como sabemos, esa matriz tiene el mismo tipo de miembros, pero en una estructura, los miembros de datos pueden ser de diferentes tipos, como int, float y char. El siguiente fragmento de código describirá cómo hacer una estructura en lenguaje C.

En este código hemos declarado la variable en el alcance local en la función principal escribiendo el nombre de la estructura y su variable.

Ejemplo de código:

#include <stdio.h>
struct Student {  // Structure declaration
  int rollno;     // Member (int variable)
  char gender;    // Member (char variable)
};                // End the structure with a semicolon
int main() {
  struct Student s1;  // Making a variable of a struct
  s1.rollno = 3;      // assigning value to every member using dot operator
  s1.gender = 'M';
  printf("The name and gender of a student is %d and %c", s1.rollno, s1.gender);
}

Producción :

The name and gender of a student is 3 and M

Declararemos la variable en el ámbito global en el siguiente código.

Ejemplo de código:

#include <stdio.h>

struct Student {  // Structure declaration
  int rollno;     // Member (int variable)
  char gender;    // Member (char variable)
} s1;  // Declared a variable s1 before ending the struct with a semicolon
int main() {
  s1.rollno = 3;  // calling a member using a variable
  s1.gender = 'M';
  printf("The name and gender of a student is %d and %c", s1.rollno, s1.gender);
}

Producción :

The name and gender of a student is 3 and M

Nuevamente, esto dará el mismo resultado, pero en el fragmento de código anterior, hemos declarado la variable s1 globalmente. No tenemos que definir una estructura en la función main().

typedef en C

typedef se usa en el lenguaje C para renombrar nuestro tipo de datos existente con uno nuevo.

Sintaxis:

typedef<existing_name><alias_name>

Primero tenemos que escribir la palabra reservada de typedef, luego el nombre existente en lenguaje C, y el nombre que queremos asignar. Después de usar typedef, usaremos alias_name en todo el programa.

Código:

#include <stdio.h>
void main() {
  typedef int integer;  // assigning int a new name of the integer
  integer a = 3;        // variable is declared by integer
  integer b = 4;
  printf("The values of a and b are %d and %d", a,
         b);  // print value of a and b on the screen
}

Producción :

The values of a and b are 3 and 4

Estructura typedef en C

Hemos visto que debemos escribir toda la definición de la estructura en la función main(). En lugar de escribir struct student cada vez, podemos reemplazar el tipo anterior usando typedef con un nuevo tipo.

Typedef nos ayuda a crear nuestro tipo en lenguaje C.

Ejemplo de código:

#include <stdio.h>   // including header file of input/output
#include <string.h>  // including header file of string

typedef struct Books {  // old type
  char title[30];       // data members of the struct book
  char author[30];
  char subject[50];
  int id;
} Book;  // new type

void main() {
  Book b1;  // variable of a new type

  strcpy(b1.title, "C Programming");          // copy string in title
  strcpy(b1.author, "Robert Lafore");         // copy string in author
  strcpy(b1.subject, "Typedef Struct in C");  // copy string in subject
  b1.id = 564555;                             // assigning id to variable

  printf("Book title is : %s\n", b1.title);  // printing book title on screen
  printf("Book author is : %s\n", b1.author);
  printf("Book subject is : %s\n", b1.subject);
  printf("Book id is  : %d\n", b1.id);
}

Producción :

Book title is : C Programming
Book author is : Robert Lafore
Book subject is : Typedef Struct in C
Book id is  : 564555

En el código anterior, hemos definido un nuevo tipo de estructura al final de la estructura antes del punto y coma. Luego, usamos ese nuevo tipo en la función main().

Este typedef ha reducido el esfuerzo de definir struct cada vez en la función main() para hacer una variable.

Reenviar Declaración en C

La declaración directa es una declaración que precede a una definición real de una estructura. La definición no está disponible, pero podemos hacer referencia al tipo declarado debido a la declaración directa, que es una declaración previa.

Este método se utiliza para definir y declarar una función. En lugar de definir una función encima de la función main(), podemos declararla en la parte superior y definirla en la parte inferior, llamada declaración directa.

Ejemplo de código:

#include <stdio.h>
int add(int x, int y);  // (prototype)function declaration

void main() {
  int n1, n2, sum;
  scanf("%d %d", &n1, &n2);                    // taking numbers from user
  sum = add(n1, n2);                           // call to the add function
  printf("The sum of n1 and n2 is %d ", sum);  // display sum on the screen
}
int add(int x, int y)  // function definition
{
  int result;
  result = x + y;
  return result;  // returning the result to the main function
}

El fragmento de código anterior muestra que hemos declarado un prototipo de función en la parte superior de la función main(). Llamamos a la función add() en main antes de definirla, pero funciona correctamente porque el prototipo ya ha sido definido.

Esto se debe a la declaración hacia adelante.

Producción :

4 5
The sum of n1 and n2 is 9