Salida de programas C++ | Juego 39 (Punteros)

Requisito previo: Punteros en C/C++

QUE.1 ¿Qué se imprimiría del siguiente programa en C++?

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    float x = 5.999;
    float* y, *z;
    y = &x;
    z = y;
    cout << x << ", " << *(&x) << ", " << *y << ", " << *z << "\n";
    return 0;
}

a) 5.999, 5.999, 5.999, 5.999
b) 5.999, 5.9, 5.000, 5.900
c) Dirección de los elementos
d) error de compilación

 Answer: a

Explicación: La razón de esto es que x da el valor almacenado en la variable x. *(&x) da el valor de datos almacenado en la dirección &x, es decir, el valor de datos de x. Dado que y apunta a x (..y=&x), *y da el valor de x. Y debido a que z tiene la misma dirección que la de y, *z también da el valor de x, es decir, 5.999

QUE.2 ¿Qué se imprimiría del siguiente programa en C++?

#include <iostream>
using namespace std;
  
int main()
{
    int track[] = { 10, 20, 30, 40 }, *striker;
  
    striker = track;
    track[1] += 30;
    cout << "Striker>" << *striker << " ";
    *striker -= 10;
    striker++;
    cout << "Next@" << *striker << " ";
    striker += 2;
    cout << "Last@" << *striker << " ";
    cout << "Reset To" << track[0] << " ";
  
    return 0;
}

a) 10, 20, 30, 40
b) Striker>10 Next@50 Last@40 Reset To0
c) Striker>10 Next@40 Last@50 Reset To0
d) Striker> Next@ Last@ Reset To

 Answer: b

Explicación: La pista de array contiene 4 elementos {10, 20, 30, 40} y el puntero delantero contiene la dirección base de la pista de array, es decir, la dirección de la pista [0].
1) *striker contiene el valor de datos de la pista[0], es decir, 10. La disminución de *striker en 10 hace que la pista[0]=0.
2) El puntero incremental striker da la siguiente ubicación de la pista, es decir, 1. Ahora *striker da el valor de datos de la pista[1].
3) Nuevamente, al incrementar en 2, el delantero llega a la dirección 4 de la pista de array, es decir, pista [4].
4) Por último, imprima el valor en la pista [0], que es 0 (consulte el paso 1)

QUE.3 ¿Qué se imprimiría del siguiente programa en C++?

#include <iostream>
using namespace std;
  
int main()
{
    int a = 32, *ptr = &a;
  
    char ch = 'A', &cho = ch;
    cho += a;
    *ptr += ch;
    cout << a << ", " << ch << endl;
    return 0;
}

OPCIÓN
a) 97, A
b) 128, A
c) 97, a
d) 129, a

Answer: d

Explicación: ptr es un puntero que contiene la dirección de a while *ptr devuelve el valor de datos de a. Cho es una variable de referencia que contiene la referencia de ch. Ahora, incrementando el valor de cho por 32 (valor ASCII), refleja a cho y ch lo hace igual a “a” (alfabeto). En el último paso, el valor de datos de *ptr incrementado por ch, es decir, «a» da a = 129.

QUE.4 ¿Cuál es el resultado del siguiente programa en C++?

#include <iostream>
using namespace std;
  
int main()
{
    const int i = 20;
    const int* const ptr = &i;
    (*ptr)++;
    int j = 15;
    ptr = &j;
    return 0;
}

a) Dirección de los elementos
b) error de tiempo de ejecución
c) Error de compilación
d) nada de esto

Answer:c

Explicación: ptr es un puntero constante a un entero constante, lo que significa que ni el puntero ni su contenido se modificarán, por lo que las líneas 6 y 8 no son válidas ya que intentan modificar el contenido y el puntero respectivamente.

QUE.5 ¿Cuál es el resultado del siguiente programa en C++?

#include <iostream>
using namespace std;
#include <stdio.h>
int main()
{
    char* str[] = { "AAAAA", "BBBBB", "CCCCC", "DDDDD" };
    char** sptr[] = { str + 3, str + 2, str + 1, str };
    char*** pp;
  
    pp = sptr;
    ++pp;
    printf("%s", **++pp + 2);
    return 0;
}

a) BBBBB
b) CCCCC
c) BBB
d) Error

Answer: c

Explicación: *str es un puntero de array de string, **sptr es un puntero de array (puntero doble) que apunta a strings str en orden inverso. ***pp también un puntero que apunta a la dirección base sptr. ++pp apuntará al primer índice de sptr que contiene str+2 («CCCCC»). en printf(“%s”, **++pp+2); ++pp apuntará a str+1, y **++pp, el valor almacenado @ str+1 (“BBBBB”). y (**++pp)+2 señalará el segundo índice de “BBBBB”, por lo que se imprimirá BBB.

Este artículo es una contribución de Ajay Puri(ajay0007) . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@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 *