Como alocar espaço para uma Estrutura em C Programming
Quando a função malloc () em programação C precisa de exercício, ele se volta para a estrutura - uma estrutura após o outro, cada um deles sentado em um novo local na memória, graças a malloc (). Será que eles se perder? Não! Porque cada estrutura mantém o controle da próxima estrutura como elos de uma corrente.
A função malloc () deixa de lado espaço para todos os tipos de variáveis C, incluindo arrays. Ele também pode espremer uma estrutura para a memória, fazendo um pequeno bolso bom para a coisa, todos referenciados a partir de um ponteiro.
Quando o armazenamento de moda para uma nova estrutura usando um ponteiro, ou quando você referência a uma estrutura usando um ponteiro, um novo operador C entra em jogo: a -> coisa, que é oficialmente conhecido como o estrutura de operador de ponteiro. Este operador é equivalente a estrutura de ponteiro do ponto. Considerando que a notação membro da estrutura tradicional parecido com este:
date.day = 14-
o mesmo membro quando referenciados através de um ponteiro estrutura parecida com esta:
date-> day = 14-
Por que a notação Peeker não o * usado? Bem, poderia ser. O formato original para um membro da estrutura referenciado a partir de um ponteiro é o seguinte:
(* Data) .dia = 14-
Os parênteses são necessários a fim de vincular o operador * ponteiro até à data, a variável ponteiro estrutura nome- contrário, o. operador teria precedência. Mas por alguma razão, os programadores C primitivos detestava esse formato, por isso eles foram com -> em seu lugar.
Criando uma Carteira Estruturada demonstra como uma estrutura podem ser criados usando a função malloc (). A estrutura é definida na Linha 7, e uma variável ponteiro desse tipo de estrutura é declarado na Linha 12. Na Linha 15, malloc () aloca armazenamento suficiente para uma estrutura. O tamanho da estrutura é determinada usando o operador sizeof.
Criação de uma carteira ESTRUTURADO
#include #include #include int () {struct estoque {símbolo char [5] preço principal -int quantidade-float -} - Stock struct * investir - / * Criar estrutura na memória * / investir = (estoque struct *) malloc ( sizeof (struct estoque)) - if (investir == null) {puts ( "Algum tipo de malloc () de erro") - exit (1) -} / * Atribuir estrutura de dados * / strcpy (investimento> símbolo, "GOOG ") -invest-> quantidade = 100-investimento> preço = 801,19 - / * banco de dados de exibição * / puts (" Investimento Portfolio")-printf("SymboltSharestPricetValuen")-printf("%-6st%5dt%.2ft%.2fn",invest->symbol,invest->quantity,invest->price,invest->quantity*invest->price)-return(0)-}
A investir referências ponteiro da nova estrutura esculpida em memória. As linhas 23 a 25 preencher a estrutura com alguns dados. Então as linhas 28 a 34 exibir os dados. observar cuidadosamente como o operador -> é usado para referenciar os membros da estrutura.
Exercício 1: Criar um novo projeto usando o código-fonte de criação de uma carteira estruturada. Construir e executar.