Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

Estruturas e ponteiros C

Estruturas C e ponteiros


Neste tutorial, você aprenderá a usar ponteiros para acessar membros de structs na programação C. Você também aprenderá a alocar memória dinamicamente de tipos de estrutura.

Antes de aprender sobre como ponteiros podem ser usados ​​com structs, certifique-se de verificar estes tutoriais:


Ponteiros C para struct


Veja como você pode criar ponteiros para structs.
struct name {
    member1;
    member2;
    .
    .
};

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

Aqui, ptr é um ponteiro para struct .

Exemplo:acessar membros usando o ponteiro


Para acessar membros de uma estrutura usando ponteiros, usamos o -> 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;
}

Neste exemplo, o endereço de person1 é armazenado no personPtr ponteiro usando personPtr = &person1; .

Agora, você pode acessar os membros de person1 usando o personPtr ponteiro.



A propósito,

Alocação dinâmica de memória de estruturas


Antes de prosseguir nesta seção, recomendamos que você verifique a alocação de memória dinâmica C.

Às vezes, o número de variáveis ​​de estrutura que você declarou pode ser insuficiente. Você pode precisar alocar memória durante o tempo de execução. Veja como você pode conseguir isso na programação C.

Exemplo:alocação dinâmica de memória de estruturas

#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;
}

Ao executar o programa, a saída 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

No exemplo acima, n número de variáveis ​​de estrutura são criadas onde n é inserido pelo usuário.

Para alocar a memória para n número de pessoa da estrutura , nós costumavamos,
ptr = (struct person*) malloc(n * sizeof(struct person));

Em seguida, usamos o ptr ponteiro para acessar elementos de person .

Linguagem C

  1. Palavras-chave e identificadores C#
  2. Classe e objeto C#
  3. Classe abstrata e método C#
  4. C# Classe Parcial e Método Parcial
  5. Classe e método selados em C#
  6. Estrutura C#
  7. C Palavras-chave e Identificadores
  8. Ponteiros C
  9. Relação entre arrays e ponteiros
  10. Endereços e ponteiros de passagem C