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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  arreglos bidimensionales y funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: arreglos bidimensionales y funciones  (Leído 2,726 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
arreglos bidimensionales y funciones
« en: 13 Julio 2013, 00:32 am »

Saludos

Tengo una duda de como pasar un arreglo bidimensional a una  funcion cualquiera, si tengo una matriz que se llama multi[filas][columnas] y la quiero pasar a una funcion con la siguiente llamada:

set_value(multi);

por que en la funcion tengo que dejar el corchete[] de las filas vacio y el de las columnas con su respectivo tamanio es algo que no termino de entender y queria saber si alguien me lo podia explicar:

void set_value(int m_arreglo[][COLUMNAS])
{
     //Cuerpo de la funcion
}

de antemano gracias


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: arreglos bidimensionales y funciones
« Respuesta #1 en: 13 Julio 2013, 02:44 am »

¿C o C++?

----

En el caso de C cuando una función se declara en cualquiera de las dos formas:
Código
  1. int fn(int a[]);
  2.  
  3. /* O bien: */
  4. int fn(int a[123]);
En realidad se procesa así:
Código
  1. int fn(int *a);

Y cuando se llama a la función pasando como argumento el nombre de un array este se sustituye por la dirección en memoria de su primer elemento. Por ello no es necesario (ni se recomienda) indicar el numero de elementos del array (no tiene caso).

----

Lo que tu llamas "matriz" solo es un array y por ende no debes indicar el numero de elementos (filas), debes indicar el numero de columnas porque ello es parte del tipo de cada elemento del array.

Para explicarlo mejor un ejemplo en C utilizando alias:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. /* array_10_int == array de 10 elementos de tipo int */
  5. typedef int array_10_int[10];
  6.  
  7. void fn(array_10_int array[1000], size_t num_elem);
  8.  
  9. int main(void)
  10. {
  11.   array_10_int a[10];
  12.   size_t num_elem = sizeof a / sizeof a[0];
  13.   int i;
  14.   int j;
  15.  
  16.   for (i = 0; i < num_elem; i++)
  17.      for (j = 0; j < 10; j++)
  18.         a[i][j] = i * 10 + j;
  19.  
  20.   fn(a, num_elem);
  21.  
  22.   return EXIT_SUCCESS;
  23. }
  24.  
  25. void fn(array_10_int array[], size_t num_elem)
  26. {
  27.   size_t i;
  28.   size_t j;
  29.  
  30.   for (i = 0; i < num_elem; i++){
  31.      for (j = 0; j < 10; j++)
  32.         printf("%4d", array[i][j]);
  33.  
  34.      putchar('\n');
  35.   }
  36. }

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
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: arreglos bidimensionales y funciones
« Respuesta #2 en: 13 Julio 2013, 05:42 am »

muchas gracias por tu respuesta, una ultima duda, por que utilizas el typedef???
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: arreglos bidimensionales y funciones
« Respuesta #3 en: 16 Julio 2013, 22:33 pm »

typedef te permite asignar un alias... sirve para mejorar la legibilidad del código.

Código
  1. typedef unsigned char uchar;

Con esta línea defines un tipo nuevo "uchar" que se corresponde con un "unsigned char"... pero más corto y legible. Hacerlo con estructuras te permite omitir la palabra "struct" cada vez que quieras definir una variable o puntero a una estructura.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Programa Orientado a Objetos en Java con arreglos bidimensionales :)
Java
Neostream 3 43,714 Último mensaje 1 Marzo 2008, 18:36 pm
por **Adem**
Parametros de entrada, arreglos bidimensionales « 1 2 »
.NET (C#, VB.NET, ASP)
greenselves 13 10,961 Último mensaje 16 Marzo 2010, 05:45 am
por [D4N93R]
[C] Paso de arreglos bidimensionales a funciones. (?)
Programación C/C++
oblivionxor 9 12,054 Último mensaje 22 Febrero 2013, 06:45 am
por oblivionxor
duda con arreglos bidimensionales
Programación C/C++
nicolas04 1 1,854 Último mensaje 26 Junio 2014, 21:23 pm
por Flakito81
Arreglos Bidimensionales
Java
Marthy 1 2,203 Último mensaje 9 Febrero 2021, 15:50 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines