#include #include #include struct Aluno{ char Nome[50]; char matricula[20]; char * curso; }; char * concatena(char * A, char * B){ //Exercicio } int main(int argc, char * argv[]){ //CAST é quando convertemos o valor de um tipo em outro //Por exemplo a é do tipo void* e queremos interpretar //como sendo um int* void *a; int *b = (int*) a; int *X = (int *) malloc(sizeof(int) * 10); //Quando fazemos um malloc eh possível que o sistema naum //consiga alocar o espaco pedido, por isso eh preciso fazer uma //verificacao if(X == NULL){ printf("sem memoria\n"); return -1; } //Note que o malloc aloca a memoria, mas mantem o lixo de memoria //entao eh preciso cuidado para naum interpretar errado. Se preciso //voce inicializa ela for(int i = 0; i < 10; i++){ X[i] = i; printf("%d, ", X[i]); } printf("\n"); //Calloc aloca a memoria e zera os bits //note que isso tem complexidade O(n) int *Y = (int *) calloc(10, sizeof(int)); for(int i = 0; i < 10; i++){ printf("%d, ", Y[i]); } printf("\n"); //O realloc tenta expandir o bloco de memoria alocada //ou aloca um novo bloco e copia o anterior (O(n)) //muito cuidado para naum perder o ponteiro original int *aux = (int *) realloc(Y, 200 * sizeof(int)); if(aux != NULL){ Y = aux; } //liberando a memoria free(X); free(Y); //podemos alocar memoria para qualquer tipo de variavel //em particular podemos guardar enderecos de memoria //com podemos fazer uma matriz int **Z = (int**) malloc(10 * sizeof(int*)); for(int i = 0; i < 10; i++){ Z[i] = (int*) malloc(sizeof(int) * 10); for(int j = 0; j < 10; j++){ Z[i][j] = 10 * i + j; } } //printf("tamanho do registro aluno %d\n", sizeof(struct Aluno)); char * curso = (char*) malloc(sizeof(char) * 4); strcpy(curso, "SIN"); //nada impede de fazermos uma matriz com registros struct Aluno **A = (struct Aluno**) malloc(10 * sizeof(struct Aluno*)); for(int i = 0; i < 10; i++){ A[i] = (struct Aluno*) malloc(sizeof(struct Aluno) * 10); for(int j = 0; j < 10; j++){ A[i][j].curso = curso; } } for(int i = 0; i < 10; i++){ for(int j = 0; j < 10; j++){ printf("%s\n", A[i][j].curso); } } //Exercicio //char * STR = concatena("CURSO: ", "SIN"); //printf("%s\n", STR); return 0; }