-
Notifications
You must be signed in to change notification settings - Fork 0
/
pratica_struck.c
68 lines (57 loc) · 2.31 KB
/
pratica_struck.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <stdlib.h>
int main(){
//jogos de videogame, poss�veis atributos:
//titulo
//plataforma
//ano de lan�amento
//pre�o
//forma mais simples de armazenar, declarando vari�veis escalares na Stack
//consigo manipular informa�es de apenas um jogo
//posso fazer atribui�es, leituras e escritas diretamente nas vari�veis
char titulo[100];
char plataforma[20];
unsigned short int ano;
float preco;
//manipula�o de muitos jogos na Stack, uma quantidade finita e pr�-definida de jogos
//posso fazer atribui�es, leituras e escritas diretamente nas vari�veis de acordo com as posi�es
char titulos[20][100];
char plataformas[20][20];
unsigned short int anos[20];
float precos[20];
//manipula�o de muitos jogos na Heap, uma quantidade finita e n�o pr�-definida de jogos
//posso fazer atribui�es, leituras e escritas, observando os endere�os de mem�ria
//devo utilizar malloc(), calloc() ou realloc(), dependendo do cen�rio
char** titulosHeap;
char** plataformasHeap;
unsigned short int* anosHeap;
float* precosHeap;
//alocando espa�o para o primeiro jogo
titulosHeap = malloc(1*sizeof(char*));
titulosHeap[0] = malloc(100*sizeof(char));
//... outros atributos
anosHeap = malloc(1*sizeof(unsigned short int));
//alocando espa�o para o segundo jogo
titulosHeap = realloc(titulosHeap, 2*sizeof(char*));
titulosHeap[1] = malloc(100*sizeof(char));
//... outros atributos
anosHeap = realloc(2*sizeof(unsigned short int));
//independente da forma que escolhemos para armazenar estes valores,
//a lista de atributos pode ser longa
//assim, se temos fun�es e rotinas, sempre teremos uma lista grande de parametros
//tendo o risco de esquecer algum, passar na ordem errada, etc...
//se houver a inclus�o ou remo�o de atributos, todas as fun�es devem ser alteradas
//uma alternativa � utilizar uma vari�vel que agrupe tudo em uma �nica estrutura.
//structs n�o s�o vari�veis, mas um tipo de dado
struct game{
char titulo[100];
char plataforma[20];
unsigned short int ano;
float preco;
};
//declarando a vari�vel primeiroJogo do tipo de dado game
struct game primeiroJogo;
//assim, ao inv�s de passar cada atributo individualmente, passamos a struct game como parametro,
//acessando os atributos internos.
return 0;
}