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

Array 2D en puntero

Estas en el tema de Array 2D en puntero en el foro de C/C++ en Foros del Web. Buenas, estoy aprendiendo un poco de C e intento crear una función que me permita cargar un array bidimensional y modificare con repercusión en el ...
  #1 (permalink)  
Antiguo 20/03/2010, 20:33
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Array 2D en puntero

Buenas, estoy aprendiendo un poco de C e intento crear una función que me permita cargar un array bidimensional y modificare con repercusión en el main(), el problema es que, he intentado usar punteros, peno no se muy bien como se usan, ¿alguien me puede aclarar como solucionar el problema?¿que hago?
Código c:
Ver original
  1. void salida(int *p); // Declaro la funcion
  2.  
  3. main()
  4.   {
  5.     int a[2][2]= {{2, 4},{1,3}}; // Cargo un array bidimensional.
  6.     int *p; // Cargo un puntero
  7.     p=&a;  /* ERROR */ // Intento direccionar el muntero a el array
  8.     salida(p); // Llamo la funcion salida
  9.     printf("%d", a[0][0]); // Intento mostrar el primer elemento del array 2D
  10.   }
  11.  
  12. void salida(int *p)
  13.   {
  14.     (*p)[0][0] = 8; /* ERROR */ // Intento cambiar el primer elemento del array
  15.   }

Este seria justo hasta el fallo

Código c:
Ver original
  1. #include <stdio.h>
  2. main()
  3.   {
  4.     int n[5][6];
  5.     int **p;
  6. /* ¿ */ p=&n; /* ? ¿esto no me va como seria? */
  7.   }
  8. /*
  9. 6 E:\Documents and Settings\Administrator\Desktop\borrame.cpp cannot convert `int (*)[5][6]' to `int**' in assignment
  10. */

Gracias por adelantado.

Última edición por grisuco; 21/03/2010 a las 10:09
  #2 (permalink)  
Antiguo 21/03/2010, 15:43
 
Fecha de Ingreso: marzo-2010
Mensajes: 4
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Array 2D en puntero

Bueno, creo que me lo he solucionado yo solo, pero si alguien puede aportarme algo mas se lo agradecería.
Mi solución:

Código c:
Ver original
  1. #include <stdio.h>
  2.  
  3. void kkk(int **k)
  4.   {
  5.     k[0][0]=1;
  6.     k[0][1]=2;
  7.     k[1][0]=4;
  8.     k[1][1]=8;
  9.   }
  10. main()
  11.   {
  12.     int num[2][2], n, v;
  13.     n=0;
  14.     v=2;
  15.     int *p[v];
  16.     while (n<v)//Aqui, apunto con el puntero a cada una de las partes del Array 2D
  17.       {
  18.         p[n]= num[n];
  19.         n++;
  20.       } //Listo
  21.     kkk(p);
  22.     printf("%d\t", num[0][0]);
  23.     printf("%d\n", num[0][1]);
  24.     printf("%d\t", num[1][0]);
  25.     printf("%d\n", num[1][1]);
  26.   }
No se si es la mejor solución,
pero es la que se me ha ocurrido.

Etiquetas: puntero
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 05:31.