Exercícios Resolvidos de Alocação dinâmica de memória

Ver Teoria

Enunciado

Peça ao usuário um valor n . Crie um vetor dinâmica com tamanho n . Utilize funções para preencher e exibir os valores do vetor dinâmica.

Passo 1

Bora lá, galera.

O que essa questão quer é que a gente exercite como criar funções que recebem vetors dinâmicas. O que você precisa perceber é que com as vetors dinâmicas são ponteiros. Apesar de a gente poder trabalhar com as vetors dinâmicas como se fossem vetors comuns, você deve ter sempre em mente que o que estamos fazendo de verdade é usar um ponteiro para acessar uma parte da memória alocada como um vetor.

Ou seja, uma função que quer receber um vetor dinâmica, na verdade vai receber um ponteiro.

Mas antes de construir essas funções propriamente ditas, vamos escrever o cabeçalho do código.

Passo 2

Então vamos começar criando uma função que preencha os elementos de um vetor dinâmica.

Vamos chamar essa função de p r e e n c h e V e t o r e ela vai precisar receber dois argumentos o ponteiro que aponta pro vetor que vamos trabalhar, e o tamanho desse vetor.

É importante que a gente receba o ponteiro que aponta para o vetor, pois quando a gente trabalha com vetors dinâmicas a gente não tem acesso o vetor em si, a gente só tem acesso ao ponteiro que aponta para o vetor. Ou seja, precisamos realizar uma passagem por ponteiro.

Lembre-se que passagens por ponteiro alteram diretamente no local de memória, ou seja, não vamos precisar retornar nenhum valor, pois o vetor dinâmico já está sendo alterado.

Agora que estamos dentro da função, podemos trabalhar com o vetor dinâmico normalmente, usando os colchetes. Vamos usar um f o r que acessa todas as posições do vetor, e com o c o u t e c i n vamos solicitar que o usuário preencha o vetor

Passo 3

O próximo passo é construir uma função capaz de imprimir um vetor dinâmico. Para criar uma função que recebe um vetor dinâmico, devemos receber um ponteiro que aponta para o local dinamicamente alocado!

Vamos criar a função i m p r i m e V e t o r que recebe o ponteiro que aponta para um vetor e o tamanho do vetor a ser impresso:

Depois de receber o ponteiro que aponta para o vetor dinâmico, podemos trabar com o vetor dinâmico normalmente. Com um loop f o r acessamos os elementos do vetor e imprimimos com o c o u t

Passo 4

As funções estão construídas, agora vamos pra nossa m a i n (   ) .

Primeiro de tudo, a questão pede que a gente receba um valor n do usuário e crie um vetor dinâmico com n   posições. Então vamos precisar declarar uma variável inteira n para receber o valor do usuário, e um ponteiro para f l o a t s chamado v e t o r D i n a m i c o que usaremos para apontar para a memória alocada dinamicamente.

Em seguida, vamos receber do usuário o tamanho do vetor que vamos criar:

Passo 5

Agora vamos criar o vetor dinâmico.

Para realizar alocação dinâmica de um vetor nós utilizamos o operador n e w para alocar memória de um tipo pré-derterminado e entre colchetes informamos a quantidade de espaços de memória que devem ser alocados. O resultado do processo de alocação deve ser armazenado em um ponteiro.

p t r = n e w   t i p o   [   t a m a n h o   ]

No nosso programa vamos utilizar o operador n e w para alocar memória do tipo f l o a t , e entre os colchetes vamos informar que queremos que sejam alocados n espaços. O endereço dessa alocação deve ser armazenado no ponteiro v e t o r D i n a m i c o :

Passo 6

Agora que já temos o nosso array dinâmico, só precisamos utilizar as funções que já desenvolvemos.

Primeiro vamos preencher o vetor usando a função p r e e n c h e V e t o r

Em seguida vamos exibir o seu conteúdo com a função i m p r i m e V e t o r

Passo 7

E esse é um exercício de alocação dinâmica de memória. Então você nunca pode esquecer que a memória deve ser liberada!

Para liberar memória é só a gente aplicar o d e l e t e   [   ] no ponteiro que aponta pro vetor alocado dinamicamente

E prontinho! Finalizamos a questão!

Resposta