Título: Vectores dinamicos Publicado por: latinoalfredo en 29 Octubre 2012, 22:31 pm hola tengo un preblema a la hora de usar vectores dinamicos en C, os cuento.
primero creo dos vectores: int *m1,*m2; m1=(int*)malloc(9*sizeof(int)); m2=(int*)malloc(9*sizeof(int)); les asigno valeros y compruevo que no hay problema, entonces creo un tercer vector int *m3; m2=(int*)malloc(9*sizeof(int)); Cuando empece a usarlos me empezaron a dar problemas y descubri un problema.El primer vector y el tercero tenian 4 espacios en comun en la asignacion de la memoria, con lo cual lo que ponia en la posicion 6 del primero de me ponia tambien en la 1 del 3. Como es esto posible si estan bien declarados. Posdata: para avanzar en un vector uso un buble y avanzo en el vector con (m3+i*sizeof(int)); Título: Re: Vectores dinamicos Publicado por: flony en 29 Octubre 2012, 23:10 pm podrías poner el código así lo vemos... ;)
Título: Re: Vectores dinamicos Publicado por: xiruko en 29 Octubre 2012, 23:11 pm no se si habra sido un error escribiendo aqui, pero por si acaso no te has fijado:
Citar entonces creo un tercer vector int *m3; m2=(int*)malloc(9*sizeof(int)); si en el codigo no tienes este error, diria que eso no deberia pasar, pues la funcion malloc() devuelve un puntero nulo en el caso de que no haya esa memoria disponible (que para un vector de 9 enteros suele haberla...). lo mejor seria que postearas el trozo de codigo del problema para asi poderlo solucionar sin suposiciones y demas. Citar Posdata: para avanzar en un vector uso un buble y avanzo en el vector con (m3+i*sizeof(int)); que es un buble? igualmente, para avanzar puedes hacer simplemente: m3[ i] (el espacio es para que aqui no salga en cursiva). un saludo! Título: Re: Vectores dinamicos Publicado por: latinoalfredo en 30 Octubre 2012, 09:20 am aqui os pongo el codigo de la funcion que recibe dos de los vectores y los suma en un tercero.
Código: void sumar(int *m1,int *m2,int fm1,int cm1) Título: Re: Vectores dinamicos Publicado por: leosansan en 30 Octubre 2012, 11:17 am int *m3; m2=(int*)malloc(9*sizeof(int));<== aqui deberia ir m3= y no m2= Título: Re: Vectores dinamicos Publicado por: rir3760 en 30 Octubre 2012, 16:28 pm El problema lo tienes al realizar la aritmética de punteros, tu la realizas en la forma:
Código En cada una de las expresiones multiplicas al indice por "sizeof(int)", honestamente no entiendo porque. En C la aritmética de punteros tiene un ajuste automático en base al tipo apuntado. En buen cristiano significa que: Código Es la dirección en memoria del elemento con indice "i" en el array "a" sin importar el tipo, eso es transparente para el programador. Y para acceder al objeto apuntado se utiliza: Código
En cuanto a la función "sumar" primero tienes que indicar que parámetros recibe (los nombres no son descriptivos) y la operación que debe realizar. Un saludo Título: Re: Vectores dinamicos Publicado por: latinoalfredo en 30 Octubre 2012, 22:57 pm gracias rir3760 tu respuesta soluciono mi problema.
|