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

Requisito previo: Punteros en C/ C++  
QUE.1 ¿Qué se imprimiría del siguiente programa C++? 

C++

#include <iostream>
using namespace std;
int main()
{
    int x[5] = { 1, 2, 3, 4, 5 };
    // p points to array x
    int* p = x;
    int i;
    // exchange values using pointer
    for (i = 0; i < 2; i++) {
        int temp = *(p + i);
        *(p + i) = *(p + 4 - i);
        *(p + 4 - i) = temp;
    }
    // output the array x
    for (i = 0; i < 5; i++)
        cout << x[i] << " ";
    return 0;
}

a) 5 4 3 2 1 
b) 1 2 3 4 5 
c) Dirección de los elementos 
d) No puedo decir 

Answer: a

Explicación: p apunta a la array x y luego intercambia valores usando el puntero en el ciclo for para después de intercambiar el valor, el último ciclo imprime el valor

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

C++

#include <stdio.h>
void fun(int x)
{
    x = 30;
}
 
int main()
{
    int y = 20;
    fun(y);
    printf("%d", y);
    return 0;
}

a) 10 
b) 20 
c) 30 
d) Error de tiempo de ejecución 

Answer: b 

Explicación: Los parámetros siempre se pasan por valor en C . Por lo tanto, en el código anterior, el valor de y no se modifica usando la función fun(). Entonces, ¿cómo modificamos el valor de una variable local de una función dentro de otra función? Pointer es la solución a tales problemas. Usando punteros, podemos modificar una variable local de una función dentro de otra función. Vea la siguiente pregunta. Tenga en cuenta que todo se pasa por valor en C. Solo obtenemos el efecto de pasar por referencia usando punteros.

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

C++

#include <stdio.h>
 
int main()
{
    int arri[] = { 1, 2, 3 };
    int* ptri = arri;
 
    char arrc[] = { 1, 2, 3 };
    char* ptrc = arrc;
 
    printf("sizeof arri[] = %d ", sizeof(arri));
    printf("sizeof ptri = %d ", sizeof(ptri));
 
    printf("sizeof arrc[] = %d ", sizeof(arrc));
    printf("sizeof ptrc = %d ", sizeof(ptrc));
 
    return 0;
}

a) tamaño de arri[] = 3 tamaño de ptri = 4 tamaño de arrc[] = 3 tamaño de ptrc = 4 
b) tamaño de arri[] = 12 tamaño de ptri = 4 tamaño de arrc[] = 3 tamaño de ptrc = 1 
c) tamaño de arri[] = 3 tamaño de ptri = 4 tamaño de arrc[] = 3 tamaño de ptrc = 1 
d) tamaño de arri[] = 12 tamaño de ptri = 4 tamaño de arrc[] = 3 tamaño de ptrc = 4 

Answer: d 

Explicación: el tamaño de una array es el número de elementos multiplicado por el tipo de elemento, por eso obtenemos sizeof arri como 12 y sizeof arrc como 3. El tamaño de un puntero es fijo para un compilador. Todos los tipos de puntero toman el mismo número de bytes para un compilador. Por eso obtenemos 4 tanto para ptri como para ptrc. 

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

C++

#include <iostream>
using namespace std;
int* reverse(int*);
int main()
{
    int x[5] = { 1, 2, 3, 4, 5 };
    int i, *p;
 
    // exchange values
    p = reverse(x);
 
    // output the array x
    for (i = 0; i < 5; i++)
        cout << *(p + i) << " ";
 
    return 0;
}
 
int* reverse(int* p)
{
 
    int i;
    // exchange values
    for (i = 0; i < 2; i++) {
        int temp = *(p + i);
        *(p + i) = *(p + 4 - i);
        *(p + 4 - i) = temp;
    }
    return p;
}

a) 1 2 3 4 5 
b) Dirección de los elementos 
c) error de tiempo de ejecución 
d) Ninguno de los mencionados 

Answer: d 

Explicación: 
p apunta a la array x, luego intercambia valores usando el puntero en el ciclo for para después de intercambiar el valor, el último ciclo imprime el valor pero en este programa la función inversa obtiene la dirección de la array y la dirección de la dirección p al revés pero salida no se menciona la salida es 5 4 3 2 1

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

C++

#include <iostream>
using namespace std;
int main()
{
    int x = 10, y = 15, i;
    for (i = 0; i < 1; i++) {
        int x = 20, y = 15;
    }
    int mul = x * y;
    cout << x << "*" << y << " = " << mul;
    return 0;
}

a) 10*15 = 150 
b) 20*15 = 300 
c) 15*15 = 225 
d) Ninguno de los mencionados 

Answer: a 

Explicación: multiplicación simple, pero cuando va al valor de bucle de x e y no cambian porque están definidos en otro bloque.
Este artículo es una contribución de Ajay Puri . 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 *