punteros y ensayos

Páginas: 6 (1320 palabras) Publicado: 13 de abril de 2013
Programación Estructurada *********Punteros, Estructuras, Arreglos
Punteros
Un puntero es un tipo de variable que permite almacenar y manipular las direcciones de memoria donde se
encuentran almacenados los datos, en lugar de los datos mismos. El manejo de punteros en el lenguaje C
es muy poderoso y eficiente, aunque demanda extremo cuidado en su utilización.
Bien utilizado hace que elcódigo sea más compacto y eficiente; por el contrario, su uso descuidado lleva a
tener poca claridad y frecuentemente conduce a la pérdida del control, ocasionando un comportamiento
indeseable del proceso.
El uso de punteros nos permite acceder al valor de una variable en forma indirecta. Para esto se utilizan
dos operadores:



& El operador "dirección de memoria de" que permite obtener ladirección de memoria donde se
aloja la variable a la cual precede ( &x es la dirección de memoria de x).
* El operador "contenido de lo apuntado por" que permite acceder al valor almacenado en la
dirección de memoria que indica el puntero al cual precede ( *px es el contenido de lo apuntado por
px)

Declaración
Las declaraciones de los punteros se realizan en forma indirecta, declarando eltipo de dato que será
apuntado por el mismo. Por ejemplo un puntero a un dato de tipo entero se declara como:
int *px;
Sean además x e y dos variables del tipo entero. Existen dos operadores unarios para usarlos con
punteros:
Inicialización
Antes de poder ser utilizado, un puntero debe ser inicializado (como cualquier otra variable). Para
inicializar un puntero se puede utilizar:
a. ladirección de memoria de otra variable
int y=2, *py;
py = &y;
b. el valor de otro puntero ya inicializado.
int y=2, *py = &y, *ppy;
ppy = py;
Pasaje de argumentos por referencia
Supongamos que queremos realizar una función que recibe dos argumentos y que debe retornar como
resultado los valores invertidos de las dos variables. Sea por ejemplo la siguiente implementación de esta
función:
voidSwap(int x, int y)
{
int Temp;
Temp = x;
x = y;
y = temp;
}

1

Programación Estructurada *********Punteros, Estructuras, Arreglos
El efecto de esta función no es el deseado, ya que las variables son pasadas por valor, es decir que lo que
se modifica no son las variables originales, sino copias de ellas. La forma de hacer esta operación es a
través del paso de los argumentos porreferencia. En C esto se implementa haciendo uso de punteros:
void Swap(int *x, int *y)
{
int Temp;
Temp = *x;
*x = *y;
*y = Temp;
}
Como lo que se están pasando a la función Swap son en realidad direcciones de memoria donde están
alojadas las variables originales almacenadas, las modificaciones que se realizan afectan estos valores. La
invocación de esta función debe ser de la forma:Swap(&a,&b);
OPERACIONES BASICAS

Op

Función

Ejemplo

Explicación

(void
*)

Convierte entero a
dirección

(void *)0

dirección nula

*

Para declarar
apuntadores

int *p;

p es un apuntador

&

Obtener dirección de..

q=&i;

q apunta a i

=

Asignar dirección

p=q=&i;

p y q apuntan a i

*

Operador indirección

*p=7;

a donde apunta p
almacena un 7++

Incremento-dato

++*p;

incrementa el
valor que apunta
p

++

Incrementoapuntador

*p++;

incrementa
apuntador p

%p

Especificador tipo
apuntador

printf("%p",p);

imprime dirección
almacenada en p

==

igualdad entre
apuntadores

p==q

regresa falso si no
son iguales

!=

desigualdad entre
apuntadores

p!=q

regresa falso si
son iguales

igual

p>=q

regresa falso si p
es menor que q

sizeof

Espacio que ocupa un
dato en bytes

sizeof(void *)

tamaño de
cualquier
apuntador
2

Programación Estructurada *********Punteros, Estructuras, Arreglos
//Programa que suma un valor a una variable a través de un //puntero.
#include
#include
int main()
{
int a, *p;
a=5;
p=&a;
*p+=7;...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Punteros
  • Punteros
  • Puntero
  • Punteros
  • Punteros
  • Punteros
  • Punteros
  • Los Punteros Laser

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS