Predecir la salida del siguiente programa
#include <iostream> using namespace std; int main() { const char* p = "12345"; const char **q = &p; *q = "abcde"; const char *s = ++p; p = "XYZWVU"; cout << *++s; return 0; }
(A) Error del compilador
(B) c
(C) b
(D) Valor basura
Respuesta: (B)
Explicación: La salida es ‘c’
const char* p = “12345″ declara un puntero a una constante. Así que no podemos asignarle otra cosa a *p, pero podemos asignarle un nuevo valor a p.
carácter constante **q = &p; declara un puntero a un puntero. No podemos asignar otra cosa a **q, pero podemos asignar nuevos valores a q y *q.
*q = “abcde”; cambia p para que apunte a «abcde»
const carácter *s = ++p; asigna la dirección del literal ”bcde” a s. Una vez más, a *s no se le puede asignar un nuevo valor, pero s se puede cambiar.
La instrucción printf(“%cn”, *++s) cambia s a “cde” y se imprime el primer carácter en s.
Cuestionario de esta pregunta
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