Fazer os seguintes programas:
O que será exibido na saída padrão quando o programa abaixo for executado?
typedef struct { char *tipo; char *logradouro; int numero; char *complemento; } Endereco; typedef struct { char *nome; int idade; char sexo; double salario; Endereco endereco; } Empregado; void funcao1(Empregado emp); void funcao2(Empregado *pEmp); void funcao3(int v[]); int main() { Endereco end = {"Rua", "Sergipe", 111, "apto. 102"}; Empregado emp1 = {"Ana Paula", 20, 'F'}; Empregado emp2, empregados[100], *ptrEmp; int vetor [] = {10, 15, 20}; printf("sizeof(Endereco) = %d\n", sizeof(Endereco)); printf("sizeof(Empregado) = %d\n", sizeof( Empregado)); printf("sizeof(emp1) = %d\n", sizeof(emp1)); printf("sizeof(empregados) = %d\n", sizeof(empregados)); printf("sizeof(ptrEmp) = %d\n", sizeof(ptrEmp)); emp2 = emp1; printf("&emp1 (%d) e' diferente do &emp2 (%d)\n", &emp1, &emp2); ptrEmp = &emp2; emp2.nome = "Maria Paula"; emp1.endereco = end; //Fazendo acesso a membros printf("end.logradouro = %s\n", end.logradouro); printf("emp1.nome = %s\n", emp1.nome); printf("emp1.salario = %.2f\n", emp1.salario); printf("(*ptrEmp).nome = %s\n", (*ptrEmp).nome); printf("emp1.endereco.tipo = %s\n", emp1.endereco.tipo); printf("ptrEmp->idade = %d\n", ptrEmp->idade); funcao1(emp2); printf("ptrEmp->idade = %d\n", ptrEmp->idade); funcao2(ptrEmp); printf("ptrEmp->idade = %d\n", ptrEmp->idade); funcao2(&emp1); printf("ptrEmp->idade = %d\n", ptrEmp->idade); funcao3(vetor); printf("vetor[1] = %d\n", vetor[1]); return 0; } void funcao1(Empregado emp) { emp.idade++; } void funcao2(Empregado *pEmp) { pEmp->idade++; } void funcao3(int v[]) { v[1] = 100; }
typedef struct { char *tipo; char *logradouro; int numero; char *complemento; } Endereco; typedef struct { char *nome; int idade; char sexo; double salario; Endereco endereco; } Empregado; void funcao(int v[], Empregado emp, Empregado *pEmp); int main() { Endereco end = {"Rua", "Sergipe", 111, "apto. 102"}; Empregado emp1 = {"Juliana Duarte", 20, 'F', 3000}; Empregado emp2, empregados[100], *ptrEmp; int vetor [] = {10, 15, 20}; emp1.endereco = end; emp2 = emp1; ptrEmp = &emp1; emp2.nome = "Maria Duarte"; emp2.idade = 30; emp2.salario = 5000; //Fazendo acesso a membros printf("Antes de chamar funcao\n"); printf("emp1.nome = %s\n", emp1.nome); printf("emp1.idade = %d\n", emp1.idade); printf("emp1.salario = %.2f\n", emp1.salario); printf("(*ptrEmp).nome = %s\n", (*ptrEmp).nome); printf("ptrEmp->idade = %d\n", ptrEmp->idade); printf("emp2.nome = %s\n", emp2.nome); printf("emp2.idade = %d\n", emp2.idade); printf("emp2.salario = %.2f\n", emp2.salario); funcao(vetor, emp2, ptrEmp); printf("\nApos chamar funcao\n"); printf("vetor[0] = %d\n", vetor[0]); printf("vetor[1] = %d\n", vetor[1]); printf("vetor[2] = %d\n", vetor[2]); printf("emp1.idade = %d\n", emp1.idade); printf("emp1.salario = %.2f\n", emp1.salario); printf("emp2.idade = %d\n", emp2.idade); printf("emp2.salario = %.2f\n", emp2.salario); return 0; } void funcao(int v[], Empregado emp, Empregado *pEmp) { v[0] = ++(emp.idade); v[1] = ++(pEmp->idade); v[2] = (int) ++(pEmp->salario); }