MCQ en Asignación de memoria y proceso de compilación

1. ¿Cuál será el resultado del siguiente código? 
 

C

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    union test {
        int i;
        float f;
        char c;
    };
    union test* t;
    t = (union test*)malloc(sizeof(union test));
    t->f = 20.60f;
    printf("%f", t->f);
    return 0;
}

(a) Valor de basura 
(b) 20.600000 
(c) Error de sintaxis 
(d) 20.60
Explicación: 
las uniones proporcionan una manera eficiente de usar la misma ubicación de memoria. Todos los miembros de Union usan la misma ubicación de memoria que tiene espacio máximo. 
Aquí, se usa float f que tiene 

f = 20.60f = 20.600000

. Entonces, la opción (b) es correcta.
2. ¿Cuál es la secuencia correcta del proceso de compilación? 
(a) Ensamblador → Compilador → Preprocesador → Vinculación 
(b) Compilador → Ensamblador → Preprocesador → Vinculación 
(c) Preprocesador → Compilador → Ensamblador → Vinculación 
(d) Ensamblador → Compilador → Vinculación → Preprocesador
Explicación: 
La opción (c) es correcta.
3. Durante el preprocesamiento, el código #include se reemplaza por el contenido del archivo stdio.h. ¿Cual es verdad? 
(a) Durante la vinculación, el código #include se reemplaza por stdio.h 
(b) Sí 
(c) Durante la ejecución, el código #include se reemplaza por stdio.h 
(d) Durante la edición, el código #include se reemplaza por stdio.h
Explicación: 
El preprocesamiento amplía y potencia el lenguaje de programación C al reemplazar la directiva de preprocesamiento #include con el contenido del archivo stdio.h. 
Opción (b).
4. ¿Por qué usar la función de biblioteca fflush()? 
(a) Para vaciar todos los flujos y flujos especificados 
(b) Para vaciar solo el flujo especificado 
(c) Para vaciar el búfer de entrada/salida 
(d) Función de biblioteca no válida
Explicación: 
como se define Uso de fflush(stdin) en C : fflush() es normalmente se usa solo para el flujo de salida. Su propósito es borrar (o vaciar) el búfer de salida y mover los datos almacenados en el búfer a la consola (en el caso de la salida estándar) o al disco (en el caso del flujo de salida del archivo). 
La opción (a) es correcta.
5. Señalar el error ->
 

C

#include
#include
#include
int main()
{
    char* ptr;
    *ptr = (int*)malloc(30);
    strcpy(ptr, "RAM");
    printf("%s", ptr);
    free(ptr);
    return 0;
}

(a) Error: en la sentencia strcpy(). 
(b) Error: en *ptr = (int *) malloc(30); 
(c) Error: en libre (ptr); 
(d) Sin error
Explicación: 
la asignación hace un número entero desde el puntero sin conversión. La opción (b) es verdadera.

6. ¿Para qué se usa la función calloc()? 
(a) asigna el número especificado de bytes 
(b) asigna el número especificado de bytes y los inicializa a cero 
(c) aumenta o disminuye el tamaño del bloque de memoria especificado y lo reasigna si es necesario 
(d) llama al bloque especificado de memoria para la ejecución.
Explicación : 
 

  • malloc() : asigna el número especificado de bytes.
  • realloc() : aumenta o disminuye el tamaño del bloque de memoria especificado. Lo reasigna si es necesario.
  • calloc() : asigna el número especificado de bytes y los inicializa a cero.
  • free() : libera el bloque de memoria especificado de vuelta al sistema.

Entonces, la opción (b) es correcta.
Este artículo es una contribución de Nikita Tiwari . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *