Se alguém puder fazer um resumo explicativo desse programa agradeço muito=) #include<stdio.h> #include<stdlib.h.> #include<string.h> #define MAX 5 typedef struct { char nome[50]; char tel[15]; }registro; void inserir (registro *agenda,int cont); /*Funçoes sem retorno,passando o vetor de registro */ void modificar (registro *agenda,int x); void mostrar (registro *agenda,int cont); int main () { registro agenda[MAX]; /*Vetor resgistro */ int i,cont=0,op,x; for(;;) { system("color 0f"); system("cls"); printf(" ** Menu ** \n\n\n"); printf(" Digite a opcao desejada:\n\n\n1-Novo cadastro\n\n2-Modificar \n\n3-Mostrar banco de cadastro\n\n4-Sair\n"); scanf("%d",&op); switch(op) { case 1: if(cont<MAX) { inserir(agenda,cont); /*Como o próprio nome do vetor já é um ponteiro que aponta para o primeiro elemento do vetor,não é necessário passar o endereço do vetor*/ cont++; break; } else { printf("Agenda cheia!\n\n"); getchar(); getchar(); break; } case 2: if(cont){ printf("Numero do cadastro a ser modificado: "); scanf("%d",&x); modificar(agenda,x); break; } else { printf("Banco de registro vazio!"); getchar() ; getchar() ; } break ; case 3: mostrar(agenda,cont); break ; case 4: printf("\a"); exit (1) ; break; } } return 0; } void inserir (registro *agenda,int cont) { getchar(); printf("Digite o nome: "); gets(agenda[cont].nome); /*alocaçao da string em cada indice do vetor,sendo variado pelo 'cont' */ printf("Digite o tel: "); gets(agenda[cont].tel); printf("Cadastro realizado com sucesso!"); getchar(); } void modificar (registro *agenda,int x) { getchar(); printf("Digite o novo nome: "); gets(agenda[x-1].nome); /* 'x-1' porque o vetor começa no indice 0 */ printf("Digite o novo tel: "); gets(agenda[x-1].tel); printf("Cadastro realizado com sucesso!"); getchar(); } void mostrar (registro *agenda,int cont) { int i; for(i=0;i<cont;i++) printf("cadastro[%d]:\n\nnome: %s\ntel:%s\n\n",i+1,agenda.nome,agenda.tel); getchar(); getchar(); }