Puntero a la estructura en C

C – Puntero a la estructura : En este tutorial, vamos a aprender cómo declarar un puntero a la estructura , cómo elementos de acceso de la estructura utilizando puntero con una ¿ejemplo?

Requisito:

  • Estructuras en lenguaje de programación C.
  • funciones asignación de memoria dinámica en C.

Ejemplo: En este tutorial, vamos a utilizar una estructura para “estudiante”, miembros de la estructura serán “nombre” (tipo de cadena), la “edad” (entero tipo), “número de rollo” (tipo de número entero).

declaración de la estructura

    struct student{
char name[50];
int age;
int rollno;
};

Aquí,

  • struct es la palabra clave para definir una estructura.
  • estudiante es el nombre de la estructura.
  • nombre es el primer miembro de estructura para almacenar edad con un máximo de 50 caracteres, edad es el segundo miembro de estructura para almacenar edad del estudiante, y rollno es el tercer miembro de estructura para almacenar el número rol del estudiante .

Puntero a la estructura declaración

    struct student *ptr;

Asignación de memoria para el puntero a la estructura

    ptr = (struct student*)malloc(sizeof(struct student));

La declaración declarará la memoria para el registro de un estudiante en tiempo de ejecución. Más información sobre la asignación de memoria dinámica en el lenguaje de programación C.

Acceso a miembros de la estructura utilizando puntero

El flecha operador ( -> ) se utiliza para el acceso a los miembros de la estructura utilizando puntero a la estructura . Por ejemplo, queremos elemento de acceso nombre y ptr es el puntero a la estructura . El nombre de sentencia para el acceso será ptr-> nombre de .

programa C para puntero a la estructura

#include <stdio.h>
//structure definition
struct student{
char name[50];
int age;
int rollno;
};
//main function
int main(){
//pointer to structure declaration
struct student *ptr;
//allocating memory at run time
ptr = (struct student*)malloc(sizeof(struct student));
//check memory availability
if( ptr == NULL){
printf("Unable to allocate memory!!!n");
exit(0);
}
//reading values of the structure
printf("Enter student details...n");
printf("Name? ");
scanf("%[^n]", ptr->name); //reads string with spaces
printf("Age? ");
scanf("%d", &ptr->age);
printf("Roll number? ");
scanf("%d", &ptr->rollno);
//printing the details
printf("nEntered details are...n");
printf("Name: %sn", ptr->name);
printf("Age: %dn", ptr->age);
printf("Roll number: %dn", ptr->rollno);
//freeing dynamically allocated memory
free(ptr);
return 0;
}

salida

    Enter student details...
Name? Amit shukla
Age? 21
Roll number? 100
Entered details are...
Name: Amit shukla
Age: 21
Roll number: 100


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *