Salida de programas C | Juego 64 (Punteros)

Prerrequisito: Punteros en C
Pregunta 1: ¿Cuál será el resultado del siguiente programa?

#include "stdio.h"
int main()
{
    char a[] = { 'A', 'B', 'C', 'D' };
    char* ppp = &a[0];
    *ppp++; // Line 1
    printf("%c %c ", *++ppp, --*ppp); // Line 2
}

OPCIONES:
a)CB
b)BA
c)BC
d)CA

OUTPUT: (d) C A

Explicación:
Línea 1: Ahora, ppp apunta a la siguiente ubicación de memoria, es decir, índice 1 de la array de caracteres.
Línea 2: En primer lugar, se ejecuta –*ppp= –(*ppp) y, por lo tanto, el valor ‘B’ (que está en la posición del índice 1 de la array char[]) se reduce en 1 (es decir, se convierte en ‘A’ ) y se envía a imprimir. Luego se ejecuta *++ppp= *(++ppp) que inicialmente incrementa el puntero al siguiente elemento de la array e imprime el valor en ese número de índice 2 que es ‘C’. Aunque –*ppp se ejecuta primero en comparación con *++ppp, la pantalla se mostrará en el orden mencionado en la función printf() en la línea 2. Por lo tanto, obtenemos una salida como C A.

Pregunta 2: ¿Cuál será el resultado del siguiente programa?

#include <stdio.h>
int main()
{
    int* ptr;
    *ptr = 5;
    printf("%d", *ptr);
    return 0;
}

OPCIONES:
a) error de compilación
b) error de tiempo de ejecución
c) 5
d) error del enlazador

OUTPUT: (b) Runtime error

Explicación: La variable de puntero (*ptr) no se puede inicializar.

Pregunta 3: ¿Cuál será el resultado del siguiente programa?

#include <stdio.h>
int main()
{
    int a = 36;
    int* ptr;
    ptr = &a;
    printf("%u %u", *&ptr, &*ptr);
    return 0;
}

OPCIONES:
a) Dirección Valor
b) Dirección Valor
c) Dirección Dirección
d) Error de compilación

OUTPUT: (c)Address Address

Explicación: & y * se cancelaron entre sí y muestran la dirección almacenada en una variable de puntero ptr, es decir, la dirección de a.

Pregunta 4: ¿Cuál será el resultado del siguiente programa?

#include <stdio.h>
int main()
{
    int num = 10;
    printf("num = %d addresss of num = %u", num, &num);
    num++;
    printf("\n num = %d addresss of num = %u", num, &num);
    return 0;
}

OPCIONES:
a) Error de compilación
b) num = 10 dirección de num = 2293436
num = 11 dirección de num = 2293438
c) num = 10 dirección de num = 2293436
num = 11 dirección de num = 2293440
d) num = 10 dirección de num = 2293436
num = 11 dirección de num = 2293436

OUTPUT: (d)

Explicación: Aquí, una variable num tiene el valor 10 y obtiene su dirección como 2293436, luego el incremento se realiza como num++, que usa el mismo espacio de direcciones para almacenar el valor incrementado.

Pregunta 5: ¿Cuál será el resultado del siguiente programa?

#include <stdio.h>
int main()
{
    int i = 25;
    int* j;
    int** k;
    j = &i;
    k = &j;
    printf("%u %u %u ", k, *k, **k);
    return 0;
}

OPCIONES:
a) dirección dirección valor
b) dirección valor valor
c) dirección dirección dirección
d) error de compilación

OUTPUT : (a)address address value

Explicación: aquí una variable de puntero *j contiene la dirección de i y luego otra variable de puntero *k contiene la dirección de j.
ahora
k = dirección de j
*k = dirección de i
**k = valor de i.

Este artículo es una contribución de Abhishek kurmi .

Publicación traducida automáticamente

Artículo escrito por sap 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 *