Você está na página 1de 5

16. Pergunta:O código abaixo contém a declaração de algumas variáveis e ponteiros.

Quando
você executa esse código os valores x, y e P serão os valores de x, y e p ao final do trecho de
código abaixo?

#include<stdio.h>

int main(){
int x, y, *p; y = 0;
p = &y;
x = *p;
x = 4;
(*p)++;
--x;
(*p) += x;

printf("x = %d | y = %d | p = %x", x,y,p);

Uma das atividades mais desafiadoras aos programadores é entender o código feito por outras
pessoas. Isso fica ainda pior quando existem erros ou “bugs” nos códigos. Então, para você
praticar um pouco isso os trechos de código abaixo possuem alguns erros. Identifique-os e
reescreva indicando como deveriam ser?

A)
include <stdio.h>
int main() {
int x, *p;
x = 100;
p = &x;
printf("Valor de p: %d\n", *p);
B)
oid troca(int *i, int *j) {
int temp;
temp = *i;
*i = *j;
*j = temp;
}
return 0;
}

C)
#include <stdio.h>

int main() {
char *a, *b;
a = "abacate";
b = "uva";
if (strcmp(a, b) < 0)
printf("%s vem antes de %s no dicionário\n", a, b);
else if (strcmp(a, b) > 0)
printf("%s vem depois de %s no dicionário\n", a, b);
else
printf("%s é igual a %s no dicionário\n", a, b);
return 0;
}
18) Faça um programa que leia um valor n e crie dinamicamente um vetor de n elementos e
passe esse vetor para uma função que vai ler os elementos desse vetor. Depois, no programa
principal, o vetor preenchido deve ser impresso. Além disso, antes de finalizar o programa, deve-
se liberar a área de memória alocada.
#include <stdio.h>
#include <stdlib.h>
void lerElementos(int* vetor, int tamanho) {
printf("Digite os elementos do vetor:\n");
for (int i = 0; i < tamanho; i++) {
scanf("%d", &vetor[i]);
}
}

int main() {
int n;
printf("Digite o tamanho do vetor: ");
scanf("%d", &n);
int* vetor = (int*)malloc(n * sizeof(int));

if (vetor == NULL) {
printf("Erro ao alocar memória.\n");
return 1;
}

lerElementos(vetor, n);

printf("Vetor preenchido:\n");
for (int i = 0; i < n; i++) {
printf("%d ", vetor[i]);
}
printf("\n");
free(vetor);
return 0;
}

19) Faça uma função que receba um valor n e crie dinamicamente um vetor de n elementos e
retorne um ponteiro. Crie uma função que receba um ponteiro para um vetor e um valor n e
imprima os n elementos desse vetor. Construa também uma função que receba um ponteiro
para um vetor e libere esta área de memória. Ao final, crie uma função principal que leia um
valor n e chame a função criada acima. Depois, a função principal deve ler os n elementos desse
vetor. Então, a função principal deve chamar a função de impressão dos n elementos do vetor
criado e, finalmente, liberar a memória alocada através da função criada para liberação.

#include <stdio.h>

#include <stdlib.h>

int* criarVetor(int n) {

int* vetor = (int*)malloc(n * sizeof(int));

return vetor;

void imprimirVetor(int* vetor, int n) {

printf("Elementos do vetor:\n");

for (int i = 0; i < n; i++) {

printf("%d ", vetor[i]);

printf("\n");

void liberarVetor(int* vetor) {

free(vetor);

int main() {

int n;

printf("Digite o tamanho do vetor: ");


scanf("%d", &n);

int* vetor = criarVetor(n);

printf("Digite os elementos do vetor:\n");

for (int i = 0; i < n; i++) {

scanf("%d", &vetor[i]);

imprimirVetor(vetor, n);

liberarVetor(vetor);

return 0;

Você também pode gostar