Diferencia entre revisiones de «Introducción a Patrones de Diseño en C++ con Qt4/1.16.1 Los operadores unarios & y *»

Contenido eliminado Contenido añadido
Paynalton (discusión | contribs.)
Paynalton (discusión | contribs.)
Línea 44:
* puede ser usado como el operador de desreferencia.}}
 
[Note] Note
 
{{Note|Desreferenciar un puntero nulo o no inicializado causa un error en tiempo de ejecución, usualmente un fallo de segmentación o, en windows, un fallo de protección general (GPF).
Dereferencing a null or uninitialized pointer causes a runtime error, usually a segmentation fault or, in Windows, a general protection fault (GPF).
 
Es responsabilidad del programador asegurarse de que no se intenta hacer referencia a un puntero nulo o no inicializado. Discutiremos técnicas para asegurarnos de que esos errores sean evitados}}
It is the responsibility of the programmer to make sure that no attempt is made to dereference a null or uninitialized pointer. We will discuss techniques to ensure that such errors are avoided.
 
Example 1.23. src/pointers/pointerdemo.cpp
 
//{{ejemplo2|Ejemplo Filename1.23. src/pointers/pointerdemo.cpp|
'''int* px = 0 ;''' Modificcador de tipo
'''<< " *px &#61; " << *px''' Operador de desreferenciación unario|
'''Nombre de Archivo pointerdemo.cpp'''
 
#include <iostream>
using namespace std;
 
int main() {
int x =&#61; 4;
'''int* px =&#61; 0 ; 1'''
px =&#61; &x;
cout << "x =&#61; " << x
'''<< " *px =&#61; " << *px''' 2
<< " px =&#61; " << px
<< " &px =&#61; " << &px << endl;
x =&#61; x + 1;
cout << "x =&#61; " << x
<< " *px =&#61; " << *px
<< " px =&#61; " << px << endl;
*px =&#61; *px + 1;
cout << "x =&#61; " << x
<< " *px =&#61; " << *px
<< " px =&#61; " << px << endl;
return EXIT_SUCCESS;
}
 
 
 
'''Salida:'''
Output:
OOP> ./a.out x = 4 *px = 4 px = 0xbffff514 &px = 0xbffff510 x = 5 *px = 5 px = 0xbffff514 x = 6 *px = 6 px = 0xbffff514 OOP>
 
OOP> ./a.out
1 type modifier
x &#61; 4 *px &#61; 4 px &#61; 0xbffff514 &px &#61; 0xbffff510
2 unary dereference operator
x &#61; 5 *px &#61; 5 px &#61; 0xbffff514
x &#61; 6 *px &#61; 6 px &#61; 0xbffff514 OOP>
|http://cartan.cas.suffolk.edu/oopdocbook/docs/src/pointers/pointerdemo.cpp}}
 
(link)
 
Cuando corremos el Ejemplo 1.23 en momentos diferentes, o en diferentes máquinas, los valores particulaes pueden varias.
When Example 1.23 is run at different times, or on different machines, the particular values may vary.
 
TheLa variable '''x''' accessesaccesa itsa datasus directlydatos directamente, butpero thela variable '''px''' accessesaccede theal samemismo datadato indirectlyindiractamente. ThisEsto ises whyporque thela wordpalabra indirectionindirigida ises oftentambien usedusada topara characterizecaracterizar theel processproceso ofde accessingacceso dataa throughdatos a pointertravés de un puntero. TheLa relationshiprelación betweenentre thelas twodos variables, '''x''' andy '''px''' es isilustrada illustrateden inla FigureFigura 1.3.
 
Figure 1.3. Pointer Demo