Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Duda con punteros
Autor Mensaje
ale49 Sin conexión
Empleado del buffet
Sin estado :(
*

Otra
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Jul 2012
Mensaje: #1
Question Duda con punteros Dudas y recomendaciones Informática I (Electrónica)
Dudaa en el codigo



#include <stdio.h>
int main (void)
{
char *a[2];
char d[10];
printf("Escriba: ");
scanf("%s",d);
a[2]=d;
printf("Es: %s\n",*(a+2)); // DUDA
return 0;
}



Por que cuando cambio *(a+2) por *a[2] no copila? tira error como "main.c:10:3: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [-Wformat]" si deberia ser lo mismo.
(Este mensaje fue modificado por última vez en: 18-09-2014 17:51 por ale49.)
18-09-2014 17:33
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
luchovl2 Sin conexión
Secretario General
Dígame, Ingeniero.
*******

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 993
Agradecimientos dados: 19
Agradecimientos: 249 en 226 posts
Registro en: May 2009
Mensaje: #2
RE: Duda con punteros
El nombre de un vector es un puntero al inicio del mismo.
Hacer *(a+2) es lo mismo que a[2], porque "a" es un puntero, y en este caso es un vector de punteros.
En el elemento 2 cargás el puntero a "d".
Me parece que no tiene sentido cargar el elemento 2, porque ya declarás el vector como de dos elementos: el cero y el uno, o sea, a[0] y a[1]. El a[2] es memoria no asignada (o como se llame). Estás pisando lo que haya ahí.

¿Esa es la duda? Porque medio que no aclarás.
18-09-2014 17:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] luchovl2 recibio 1 Gracias por este post
ale49 (18-09-2014)
leibniz Sin conexión
Secretario General
El alma es el espejo de un uni...
*******

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 847
Agradecimientos dados: 44
Agradecimientos: 23 en 17 posts
Registro en: Dec 2012
Mensaje: #3
RE: Duda con punteros


a[2]=d;



Ojo que si el arreglo tiene dimension 2, sus elementos son 0 y 1. Salvo que programes en BASIC.



char *a[2];
printf("Es: %s\n",*(a+2)); // DUDA



Vos declaras a como puntero a puntero a char.
Cuando lo usás con aritmética de punteros tenés que 'desreferenciar', por eso pones el asterisco, para pasar de puntero puntero a char a puntero a char.
Por otro lado, a[2] ya es un puntero a char, si usás la notación de arreglo no tenés que desreferenciar nada.

Pensalo con la primera posicion, ahí a[0] equivale a *a.

[Imagen: 128px-Leibnitz_signature.svg.png]
18-09-2014 19:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] leibniz recibio 1 Gracias por este post
ale49 (18-09-2014)
ale49 Sin conexión
Empleado del buffet
Sin estado :(
*

Otra
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 2
Agradecimientos: 0 en 0 posts
Registro en: Jul 2012
Mensaje: #4
RE: Duda con punteros
Si ahi le cambie a a[1]. Asi con este codigo anda copila y todo. pero sigo sin entender porque si cambio "*(a+1)" por *a[1] no me copila?


#include <stdio.h>

int main (void)
{
char *a[2];
char d[10];
printf("Escriba: ");
scanf("%s",d);
a[1]=d;
printf("Es: %s\n",*(a+1));// DUDA

return 0;
}



(18-09-2014 19:25)leibniz escribió:  


a[2]=d;



Ojo que si el arreglo tiene dimension 2, sus elementos son 0 y 1. Salvo que programes en BASIC.



char *a[2];
printf("Es: %s
",*(a+2)); // DUDA



Vos declaras a como puntero a puntero a char.
Cuando lo usás con aritmética de punteros tenés que 'desreferenciar', por eso pones el asterisco, para pasar de puntero puntero a char a puntero a char.
Por otro lado, a[2] ya es un puntero a char, si usás la notación de arreglo no tenés que desreferenciar nada.

Pensalo con la primera posicion, ahí a[0] equivale a *a.

Ahhh ya entendii gracias chee!!
(Este mensaje fue modificado por última vez en: 18-09-2014 20:50 por ale49.)
18-09-2014 20:48
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Amadeo Sin conexión
Profesor del Modulo A
Sin estado :(
*****

Otra
UBA - Ciencias Exactas y Naturales

Mensajes: 336
Agradecimientos dados: 3
Agradecimientos: 8 en 8 posts
Registro en: Dec 2009
Mensaje: #5
RE: Duda con punteros
*a[1] == **(a+1)

.
18-09-2014 21:03
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.