Práctica de Punteros
Práctica de Punteros
Práctica de Punteros
a) b)
int a, b; int i, j,*p;
int *pa; p=&i;
a = 5; *p=21;
pa = &a; p=&j;
b = *pa; *p=1;
6. Explica el error.
char c = 'A';
double *p = &c;
main(){ c='A';
int a, b, *p, *q, *r; d='B';
char c, d, *m,*n; m=&c;
n=&d;
a=5; *m=*n;
b=7;
q=&a; if (m==n) printf("m y n apuntan a la
p=q; misma dirección\n\n\n");
*p=b; else printf("m y n apuntan a
printf("%d\n\n\n", *q); direcciones distintas\n\n\n");
r=&b; printf ("*m=%c\n\n\n", *m);
*r=*q;
printf("a=%d, b=%d, *p=%d, *q=%d, system("pause");
*r=%d\n\n\n", a, b,*p,*q,*r); return 0;}
Página 2 de 5
int main(){
int *p;
inta=1, b=2;
int **s;
p=&a;
*s=&b; system(“pause”);
printf(“Se ejecutó *s=&b\n y return 0;}
ahora…\n”);
int main(){
int num, n;
int *dir_n;
num=22;
n=7;
dir_n=&n;
printf("La variable num vale: %d\n", ???);
printf("La dirección de memoria donde esta almacenada la variable num es: %p\n",
???);
printf("La dirección de memoria almacenada en dir_n es: %p\n", ???);
printf("El valor de la variable apuntada por dir_n es: %d\n",???);
getche();
return 0;
}
int main(){
int u = 3, v;
int *pu;
int *pv;
pu = &u;
v = *pu;
pv = &v;
printf(“\nu=%d &u=%X pu=%X *pu = %d”, u, &u, pu, *pu);
printf(“\nv=%d &v=%X pv=%X *pv =%d”, v, &v, pv, *pv);
getche();
Página 3 de 5
return 0;
}
int main() {
int n = 8, * ptr;
printf("ptr es%p\n", ptr);
ptr = &n;
printf("n es %d\n", n);
printf("&n es %p\n", &n);
printf("*ptr es %d\n", *ptr);
printf("ptr es %p\n", ptr);
n--;
printf("n es despues de n-- %d\n", n);
printf("&n es %p\n", &n);
ptr++;
printf("ptr es despues de ptr++ %p\n", ptr);
printf("*ptr es %d\n", *ptr);
getche();
return 0;
}
int main(){
Página 4 de 5
int a, *p;
a=5;
p=&a;
*p+=7;
printf("\nEl valor final de a es: %d\n", a);
system("pause");
return 0;
}
int main() {
int n;
int * ptr;
n=8;
printf("ptr es%p\n", ptr);
ptr=&n;
printf("n es %d\n", n);
printf("&n es %p\n", &n);
printf("*ptr es %d\n", *ptr);
printf("ptr es %p\n", ptr);
n--;
printf("n es despues de n-- %d\n", n);
printf("&n es %p\n", &n);
ptr++;
printf("ptr es despues de ptr++ %p\n", ptr);
printf("*ptr es %d\n", *ptr);
getch();
return 0;
}
int *p;
double
*q; void
*r; p=q;
p=(int*)q;
p=r=q
int main() {
void *generico;
int *pint, x=3;
char *pchar = "Punteros a caracteres";
pint=&x;
printf("El valor apuntado por puntint es %d (valor de x)\n",
*pint);
generico=pchar;
printf("\n\ngenerico (tipo void) apunta a objeto char: %s",
generico);
printf("\n\nImprimo ahora generico como char:\n\n");
puts((char *)generico);
getch();
return 0;
}
23. Sea a una variable entera: int a = 25; Se declaran 4 punteros:
{ int x = 5;
int y = 10;
int *xPtr = NULL;
int *yPtr = NULL;
xPtr = &x;
yPtr = &x;
*xPtr = *xPtr + 1;
(*yPtr)--;
printf ("x: %d\n",x);
printf ("y: %d\n",y);
return 0;
}
Página 6 de 7
26. Analiza y comenta este ejercicio
int main()
{
int a,b,*pta,**ptb;
pta=&a;
ptb=&pta; //guardo la dire de pta en ptb (se puede acceder a través de los dos
punteros)
*pta=8;
printf("ptb es: %d\n\n",ptb);
printf("Contenidos de *ptb después de &pta es: %d\n\n",*ptb);
printf("Contenidos de **ptb después de &pta es: %d\n\n",**ptb);
b=8;
pta=&b; //pta deja de apuntar a a para apuntar a b, cuyo valor es 8
printf("Contenidos de *ptb después de pta=&b, es: %d\n\n",*ptb);
printf("Contenidos de a es: %d\n\n",a);
printf("Contenidos de b después de pta=&b, es: %d\n\n",b);
printf("Contenidos de *pta después de pta=&b, es: %d\n\n",*pta);//
muestra el valor de b
printf("Contenidos de **ptb después de pta=&b, es: %d\n\n",**ptb);
printf("ACA Contenidos de *ptb después de pta=&b, es: %d\n\n",*ptb);
**ptb=a+10;
27. Crea un programa para descomponer un entero corto sin signo en dos
bytes utilizando exclusivamente operaciones con punteros (por supuesto,
sin usar operadores a nivel bit).
int main(){
unsigned short int dato=0xAA40;
unsigned char *p1,*p2;