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

Requisito previo: Punteros en C/C++

1. ¿Cuál será el resultado del siguiente programa?

#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;
}

Opciones:
a. 32,
Ab. 32,
c. 129, a
d. 129, A

Answer: c. 129, a

Explicación: La variable «ptr» es un puntero que contiene la dirección de la variable «a». Y “*ptr” devuelve el valor de la variable “a”. “cho” es una variable de referencia para “ch”. Por lo tanto, cualquier cambio realizado en «cho» se reflejará en «ch». Como tal, cuando “cho” se incrementa en 32, se suma al valor ASCII de “A” (que es 65), y esto da como resultado 97, que es el valor ASCII de “a” (del alfabeto). Entonces esta «a» se almacena en «ch». En cuanto a cuando «*ptr» se incrementa en «ch», da el valor 97+32=129.

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

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

Opciones:
a. 20b
. 21
c. 15
re. Error de compilación

Answer: d. Compile error

Explicación: Aquí «ptr» se ha definido como un puntero constante que contiene la dirección de un entero constante «i». Por lo tanto, no se puede cambiar el valor de «ptr», ni se puede cambiar el valor que tiene. Por lo tanto, las líneas “(*ptr)++” y “ptr=&j” no son válidas, ya que intentan modificar el contenido de la variable i y el valor del puntero, respectivamente. Esto da un error.

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

#include <iostream>
using namespace std;
int main()
{
    int num[5];
    int* p;
    p = num;
    *p = 10;
    p++;
    *p = 20;
    p = &num[2];
    *p = 30;
    p = num + 3;
    *p = 40;
    p = num;
    *(p + 4) = 50;
    for (int i = 0; i < 5; i++)
        cout << num[i] << ", ";
    return 0;
}

Opciones:
a. 10, 20, 30, 40, 50
b. 10, 20, 30, 40, 50,
c. error de compilación
d. Error de tiempo de ejecución

Answer: b. 10, 20, 30, 40, 50, 

Explicación: Es simple. Los valores se asignan a la array y se desreferencian para imprimirlos.

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

#include <iostream>
using namespace std;
int main()
{
    int arr[] = { 4, 5, 6, 7 };
    int* p = (arr + 1);
    cout << *arr + 10;
    return 0;
}

Opciones:
a. 12b
. 15
c. 14
re. error

Answer: c. 14

Explicación: ‘arr’ funciona como un puntero a la array. Entonces ‘arr’ apunta a la primera ubicación en la array. De manera similar, ‘arr + 1’ apunta a la segunda ubicación en la array, y así sucesivamente. Por lo tanto, *arr accede al primer valor de la array, que es 4, y lo suma a 10. Esto da como resultado 14.

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

#include <iostream>
using namespace std;
int main()
{
    int a = 10, *pa, &ra;
    pa = &a;
    ra = a;
    cout << "a=" << ra;
    return 0;
}

Opciones:
a. 10b
. sin salida
c. error de compilación
d. Error de tiempo de ejecución

Answer : c. compile error

Explicación: Las variables de referencia son diferentes de los punteros. El puntero se puede inicializar y asignar, pero las referencias solo se pueden inicializar. Aquí, a la variable de referencia ‘ra’ se le asigna la dirección de ‘a’ en lugar de inicializarla cuando se declara. Esto arroja un error de compilación: ‘ra’ declarado como referencia pero no inicializado.

Este artículo es una contribución de Nihar Ranjan Sarkar . 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 *