Matemática Dissertativa

Analise as seguintes afirmações sobre o código C fornecido: () A alocação de memória, presente na função main, efetuada com a função malloc, resulta na mesma quantidade alocada em bytes que ptr = malloc(sizeof(struct entrada_cadastro)). () A função strcpy copia a palavra Aluno para o vetor name da struct entrada_cadastro. () O acesso aos campos da estrutura de dados é realizado através do ponteiro nomeado ptr de tipo struct entrada_cadastro.

Analise as seguintes afirmações sobre o código C fornecido:

#include <stdio.h>
#include <stdlib.h>

struct entrada_cadastro {
    char name[50];
    int idade;
};

int main() {
    struct entrada_cadastro *ptr;
    ptr = malloc(sizeof(ptr));
    if(ptr == NULL) {
        printf("Falha na alocação de memória!\n");
        return(1);
    }

    memset(ptr, 0x0, sizeof(*ptr));
    strcpy(ptr->name, "Aluno");
    ptr->idade=20;
    return(0);
}

() A alocação de memória, presente na função main, efetuada com a função malloc, resulta na mesma quantidade alocada em bytes que ptr = malloc(sizeof(struct entrada_cadastro)).
() A função strcpy copia a palavra Aluno para o vetor name da struct entrada_cadastro.
() O acesso aos campos da estrutura de dados é realizado através do ponteiro nomeado ptr de tipo struct entrada_cadastro.

Resolução completa

Explicação passo a passo

Resumo da resposta

Análise da Questão de Programação em C

Esta questão envolve conceitos fundamentais de gerenciamento de memória e estruturas de dados na linguagem C. Vamos analisar cada afirmação com base no código apresentado.

Análise das Afirmações

1. Alocação de Memória (malloc)

A afirmação diz: "A alocação de memória... efetuada com a função malloc, resulta na mesma quantidade em bytes que ptr = malloc(sizeof(struct entrada_cadastro))."

  • Código: ptr = malloc(sizeof(ptr));
  • Conceito: A função sizeof aplicada a um ponteiro (ptr) retorna o tamanho do próprio ponteiro (geralmente 4 ou 8 bytes dependendo da arquitetura), e não o tamanho do objeto ao qual ele aponta.
  • Comparação: Para alocar corretamente uma estrutura, deve-se usar sizeof(struct entrada_cadastro). Como a estrutura contém um array de 50 caracteres e um inteiro, seu tamanho total é muito maior (aproximadamente 54 bytes).
  • Veredito: Falso (F). As quantidades de bytes são diferentes.

2. Uso da Função strcpy

A afirmação diz: "A função strcpy copia a palavra Aluno para o vetor name da struct entrada_cadastro."

  • Código: strcpy(ptr->name, "Aluno");
  • Conceito: A função strcpy tem como objetivo copiar uma string nula-terminada para um destino. O operador -> acessa o membro name do ponteiro ptr.
  • Execução: O comando executa exatamente o descrito: copia o conteúdo "Aluno" para o espaço reservado por name.
  • Veredito: Verdadeiro (V). A descrição da operação está correta.

3. Acesso aos Campos da Estrutura

A afirmação diz: "O acesso aos campos da estrutura de dados é realizado através do ponteiro nomeado ptr de tipo struct entrada_cadastro."

  • Código: ptr->idade = 20;
  • Conceito: Em C, quando se possui um ponteiro para uma estrutura, utiliza-se o operador seta -> para acessar seus membros diretamente.
  • Veredito: Verdadeiro (V). A sintaxe e a lógica descritas correspondem à prática padrão em C.

Conclusão

Com base na análise técnica dos trechos de código:

  1. Primeira afirmação: Falsa (Erro comum de confundir tamanho do ponteiro com tamanho do dado).
  2. Segunda afirmação: Verdadeira (Descrição correta da função strcpy).
  3. Terceira afirmação: Verdadeira (Uso correto do operador ->).

Portanto, a sequência correta é F, V, V.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Matemática

Ver mais Matemática resolvidas

Tem outra questão de Matemática?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.