elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Consultas sobre punteros en funciones por referencia..
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consultas sobre punteros en funciones por referencia..  (Leído 2,785 veces)
roser24

Desconectado Desconectado

Mensajes: 18



Ver Perfil
Consultas sobre punteros en funciones por referencia..
« en: 5 Mayo 2010, 10:11 am »

Hola chicos,primeramente al ser mi primer post presentarme mi nombre es rosario y he estado viendo C por mi cuenta pero al llegar a punteros me he detenido ya que se me han generado dudas..

Por ejemplo,
Cuando en el enunciado de un ejercicio me dicen:
Crear una función a la que se le pasará una cadena de caracteres de cualquier
 longitud
  o  " Crear una función que copie el contenido de un primer vector de flotantes
en otro segundo con el mismo número de elementos. ",en Relacion al numero de elementos yo realize los ejercicios usando despues del printf en el cual el usuario indique la longitud lo siguiente:
float *vec=new float[l]; // caso 1 donde l es la longitud..
char *cad = new char[l+1];// le puse el mas uno por el /0 ..

claro que luego use un delete para liberar la memoria reservado delete []vec;
Pero no se si hago bien..
os pongo el codigo del primer ejercicio para que porfavor me deis vuestra opinion..
Salu2
Código
  1. /*5.    Crear una función que copie el contenido de un primer vector de flotantes
  2. en otro segundo con el mismo número de elementos. La función debe ser válida para
  3. cualquier par de vectores con el mismo número de elementos. Genera el
  4. programa principal para poder ejecutar la función creada.*/
  5.  
  6. #include<stdio.h>
  7. #include<string.h>
  8. void copiar_valor(float *,int,float *);
  9. void print_vector(float *,int,float *);
  10. void main(){
  11.  
  12. int l=0,i=0;
  13. do{
  14. printf("Introduce la longitud del primer vector:\n");
  15. scanf("%d",&l);
  16. }while(l<0);
  17. printf("La longitud del segundo vector sera la misma\n");
  18. float *vec=new float[l];
  19. float *vec2=new float[l];
  20.  
  21. for(i=0;i<l;i++){
  22. printf("inserta valores para el primer vector %d:",i);
  23. scanf("%f",vec+i);
  24. }
  25.  
  26.  
  27. copiar_valor(vec,l,vec2);
  28. print_vector(vec,l,vec2);
  29. delete []vec;
  30. delete []vec2;
  31. }
  32. void copiar_valor(float *vector,int size,float *vector2){
  33. int i;
  34. for(i=0;i<size;i++){
  35.  
  36. *(vector2+i) = *(vector+i);
  37. }
  38.  
  39.  
  40. }
  41. void print_vector(float *vector,int size,float *vector2){
  42. int j;
  43. for(j=0;j<size;j++){
  44. printf("%0.2f\n",*(vector2+j));
  45. }
  46. for(j=0;j<size;j++){
  47. printf("\n%0.2f",*(vector+j));
  48.  
  49.  
  50. }
  51. }
  52.  

..Mil gracias  :)


En línea

Gallu

Desconectado Desconectado

Mensajes: 247



Ver Perfil
Re: Consultas sobre punteros en funciones por referencia..
« Respuesta #1 en: 5 Mayo 2010, 15:29 pm »

Chica , la verdad por más que le de vueltas no se cual es la duda que tienes ...   :-X


En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
roser24

Desconectado Desconectado

Mensajes: 18



Ver Perfil
Re: Consultas sobre punteros en funciones por referencia..
« Respuesta #2 en: 5 Mayo 2010, 17:03 pm »

hola la duda es en relacion a que si esta bien que cuando el el enunciado de los ejercicios me digan "sea cual sea el numero de los elementos.."Hago bien usando NEW?
float *vec=new float[l]; // caso 1 donde l es la longitud..

el lenguaje que utilizo es C pero no uso malloc porque me da error ,sin embargo al usar new no me da errores y compila  y ejecuta,.. Y no se si hago bien.. con el uso del NEW para estos ejercicios...

y luego otra duda sabeis de alguna pagina en la que pueda encontrar ejercicios resueltos de cadenas en paso por referencia? tengo un ejercicio de cadenas y por mas que gogleo no encuentro.. =(
En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Consultas sobre punteros en funciones por referencia..
« Respuesta #3 en: 5 Mayo 2010, 17:05 pm »

Tu código esta bien hecho. Con respecto al manejo de punteros, esta correcto tu programa.

Saludos!

Edit:

Cuando envías valores por referencia, hacer algo así como una copia de la variable ingresada, esta variable es idéntica a la original, comparten su memoria asignada (no confundir con punteros, Estos no comparten memoria con la variable matriz, editan sectores de memoria). Ve el siguiente ejemplo.

Código
  1. void ala(char[]);
  2.  
  3. int main()
  4. {
  5.    char cadena[] = "Hola";
  6.    printf("%p\n", cadena);
  7.    ala(cadena);
  8. }
  9.  
  10. void ala(char text[])
  11. {
  12.    printf("%p\n", text);
  13. }

Cuando tu envías la cadena así: "char text[]" todo se envía por referencia.
« Última modificación: 5 Mayo 2010, 17:20 pm por Og. » En línea

|-
Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: Consultas sobre punteros en funciones por referencia..
« Respuesta #4 en: 5 Mayo 2010, 17:06 pm »

Vale, ahora se entiende la duda. New es una función de c++. para usar Malloc, calloc, free, realloc y demás en C, necesitas incluir la librería stdlib

Advertencia - mientras estabas leyendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
En línea

roser24

Desconectado Desconectado

Mensajes: 18



Ver Perfil
Re: Consultas sobre punteros en funciones por referencia..
« Respuesta #5 en: 5 Mayo 2010, 17:47 pm »

Muchas gracias a todos por responder,tenia razon akai,me daba error por no usar la libreria stdlib.h cuando queria probar con malloc,..me leere mucho ya que solo habia oido de malloc y free pero no de calloc ,realloc..
Y lo del new lo preguntaba porque mañana tendre un examen de C y seguramente cae algo de punteros y no vaya a ser que el profe al ver mi uso de new me ponga mala nota ya que es de C++ y no de C..xD
Por utlimo lo de las cadenas... no lo entendi muy bien ,,pero para no liaros con 2 temas en el mismo post creare uno nuevo.Nuevamente mil gracias por despejar mis dudas =),
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
c++ Funciones por referencia
Programación C/C++
programador10 2 1,555 Último mensaje 11 Junio 2011, 06:18 am
por programador10
Duda de Bash; Referencia indirecta a arreglos mediante funciones.
Scripting
astinx 0 2,162 Último mensaje 12 Noviembre 2011, 22:39 pm
por astinx
duda parametros por referencia vs punteros(Pascal/C)
Programación General
Shp112 0 1,073 Último mensaje 10 Enero 2014, 02:29 am
por Shp112
Funciones i pasar por referencia arrays
Scripting
dracrac 4 1,180 Último mensaje 7 Septiembre 2015, 22:38 pm
por dracrac
Funciones por referencia
Programación C/C++
Juan Sanchez 5 576 Último mensaje 9 Abril 2020, 21:09 pm
por Juan Sanchez
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines