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)
| | |-+  Al pasar un array por parametro a una funciona ¿se pasa una copia?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Al pasar un array por parametro a una funciona ¿se pasa una copia?  (Leído 3,228 veces)
Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Al pasar un array por parametro a una funciona ¿se pasa una copia?
« en: 27 Septiembre 2012, 01:33 am »

Eso es lo que he leído en algunos libros, pero según este código no es así:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void ver(int array[]) {
  5.  
  6.  array[0] = 10;
  7.  array[1] = 11;
  8. }
  9.  
  10.  
  11. int main()
  12. {
  13.  int *array = new int[5];
  14.  array[0] = 0;
  15.  array[1] = 1;
  16.  array[2] = 2;
  17.  array[3] = 3;
  18.  array[4] = 4;
  19.  
  20.  cout << array[0] << endl;
  21.  cout << array[1] << endl;
  22.  ver(array);
  23.  cout << array[0] << endl;
  24.  cout << array[1] << endl;
  25.  
  26.  
  27. }
  28.  
  29.  

Si fuera una copia del array lo que se pasara a la función, entonces la posición 0 y 1 del array deberían valer 0, 1 respectivamente, en vez de 10 y 11 que es lo que me muestra cout al ejecutar el código.


En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Al pasar un array por parametro a una funciona ¿se pasa una copia?
« Respuesta #1 en: 27 Septiembre 2012, 02:07 am »

No. En C y C++ (en este ultimo exceptuando las referencias) todo se pasa por valor salvo los arrays. Con estos lo que se pasa es la dirección del primer elemento.

Y las funciones declaradas en cualquiera de estas dos formas:
Código
  1. int fn(char a[]);
  2. int fn(char a[N]);
En realidad se procesan de así:
Código
  1. int fn(char *a);

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Aikanáro Anário


Desconectado Desconectado

Mensajes: 694



Ver Perfil WWW
Re: Al pasar un array por parametro a una funciona ¿se pasa una copia?
« Respuesta #2 en: 27 Septiembre 2012, 04:21 am »

¿Qué quiere decir que todo se pasa por valor?
En línea

Lo que faltaba en internet: http://binar10s.blogspot.com/
Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: Al pasar un array por parametro a una funciona ¿se pasa una copia?
« Respuesta #3 en: 27 Septiembre 2012, 13:38 pm »

Pasar por valor un parámetro quiere decir que lo que realmente le estás pasando a la función es una copia del valor de esa variable, no la variable en sí, por lo que si tú modificas ese valor dentro de la función, fuera de ella no va a tener ningún efecto porque con lo que trabaja esa función es con una copia de la variable original.

Cuando pasas por referencia estás pasando a la función la dirección de memoria de la variable en sí, por lo que si la modificas dentro, seguirá estando modificada a la salida. En este caso no se trabaja con una copia, sino con la variable original.

Realmente, el nombre de un array es un puntero al primer elemento. De esta manera, cuando pasas un array como parámetro de una función, estás pasando un puntero que, aunque sea una copia del original, seguirá apuntando al primer elemento del array, por lo que todo lo que modifiques del array se verá alterado también a la salida.
« Última modificación: 27 Septiembre 2012, 13:39 pm por Don Pollo » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como crear un array de parametro?
Programación Visual Basic
ricardovinzo 1 1,886 Último mensaje 20 Octubre 2008, 06:33 am
por cassiani
[SOLUCIONADO] Pasar array como parámetro.
Java
NetJava 3 22,902 Último mensaje 15 Febrero 2011, 21:55 pm
por Debci
Acceder al parametro array de preg_match_all
PHP
franfis 4 2,230 Último mensaje 25 Marzo 2014, 08:38 am
por engel lex
Ayuda: pasar array como parámetro (del objeto)
Java
JonaLamper 3 2,584 Último mensaje 30 Octubre 2014, 13:27 pm
por ivancea96
[C] Pasar array como parametro a un "procedimiento" (void)
Programación C/C++
n-utz 3 2,664 Último mensaje 11 Junio 2016, 23:44 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines