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

Problema complejo de arrays bidimensionales y punteros

Estas en el tema de Problema complejo de arrays bidimensionales y punteros en el foro de C/C++ en Foros del Web. Hola a todos. Feliz Navidad lo primero.Tengo un problema que espero alguien pueda solucionarme: (*(*(array+1)+1))=5; Vale, al meter esto en la función main, funciona. Es ...
  #1 (permalink)  
Antiguo 27/12/2010, 13:46
 
Fecha de Ingreso: octubre-2010
Ubicación: madrid
Mensajes: 10
Antigüedad: 14 años, 1 mes
Puntos: 0
Problema complejo de arrays bidimensionales y punteros

Hola a todos. Feliz Navidad lo primero.Tengo un problema que espero alguien pueda solucionarme:

(*(*(array+1)+1))=5;

Vale, al meter esto en la función main, funciona. Es decir:
ves a la posición de memoria de array, ya que (array a secas, (sin [2][2])es un puntero que apunta al primer elemento de dicho array). Suma uno a esa posición de memoria. es decir;

si array es la posición de memoria 0001, ahora esta en 0002. Al ser un array bidimensional, en 0002 no hay dato, sino otra dirección de memoria que apuntará a [][x]. Hasta ahí todo bien. es decir en array 0002 se encuentra con 0004. le suma 1, por lo que esta en 0005.(ahora mismo esta en array [1][1]). por ultimo, el asterisco que queda, dice que vaya a esa posición de memoria, en la que ya se encuentra nuestro dato. y lo iguale a 1.

No se si lo e explicado bien pero vamos que esto funciona perfectamente y esta comprobado. El problema es cuando paso esto a una función. no me funciona.

a la función debería pasarlo como array a secas, o como *array? es decir:

iguala_5 (array); ?

o

iguala_5 (*array); ?

de todas formas e probado todas las formas. esta es la función;


int iguala_5(int *a)
{
*(*(a+1)+1)=5;
}


no me funciona pero es q ni siquiera me compila. este es el error que me marca;


C:\Users\Jonna\Desktop\main.c In function `iguala_2':
43 C:\Users\Jonna\Desktop\main.c invalid type argument of `unary *'
C:\Dev-Cpp\Makefile.win [Build Error] [../Users/Jonna/Desktop/main.o] Error 1

He probado a ponerlo así:

*(*(a+1)+1)=5;
*(*(*a+1)+1)=5;
(*(*(a+1)+1))=5;...tampoco funciona.

trabajo con dev-c++. por otro lado deciros que partimos de que esa misma operación en el main sin pasarla por función, no da ningún tipo de error. Es más, opera correctamente en el array.
Necesitaría poder hacer funcionar esto en concreto.

muchas gracias por adelantado si alguien tiene dudas por que lo e explicado mal, no tengo problemas en volver a explicar algo.
  #2 (permalink)  
Antiguo 27/12/2010, 18:37
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Problema complejo de arrays bidimensionales y punteros

el problema lo tendras al pasarlo por funcion

aqui te dejo el codigo de como se hace

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void iguala5(int matriz[5][5]);
  5.  
  6. int main()
  7. {
  8.     int matrix[5][5];
  9.     //(*(*(matrix+1)+1))=5;
  10.  
  11.     iguala5(matrix);
  12.  
  13.     printf("valor [1][1] es: %d\n", matrix[1][1]);
  14.  
  15.     system("pause");
  16.     return 0;
  17. }
  18.  
  19.  
  20. void iguala5(int matriz[5][5])
  21. {
  22.     (*(*(matriz+1)+1))=5;
  23. }

Etiquetas: arrays, bidimensionales, punteros
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 10:46.