Como ejemplo de acceso al contenido de
las variables empleando apuntadores, considere el programa en el que se
emplean 4 variables reales y 1 entera para realizar operaciones con los
correspondientes apuntadores, en lugar de las variables mismas:
| #include<conio.h>
#include<stdio.h> #include<math.h> main() { float a,b,c,dis; /* declaración de las variables reales */ float *aa,*ab,*ac,*adis; /* declaración de sus apuntadores */ int sig; /* declaración de variable entera */ int *asig; /* declaración de su apuntador */ clrscr(); printf(" dame los coeficientes de a,b,c, donde a no sea cero "); scanf("%f,%f,%f"&a,&b,&c); dis=pow(b,2)-4.0*a*c; adis=&dis; /* se asigna la dirección del resultado al apuntador */ asig=&sig; if(*adis<0)sig=-1; /* el operador indirección refiere el contenido */ if(dis==0)sig=0; if(*adis>0)sig=1; /* usa contenido a través de su apuntador */ switch(*asig) /* se conmuta mediante apuntador */ {
case -1:
printf("\n raíces complejas "); printf(" x1r=%f x1i=%f",-b/(2.0*a),-sqrt(-dis)/(2*a)); printf(" x2r=%f x2i=%f",-b/(2.0*a),sqrt(-dis)/(2*a)); break;
case 0: printf("\n raices repetidas "); printf("x1=%f",-b/(2*a)); printf("x2=%f",-b/(2*a)); break;
case 1: printf(\n raíces reales "); printf("x1=%f",(-b+sqrt(dis))/(2*a); printf("x2=%f",(-b-sqrt(dis))/(2*a); break; } } |
Como otro ejemplo de manipulación
de información mediante apuntadores, considere el ejemplo siguiente:
| #include<conio.h>
#include<stdio.h> main() { float f1,f2; int v11,v22; float v33; int v1=1, v2=2; /* se declaran variables y sus valores iniciales */ float v3=1.2; int *apunt1,*apunt2; /* declara apuntadores para variables enteras */ float *apunt3; /* declara un apuntador para una variable real */ /* se asignan direcciones para los apuntadores */ apunt1=&v1; apunt2=&v2; apunt3=&v3; /* se asignan valores a través de apuntadores */ v11=*apunt1; v22=*apunt2; v33=*apunt3; /* de esa forma las expresiones siguientes son equivalentes */ /* pues se MENCIONAN valores a través de direcciones */ f1=(*apunt1+*apunt2+*apunt3)/3.2; f2=(v11+v22+v33)/3.2; printf("\n f1= %f \t\t f2= %f",f1,f2); printf("\n observe que los resultados son los mismos"); printf("\n para continuar oprime una tecla "); getch(); /* de esa forma también es posible asignar valores a través de los apuntadores, es decir a través de las direcciones */ *apunt1=10; *apunt2=20; *apunt3=30; f1=(*apunt1+*apunt2+*apunt3)/3.2; f2=(v11+v22+v33)/3.2; printf("\n f1= %f \t\t f2= %f",f1,f2; printf("\n\n Observe nuevamente que los resultados son los mismos "); printf("presiona una tecla para terminar "); getch(); } |
