Departamento de Ciencias de la Computación Facultad de Ciencias

Anuncio
Departamento de Ciencias de la Computación
Facultad de Ciencias Exactas y Tecnología
Universidad Nacional de Tucumán
Ejemplos de uso de variables punteros
Para un mejor comprensión de los ejercicios, se sugiere al alumno analizar las instrucciones comentadas en
cada caso.
Punteros0: Ejemplo de uso de la constante NULL.
#include <stdio.h>
main()
{
/*1*/
// p0607/punt0.cpp
// Ejemplo de uso de la constante NULL
int *p1=NULL;
// declaro e inicializo el puntero p1
puts("\tp1 es un puntero a un entero: int *p1\n");
printf("\t-->La dir de p1 : %p\n",p1);
printf("\t
La dir que almacena p1: %d\n",p1);
printf("\t
La dir del objeto referenciado por p1: %d\n",p1);
return 0;
}
La salida es:
-->La direccion de p1: 0000
La direccion de p1: 0
El valor de *p1
: 0
*/
Punteros1: Uso de los operadores de indirección y dirección de punteros.
#include <stdio.h>
// P0607/punt1.cpp
main()
{
/*1*/
int valor1=45,valor2=57,temp;
int *apunt_int = &valor1;
puts("Operadores puntero para intercambiar dos valores");
printf("Antes
/*2*/
/*3*/
/*4*/
/*5*/
--> valor1=%d\n",valor1);
printf("
valor2=%d\n",valor2);
apunt_int=&valor1;
temp=*apunt_int;
*apunt_int=valor2;
valor2=temp;
printf("\n");
printf("Despues --> valor1=%d\n",valor1);
printf("
valor2=%d\n",valor2);
return 0;
}
Imagine Ud. cual es la salida.
Asignatura Programación
Noviembre de 2007
Página 1 de 3
Departamento de Ciencias de la Computación
Facultad de Ciencias Exactas y Tecnología
Universidad Nacional de Tucumán
Punteros2: Asignaciones de direcciones.
#include <stdio.h>
/P0607/PUNT2.CPP
main()
{
char car;
char *p1=NULL,*p2=NULL;
car='L';
/*1*/
puts("PRIMERO");
printf("La dir de la vble. puntero p1: %p\n",p1);
printf("La dir de la vble. puntero p2: %p\n",p2);
printf("La direccion de memoria de la vble car: %p\n",&car);
printf("El valor de car es: %c\n",car);
/*2*/ p1=&car;
/*3*/ p2=p1;
puts("DIRECCIONES DESPUES DE ASIGNAR");
printf("La dir de la vble. puntero p1: %p\n",p1);
printf("La dir de la vble. puntero p2: %p\n",p2);
puts("CONTENNIDOS DESPUES DE ASIGNAR");
printf("El valor de *p1 es: %c\n",*p1);
printf("El valor de *p2 es: %c\n",*p2);
return 0;
}
Una salida posible es:
PRIMERO
La dir de la vble. puntero p1: 0000
La dir de la vble. puntero p2: 0000
La direccion de memoria de la vble car: 1AF5
El valor de car es: L
DIRECCIONES DESPUES DE ASIGNAR
La dir de la vble. puntero p1: 1AF5
La dir de la vble. puntero p2 : 1AF5
CONTENIDOS DESPUES DE ASIGNAR
El valor de *p1 es: L
El valor de *p2 es: L
Punteros3: Aritmética de punteros.
#include <stdio.h>
// p0607/punt3.cpp
main()
{
/*1*/
int *p1= NULL;
int num = 3000;
puts("\t p1 es un puntero a un entero: int *p1\n");
puts("\t num es una variable entera que almacena el valor 3000\n\n");
printf("\tPRIMERO--> La direccion de la var puntero p1(en hexa): %p\n",p1);
printf("\t
La direccion de la var puntero p1(en dec) : %d\n",p1);
printf("\t
La direccion de la var entera num(en hexa): %p\n",&num);
printf("\t
La direccion de la var entera num(en dec) : %d\n\n",&num);
/*2*/
p1=#
puts("\tSEGUNDO-->p1=&num\n");
printf("\t
La direccion de la var puntero p1: %p\n",p1);
Asignatura Programación
Noviembre de 2007
Página 2 de 3
Departamento de Ciencias de la Computación
Facultad de Ciencias Exactas y Tecnología
Universidad Nacional de Tucumán
printf("\t
printf("\t
El
valor de p1: %d\n",p1);
El valor de *p1
: %d\n",*p1);
/*3*/
p1++;
puts("\n\tTERCERO-->
printf("\t
printf("\t
printf("\t
return 0; }
p1++\n");
La direccion de p1(en hexa): %p\n",p1);
El valor de p1(en dec)
: %d\n",p1);
El valor de *p1
: %d\n",*p1);
Una salida posible es:
p1 es un puntero a un entero
num es una variable entera que almacena el valor 3000
PRIMERO--> La
La
La
La
direccion
direccion
direccion
direccion
de
de
de
de
la
la
la
la
var
var
var
var
puntero p1(en
puntero p1(en
entera num(en
entera num(en
hexa):
dec) :
hexa):
dec) :
0000
0
1C1A
7194
SEGUNDO--> p1=&num
La direccion de la var puntero p1: 1C1A
El
valor de p1: 7194
El valor de *p1 : 3000
TERCERO--> p1++
La direccion de p1(en hexa): 1C1C
El valor de p1(en dec)
: 7196
El valor de *p1
: 7206
Asignatura Programación
Noviembre de 2007
Página 3 de 3
Descargar