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

Estrutura C

Estrutura C


Neste tutorial, você aprenderá sobre os tipos de estrutura em programação C com a ajuda de exemplos.

Na programação C, uma struct (ou estrutura) é uma coleção de variáveis ​​(podem ser de diferentes tipos) sob um único nome.


Definir estruturas


Antes de criar variáveis ​​de estrutura, você precisa definir seu tipo de dados. Para definir uma estrutura, o struct palavra-chave é usada.

Sintaxe da estrutura

struct structureName {
  dataType member1;
  dataType member2;
  ...
};

Por exemplo,
struct Person {
  char name[50];
  int citNo;
  float salary;
};

Aqui, um tipo derivado struct Person é definido. Agora, você pode criar variáveis ​​desse tipo.

Criar variáveis ​​de estrutura


Quando um struct tipo é declarado, nenhum armazenamento ou memória é alocado. Para alocar memória de um determinado tipo de estrutura e trabalhar com ela, precisamos criar variáveis.

Veja como criamos variáveis ​​de estrutura:
struct Person {
  // code
};

int main() {
  struct Person person1, person2, p[20];
  return 0;
}

Outra maneira de criar um struct variável é:
struct Person {
   // code
} person1, person2, p[20];

Em ambos os casos,

Acessar membros de uma estrutura


Existem dois tipos de operadores usados ​​para acessar membros de uma estrutura.
  1. . - Operador membro
  2. -> - Operador de ponteiro de estrutura (será discutido no próximo tutorial)

Suponha que você queira acessar o salário de pessoa2 . Veja como você pode fazer isso.
person2.salary

Exemplo 1:estruturas C++

#include <stdio.h>
#include <string.h>

// create struct with person1 variable
struct Person {
  char name[50];
  int citNo;
  float salary;
} person1;

int main() {

  // assign value to name of person1
  strcpy(person1.name, "George Orwell");

  // assign values to other person1 variables
  person1.citNo = 1984;
  person1. salary = 2500;

  // print struct variables
  printf("Name: %s\n", person1.name);
  printf("Citizenship No.: %d\n", person1.citNo);
  printf("Salary: %.2f", person1.salary);

  return 0;
}

Saída
Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

Neste programa, criamos um struct chamado Person . Também criamos uma variável de Person chamado pessoa1 .

Em main() , atribuímos valores às variáveis ​​definidas em Person para a pessoa1 objeto.
strcpy(person1.name, "George Orwell");
person1.citNo = 1984;
person1. salary = 2500;

Observe que usamos strcpy() função para atribuir o valor a person1.name .

Isso ocorre porque nome é um char array (C-string) e não podemos usar o operador de atribuição = com ele depois de declararmos a string.



Por fim, imprimimos os dados de person1 .

Definição de tipo de palavra-chave


Usamos o typedef palavra-chave para criar um nome de alias para tipos de dados. É comumente usado com estruturas para simplificar a sintaxe de declarar variáveis.

Por exemplo, vejamos o seguinte código:
struct Distance{
  int feet;
  float inch;
};

int main() {
  struct Distance d1, d2;
}

Podemos usar typedef para escrever um código equivalente com uma sintaxe simplificada:
typedef struct Distance {
  int feet;
  float inch;
} distances;

int main() {
  distances d1, d2;
}

Exemplo 2:definição de tipo C++

#include <stdio.h>
#include <string.h>

// struct with typedef person
typedef struct Person {
  char name[50];
  int citNo;
  float salary;
} person;

int main() {

  // create  Person variable
  person p1;

  // assign value to name of p1
  strcpy(p1.name, "George Orwell");

  // assign values to other p1 variables
  p1.citNo = 1984;
  p1. salary = 2500;

  // print struct variables
  printf("Name: %s\n", p1.name);
  printf("Citizenship No.: %d\n", p1.citNo);
  printf("Salary: %.2f", p1.salary);

  return 0;
}

Saída
Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

Aqui, usamos typedef com o Person estrutura para criar um alias person .
// struct with typedef person
typedef struct Person {
  // code
} person;

Agora, podemos simplesmente declarar um Person variável usando o person pseudônimo:
// equivalent to struct Person p1
person p1;

Estruturas aninhadas


Você pode criar estruturas dentro de uma estrutura na programação C. Por exemplo,
struct complex {
  int imag;
  float real;
};

struct number {
  struct complex comp;
  int integers;
} num1, num2;

Suponha que você queira definir imag de num2 variável para 11 . Veja como você pode fazer isso:
num2.comp.imag = 11;

Exemplo 3:estruturas aninhadas em C++

#include <stdio.h>

struct complex {
  int imag;
  float real;
};

struct number {
  struct complex comp;
  int integer;
} num1;

int main() {

  // initialize complex variables
  num1.comp.imag = 11;
  num1.comp.real = 5.25;

  // initialize number variable
  num1.integer = 6;
	
  // print struct variables
  printf("Imaginary Part: %d\n", num1.comp.imag);
  printf("Real Part: %.2f\n", num1.comp.real);
  printf("Integer: %d", num1.integer);

  return 0;
}

Saída
Imaginary Part: 11
Real Part: 5.25
Integer: 6

Por que structs em C?


Suponha que você queira armazenar informações sobre uma pessoa:seu nome, número de cidadania e salário. Você pode criar diferentes variáveis ​​nome , citNo e salário para armazenar esta informação.

E se você precisar armazenar informações de mais de uma pessoa? Agora, você precisa criar variáveis ​​diferentes para cada informação por pessoa:name1 , citNo1 , salário1 , nome2 , citNo2 , salário2 , etc

Uma abordagem melhor seria ter uma coleção de todas as informações relacionadas sob um único nome Person estrutura e usá-lo para cada pessoa.

Mais sobre estrutura


Linguagem C

  1. C# Hello World - Seu primeiro programa em C#
  2. Palavras-chave e identificadores C#
  3. Variáveis ​​C# e tipos de dados (primitivos)
  4. Operadores C#
  5. Operadores C# Bitwise e Bit Shift
  6. Entrada e saída básica em C#
  7. Expressões, instruções e blocos em C# (com exemplos)
  8. Comentários em C#
  9. Instrução C# switch
  10. C# ternário (? :) Operador