[C con Clase] Problema con sizeof

Jose Ramon Dominguez Barba josedb_90 en hotmail.com
Vie Sep 3 23:00:20 CEST 2010


hola pau
 

 

En la forma que trabaja sizeof no lo recuerdo muy bien pero....

 

> Date: Fri, 3 Sep 2010 21:06:24 +0200
> From: pmb.manent en gmail.com
> To: cconclase en listas.conclase.net
> Subject: [C con Clase] Problema con sizeof
> 
> Buenas noches a todos,
> 
> Primero agradecer todo el trabajo y empeño dedicado para realizar este 
> fantastico web.
> Les escribo porque tengo un problema con el sizeof:
> Yo quiero hacer una función que me diga cuantas filas y columnas 
> tiene una matriz. Para eso uso el operador sizeof. El codigo que uso es
> f=sizeof A[0]/sizeof(int);//filas totales
> c=sizeof A/sizeof A[0];//columnas totales
> Estas lineas funcionan perfectamente en el main, pero al introducirlas 
> en una función no da buenos resultados. El codigo completo que uso para 
> comprovar el error es
> 
> #include <iostream>
> 
> using namespace std;
> 
> #define cmax 10
> #define fmax 10
> 
> void sizematrix (int mat[cmax][fmax], int &c, int &f);
> 
> int main(){
> int A[cmax][fmax];
> int c, f;
> 
> sizematrix(A,c,f);
> cout<<"filas = "<<f<<", columnas = "<<c<<endl;//esto corresponde a 
> la funcion sizematrix
> 
> f=sizeof A[0]/sizeof(int);//filas totales
> c=sizeof A/sizeof A[0];//columnas totales
> cout<<"filas = "<<f<<", columnas = "<<c<<endl;//esto corresponde al main
> 
> system("pause");
> }
> 

Analizando la declaracion se la funcion, entiendo que estas mandando un arreglo bidimencional, pero en las operaciones estas manejando como si fuera nada unidimencional

    f=sizeof A[0]/sizeof(int);//filas totales        c=sizeof A/sizeof A[0];//columnas totales
*    f=sizeof A[0][0]/sizeof(int);//filas totales     c=sizeof A[0]/sizeof A[0][0];//columnas totales

segun yo la forma correcta seria como la segunda linea. Pero si estas empleando apuntadores, ignora lo leido.

 

...Espero a verte servido


> void sizematrix (int mat[cmax][fmax], int &c, int &f){
> f=sizeof mat[0]/sizeof(int);//files totals
> c=sizeof mat/sizeof mat[0];//columnes totals
> }
> 
> El caso es que el main me dice que la matriz es de 10X10, pero la 
> función me dice que es de 10X0. He comprovado toda la sintaxis y también 
> he provado distintas formas de hacer lo mismo, pero sin resultados.
> Agradezco de antemano cualquier sugerencia.
> 
> Pau
> 
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100903/510957c7/attachment.html>


Más información sobre la lista de distribución Cconclase