Por que usar estrutura?
Em C, há casos em que precisamos armazenar múltiplos atributos de uma entidade. Não é necessário que uma entidade possua todas as informações de um único tipo. Pode ter diferentes atributos de diferentes tipos de dados. Por exemplo, uma entidade Estudante pode ter seu nome (string), número do rolo (int), marcas (float). Para armazenar esse tipo de informação sobre um aluno da entidade, temos as seguintes abordagens:
- Construa matrizes individuais para armazenar nomes, números de rolos e marcas.
- Use uma estrutura de dados especial para armazenar a coleção de diferentes tipos de dados.
Vejamos a primeira abordagem em detalhes.
#include void main () { char names[2][10],dummy; // 2-dimensioanal character array names is used to store the names of the students int roll_numbers[2],i; float marks[2]; for (i=0;i<3;i++) { printf('enter the name, roll number, and marks of student %d',i+1); scanf('%s %d %f',&names[i],&roll_numbers[i],&marks[i]); scanf('%c',&dummy); enter will be stored into dummy character at each iteration } printf('printing details ... '); for (i="0;i<3;i++)" printf('%s %f ',names[i],roll_numbers[i],marks[i]); < pre> <p> <strong>Output</strong> </p> <pre> Enter the name, roll number, and marks of the student 1Arun 90 91 Enter the name, roll number, and marks of the student 2Varun 91 56 Enter the name, roll number, and marks of the student 3Sham 89 69 Printing the Student details... Arun 90 91.000000 Varun 91 56.000000 Sham 89 69.000000 </pre> <p>The above program may fulfill our requirement of storing the information of an entity student. However, the program is very complex, and the complexity increase with the amount of the input. The elements of each of the array are stored contiguously, but all the arrays may not be stored contiguously in the memory. C provides you with an additional and simpler approach where you can use a special data structure, i.e., structure, in which, you can group all the information of different data type regarding an entity.</p> <h2>What is Structure</h2> <p>Structure in c is a user-defined data type that enables us to store the collection of different data types. Each element of a structure is called a member. Structures ca; simulate the use of classes and templates as it can store various information </p> <p>The <strong>,struct</strong> keyword is used to define the structure. Let's see the syntax to define the structure in c.</p> <pre> struct structure_name { data_type member1; data_type member2; . . data_type memeberN; }; </pre> <p>Let's see the example to define a structure for an entity employee in c.</p> <pre> struct employee { int id; char name[20]; float salary; }; </pre> <p>The following image shows the memory allocation of the structure employee that is defined in the above example.</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure.webp" alt="c structure memory allocation"> <p>Here, <strong>struct</strong> is the keyword; <strong>employee</strong> is the name of the structure; <strong>id</strong> , <strong>name</strong> , and <strong>salary</strong> are the members or fields of the structure. Let's understand it by the diagram given below:</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure-2.webp" alt="c structure"> <h2>Declaring structure variable</h2> <p>We can declare a variable for the structure so that we can access the member of the structure easily. There are two ways to declare structure variable:</p> <ol class="points"> <li>By struct keyword within main() function</li> <li>By declaring a variable at the time of defining the structure.</li> </ol> <p> <strong>1st way:</strong> </p> <p>Let's see the example to declare the structure variable by struct keyword. It should be declared within the main function.</p> <pre> struct employee { int id; char name[50]; float salary; }; </pre> <p>Now write given code inside the main() function.</p> <pre> struct employee e1, e2; </pre> <p>The variables e1 and e2 can be used to access the values stored in the structure. Here, e1 and e2 can be treated in the same way as the objects in <a href="/c-tutorial">C++</a> and <a href="/java-tutorial">Java</a> .</p> <p> <strong>2nd way:</strong> </p> <p>Let's see another way to declare variable at the time of defining the structure.</p> <pre> struct employee { int id; char name[50]; float salary; }e1,e2; </pre> <h3>Which approach is good</h3> <p>If number of variables are not fixed, use the 1st approach. It provides you the flexibility to declare the structure variable many times.</p> <p>If no. of variables are fixed, use 2nd approach. It saves your code to declare a variable in main() function.</p> <h2>Accessing members of the structure</h2> <p>There are two ways to access structure members:</p> <ol class="points"> <li>By . (member or dot operator)</li> <li>By -> (structure pointer operator)</li> </ol> <p>Let's see the code to access the <em>id</em> member of <em>p1</em> variable by. (member) operator.</p> <pre> p1.id </pre> <h3>C Structure example</h3> <p>Let's see a simple example of structure in C language.</p> <pre> #include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, 'Sonoo Jaiswal');//copying string into char array //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal </pre> <p>Let's see another example of the structure in <a href="/c-programming-language-tutorial">C language</a> to store many employees information.</p> <pre> #include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, 'Sonoo Jaiswal');//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, 'James Bond'); e2.salary=126000; //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); printf( 'employee 1 salary : %f ', e1.salary); //printing second employee information printf( 'employee 2 id : %d ', e2.id); printf( 'employee 2 name : %s ', e2.name); printf( 'employee 2 salary : %f ', e2.salary); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000 </pre> <hr></3;i++)>
O programa acima pode atender ao nosso requisito de armazenar as informações de um aluno da entidade. No entanto, o programa é muito complexo e a complexidade aumenta com a quantidade de entrada. Os elementos de cada array são armazenados de forma contígua, mas nem todos os arrays podem ser armazenados de forma contígua na memória. C fornece uma abordagem adicional e mais simples onde você pode usar uma estrutura de dados especial, ou seja, uma estrutura na qual você pode agrupar todas as informações de diferentes tipos de dados sobre uma entidade.
O que é estrutura
Estrutura em c é um tipo de dados definido pelo usuário que nos permite armazenar a coleção de diferentes tipos de dados. Cada elemento de uma estrutura é chamado de membro. Estruturas ca; simular o uso de classes e templates, pois pode armazenar diversas informações
O ,estrutura palavra-chave é usada para definir a estrutura. Vamos ver a sintaxe para definir a estrutura em c.
struct structure_name { data_type member1; data_type member2; . . data_type memeberN; };
Vejamos o exemplo para definir uma estrutura para um funcionário da entidade em c.
struct employee { int id; char name[20]; float salary; };
A imagem a seguir mostra a alocação de memória da estrutura funcionário definida no exemplo acima.
Aqui, estrutura é a palavra-chave; funcionário é o nome da estrutura; eu ia , nome , e salário são os membros ou campos da estrutura. Vamos entender pelo diagrama abaixo:
Declarando variável de estrutura
Podemos declarar uma variável para a estrutura para que possamos acessar facilmente o membro da estrutura. Existem duas maneiras de declarar variável de estrutura:
- Por palavra-chave struct na função main()
- Declarando uma variável no momento de definir a estrutura.
1ª maneira:
Vejamos o exemplo para declarar a variável de estrutura pela palavra-chave struct. Deve ser declarado dentro da função principal.
struct employee { int id; char name[50]; float salary; };
Agora escreva o código fornecido dentro da função main().
struct employee e1, e2;
As variáveis e1 e e2 podem ser utilizadas para acessar os valores armazenados na estrutura. Aqui, e1 e e2 podem ser tratados da mesma forma que os objetos em C++ e Java .
alfabeto e números
2ª maneira:
Vejamos outra forma de declarar variável na hora de definir a estrutura.
struct employee { int id; char name[50]; float salary; }e1,e2;
Qual abordagem é boa
Se o número de variáveis não for fixo, use a 1ª abordagem. Ele fornece flexibilidade para declarar a variável de estrutura muitas vezes.
Se não. das variáveis são fixas, use a 2ª abordagem. Ele salva seu código para declarar uma variável na função main().
Acessando membros da estrutura
Existem duas maneiras de acessar membros da estrutura:
- Por . (membro ou operador de ponto)
- Por -> (operador de ponteiro de estrutura)
Vamos ver o código para acessar o eu ia membro de p1 variável por. operador (membro).
p1.id
Exemplo de estrutura C
Vejamos um exemplo simples de estrutura em linguagem C.
#include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, 'Sonoo Jaiswal');//copying string into char array //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); return 0; }
Saída:
employee 1 id : 101 employee 1 name : Sonoo Jaiswal
Vejamos outro exemplo da estrutura em Linguagem C para armazenar muitas informações de funcionários.
#include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, 'Sonoo Jaiswal');//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, 'James Bond'); e2.salary=126000; //printing first employee information printf( 'employee 1 id : %d ', e1.id); printf( 'employee 1 name : %s ', e1.name); printf( 'employee 1 salary : %f ', e1.salary); //printing second employee information printf( 'employee 2 id : %d ', e2.id); printf( 'employee 2 name : %s ', e2.name); printf( 'employee 2 salary : %f ', e2.salary); return 0; }
Saída:
employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000
3;i++)>