C/Visual C - Punteros y pasaje de parametros

 
Vista:

Punteros y pasaje de parametros

Publicado por charly (2 intervenciones) el 27/03/2007 20:24:07
Tengo una duda sobre punteros cuando los paso por parametro.
En el ejemplo tengo una funcion que recibe un char * y le asigna un nombre. Como le paso un puntero estoy simulando pasaje por referencia.
Pero al llamar a la funcion desde el main y tratar de imprimir ese nombre por pantalla parece que no lo asigna.

Por que pasa esto?

#include <stdio.h>

void funcion (char *n){
n = "pepe";
printf("%s\n",n);
}

int main (){

char nom[10];

funcion(nom);
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Punteros y pasaje de parametros

Publicado por zkoria (5 intervenciones) el 27/03/2007 20:46:54
Prueba con éste. Recuerda que, las variables locales se detruyen despues de salr de la funcion. y como igualabas a una variable local que solo era vallida durante la funcion pos por eso a la hora de retornar esa variables caminaba... y tu apuntador seguia apuntando a esa memoria. Medita y Progresa.

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

void funcion (char *n){

strncpy(n, "pepe", strlen("pepe")+1);
}

int main (){

char nom[10];

funcion(nom);
printf("nom: %s\n",nom);

return 0;
}

Salu2. ThePowerThisInMind...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros y pasaje de parametros

Publicado por fernando.gomez (1603 intervenciones) el 27/03/2007 21:29:18
Lo que no entiendo es el por qué strncpy... sería más rápido emplear un strcpy normalito. A final de cuentas, estás compiando toda la cadena.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros y pasaje de parametros

Publicado por charly (2 intervenciones) el 27/03/2007 22:43:16
Gracias por la pronta respuesta.

Estaba haciendo cualquier cosa, primero que era una variable local y segundo asignar a un puntero a char una cadena, con respecto a esto ultimo no me deberia tirar algun tipo de warning? ya que:

nom = "pepe"
(char*) = (string)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros y pasaje de parametros

Publicado por Eliecer Hdz Garbey (4 intervenciones) el 31/03/2007 06:37:59
sí pero strncpy te permitiría conseguir solo una parte de la cadena, como por ejemplo un cadena que tenga 10 letras y 20 espacios solo necesitas copiar hasta donde estan las letras. o imaginate si necesitas para hacer referencia a un texto copiar sóo su 30 primeras letras, etc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros y pasaje de parametros

Publicado por Eliecer Hdz Garbey (4 intervenciones) el 31/03/2007 06:39:48
sí pero strncpy te permitiría conseguir solo una parte de la cadena, como por ejemplo un cadena que tenga 10 letras y 20 espacios solo necesitas copiar hasta donde estan las letras. o imaginate si necesitas para hacer referencia a un texto copiar sóo su 30 primeras letras, etc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar