Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Indireccion multiple de punteros

Estas en el tema de Indireccion multiple de punteros en el foro de C/C++ en Foros del Web. Hola!!! Estoy tratando de realizar un sencillo programa que me pida insertar una frase y la guarde en una matriz mediante "punteros a punteros" de ...
  #1 (permalink)  
Antiguo 25/01/2009, 17:17
Avatar de Alzanea  
Fecha de Ingreso: diciembre-2008
Ubicación: bajo la luz de la luna.
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Indireccion multiple de punteros

Hola!!!

Estoy tratando de realizar un sencillo programa que me pida insertar una frase y la guarde en una matriz mediante "punteros a punteros" de la siguiente manera :

#include<stdio.h>
#nclude<stdlib.h>
#include<string.h>

int main(){

char cadena[15];
char *pun1=cad;
char **pun2=&pun1;
gets(**pun2);
printf("\n %s \n\n ", cadena);

system("pause");
return 0;
}

pero solo funciona si pongo gets(*pun2)!! no lo entiendo, si en la declaración pongo dos asteriscos, ¿por qué en la función gets sólo se pone un * ?

tampoco funciona el programa si pongo printf("\n %s", **pun2); --> esta expresión no me debería mostrar el contenido de pun2??

Si alguien pudiera ayudarme se lo agradecería mucho.

Saludos.
  #2 (permalink)  
Antiguo 26/01/2009, 16:02
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Respuesta: Indireccion multiple de punteros

Esa es facil.

gets() te pide un puntero, porque espera una cadena vacia. entonces si tu le pasas **pun no le pasas ningun puntero, le pasas el valor de pun. Si le pones *pun pues le mandas un puntero, lo cual es normal, terriblemente inseguro, pero normal.

Y finalmente en printf es lo mismo.
**pun es solo UN caracter y ya, *pun es un arreglo monodimensional y pun es un puntero al arreglo(que en si es otro puntero).

Asi que si le pones %s a printf pues obfviamente te va a pedir una cadena o un puntero, no un caracter solo.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:26.