Prediga la salida del siguiente programa.
C++
#include <iostream> using namespace std; int main() { int x = 5; int * const ptr = &x; ++(*ptr); cout << x; return 0; } // This code is contributed by sarajadhav12052009
C
#include <stdio.h> int main() { int x = 5; int * const ptr = &x; ++(*ptr); printf("%d", x); getchar(); return 0; }
6
Explicación:
consulte las siguientes declaraciones para conocer la diferencia entre un puntero constante y un puntero a una constante.
int * const ptr —> ptr es un puntero constante. Puede cambiar el valor en la ubicación señalada por el puntero p, pero no puede cambiar p para que apunte a otra ubicación.
int const * ptr —> ptr es un puntero a una constante. Puede cambiar ptr para señalar otra variable. Pero no puede cambiar el valor señalado por ptr.
Por lo tanto, el programa anterior funciona bien porque tenemos un puntero constante y no estamos cambiando ptr para que apunte a ninguna otra ubicación. Solo estamos incrementando el valor señalado por ptr.
Pruebe el siguiente programa, obtendrá un error del compilador.
C++
#include <iostream> using namespace std; int main() { int x = 5; int const * ptr = &x; ++(*ptr); cout << x; return 0; } // This code is contributed by sarajadhav12052009
C
int main() { int x = 5; int const * ptr = &x; ++(*ptr); printf("%d", x); getchar(); return 0; }
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