Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Estructuras C y punteros

Estructuras C y punteros

En este tutorial, aprenderá a usar punteros para acceder a miembros de estructuras en programación C. También aprenderá a asignar dinámicamente memoria de tipos de estructuras.

Antes de aprender cómo se pueden usar los punteros con estructuras, asegúrese de consultar estos tutoriales:


C Punteros a estructura

Así es como puede crear punteros a estructuras.

struct name {
    member1;
    member2;
    .
    .
};

int main()
{
    struct name *ptr, Harry;
}

Aquí, ptr es un puntero a struct .


Ejemplo:Acceder a miembros usando Pointer

Para acceder a los miembros de una estructura usando punteros, usamos el -> operador.

#include <stdio.h>
struct person
{
   int age;
   float weight;
};

int main()
{
    struct person *personPtr, person1;
    personPtr = &person1;   

    printf("Enter age: ");
    scanf("%d", &personPtr->age);

    printf("Enter weight: ");
    scanf("%f", &personPtr->weight);

    printf("Displaying:\n");
    printf("Age: %d\n", personPtr->age);
    printf("weight: %f", personPtr->weight);

    return 0;
}

En este ejemplo, la dirección de persona1 se almacena en personPtr puntero usando personPtr = &person1; .

Ahora, puede acceder a los miembros de person1 usando el personPtr puntero.

Por cierto,


Asignación de memoria dinámica de estructuras

Antes de continuar con esta sección, le recomendamos que verifique la asignación de memoria dinámica de C.

A veces, la cantidad de variables de estructura que declaró puede ser insuficiente. Es posible que deba asignar memoria durante el tiempo de ejecución. Así es como puede lograr esto en la programación C.

Ejemplo:asignación de memoria dinámica de estructuras

#include <stdio.h>
#include <stdlib.h>
struct person {
   int age;
   float weight;
   char name[30];
};

int main()
{
   struct person *ptr;
   int i, n;

   printf("Enter the number of persons: ");
   scanf("%d", &n);

   // allocating memory for n numbers of struct person
   ptr = (struct person*) malloc(n * sizeof(struct person));

   for(i = 0; i < n; ++i)
   {
       printf("Enter first name and age respectively: ");

       // To access members of 1st struct person,
       // ptr->name and ptr->age is used

       // To access members of 2nd struct person,
       // (ptr+1)->name and (ptr+1)->age is used
       scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
   }

   printf("Displaying Information:\n");
   for(i = 0; i < n; ++i)
       printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age);

   return 0;
}

Cuando ejecute el programa, la salida será:

Enter the number of persons:  2
Enter first name and age respectively:  Harry 24
Enter first name and age respectively:  Gary 32
Displaying Information:
Name: Harry	Age: 24
Name: Gary	Age: 32

En el ejemplo anterior, n número de variables de estructura se crean donde n es ingresado por el usuario.

Para asignar la memoria para n número de estructura persona , usamos,

ptr = (struct person*) malloc(n * sizeof(struct person));

Luego, usamos el ptr puntero para acceder a elementos de persona .


Lenguaje C

  1. Identificadores y palabras clave de C#
  2. Clase y objeto de C#
  3. Clase y método abstractos de C#
  4. C# Clase parcial y método parcial
  5. Clase y método sellados de C#
  6. estructura C#
  7. C Palabras clave e identificadores
  8. Punteros C
  9. Relación entre matrices y punteros
  10. Direcciones y punteros de C Pass
  11. estructura C