Com base em seus conhecimentos sobre ponteiros e alocação dinâmica de memória, analise as seguintes afirmações:
01 - int main(){
02 - float *ptr;
03 - printf("Endereço: %p \n\n", ptr);
04 - ptr = (float *) malloc(4);
05 - printf("Endereço: %p \nValor: %d\n\n", ptr, *ptr);
06 - }
I - Durante a execução da linha de código 03, o endereço impresso na tela será um lixo de memória.
II - A linha de código 04 assume que são necessários 4 bytes para armazenar um dado do tipo float em memória.
III - O endereço impresso na linha de código 03 será igual ao endereço impresso na linha de código 05.
Assim sendo, pode se dizer que é correto o que se afirma em:
Respostas
respondido por:
13
| - Sim, realmente será impresso lixo da memória, já que não foi especificado para onde o ponteiro *ptr deveria apontar.
|| - Vou te dizer que essa segunda foi um tanto confusa pra mim, mas eu diria que sim. Está ocorrendo um casting explícito no malloc() e o transformando em um ponteiro float. Pode se dizer que, quem escreveu esse código, assumiu que são necessários quatro bytes para alocar um float na memória, já que foi determinado dentro dos parâmetros do mallocl(), o número 4.
||| - Não será o mesmo endereço, porque a função malloc(), ao alocar um certo bloco de memória, retorna ao ponteiro que o chamou, o primeiro endereço desse bloco alocado pelo malloc().
celsooliveirajr:
Alternativa I e II?
Perguntas similares
4 anos atrás
6 anos atrás
6 anos atrás
6 anos atrás
8 anos atrás
8 anos atrás
8 anos atrás