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=&num; 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