Bueno tengo la siguiente declaración,
int **matrizR;
matrizR[0][0]=0;
matrizR[0][1]=1;
matrizR[0][2]=2;
matrizR[0][3]=3;
matrizR[0][4]=4;
........................
1.- Como paso esa matriz como parámetro para una función?
int SumaColumnas(int *matrizR, int i , int j)
Me acuerdo haber encontrado que si se usa doble puntero el parámetro se pasa con 1 puntero, esta bien eso así?
2.- quiero hacer una suma pero me sale un error:
Citarerror: subscripted value is neither array nor pointer
supongo por que algo estoy sumando
int suma=0;
suma=suma + matrizR[0][0];
suma=suma + matrizR[0][1];
Si es un puntero a puntero lo pasas como puntero a puntero, es decir, así:
int SumaColumnas(int ** matrizR, int i , int j)
Recuerda que debes haber reservado memoria para esa matriz.
ok. si tengo la memoria reservada xD
gracias ahi me funciono el codigo entero
Al imprimir esa matriz que pase como parámetro el programa se cae, creo que no es la forma.
Como le reservas memoria a la matriz?
en el main tengo
int **matrizR;
matrizR = malloc(filas * sizeof *matrizR);
for (k = 0; k < m; k++){
matrizResultadoR[k] = malloc(columnas * sizeof *matrizR[k]);
}
y la inicializo con datos, luego pongo
Suavizado(**matrizR,filas,columnas);
y la recibo con
int Suavizado(int**matrizR, int m , int n){
matrizResultadoR = matrizR; //matrizResultadoR dentro de esta funcion tbn le doy //memoria de la misma forma
.....}
#include <stdio.h>
#include <stdlib.h>
#define FILAS 4
#define COLUMNAS 4
int ** matriz;
int main(void){
register int i;
matriz = (int**)malloc(sizeof(int*)*FILAS);
for(i=0;i<FILAS;i++)
matriz[i] = malloc(sizeof(int)*COLUMNAS);
return 0;
}
pero para eso yo necesito una determinada fila y columna, en este caso mis matrices son dinamicas
Reemplaza las macros FILAS y COLUMNAS por tus variables y listo.
El define se puede usar para variables?... por que yo estoy usando 2 archivos y mis matrices pueden ser de 50x50 o de 40x20 o de lo que sea por eso no he usado define
Me refiero que en vez de usar las macro que usé yo en mi código uses variables con el tamaño que necesites de la matriz.
El problema no es la asignación de memoria, mi matriz dentro del main funciona, pero al pasarla como parámetro para una función de otro archivo dentro de mi proyecto la matriz no la puedo ver, es decir, si imprimo la posición 1,1 se cae el programa
El problema es la manera en que le pasas la matriz cuando llamas a la función.
Suavizado(**matrizR,filas,columnas);
Le estas pasando un entero cuando deberías pasarle un puntero a puntero a entero de esta manera:
Suavizado(matrizR,filas,columnas);
Eso era... muchísimas gracias, me pondré a estudiar punteros, gracias