• Viernes 19 de Abril de 2024, 00:43

Autor Tema:  Buenas Y Consulta  (Leído 2939 veces)

..::[JiOn]::..

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Buenas Y Consulta
« en: Martes 3 de Octubre de 2006, 19:15 »
0
Antes que nada, buenas, soy nuevo en el foro hace un tiempo que vengo leyendo y está muy bueno.

Bueno mi problema es que quiero copiar todo el contenido de un array a otro, sin tener que usar un bucle for como venia haciendolo:

Código: Text
  1.  
  2. int i, n;
  3.  
  4. for(i=0;i<10;i++)
  5. {
  6.      for(i=0;i<10;i++)
  7.      {
  8.            array1[i][n] = array2[i][n];
  9.       }
  10. }
  11.  
  12.  

una vez que copio el contenido de array2 a array1 tengo q modificar array2, asi que convertir array1 en un puntero a array2 no seria la solucion.

AnioN

  • Miembro MUY activo
  • ***
  • Mensajes: 339
    • Ver Perfil
Re: Buenas Y Consulta
« Respuesta #1 en: Martes 3 de Octubre de 2006, 19:32 »
0
me parece que ese codigo tiene un error, creo que seria asi:

Código: Text
  1.  
  2. int i, n;
  3.  
  4. for(i=0;i<10;i++)
  5. {
  6.     for(n=0;n<10;n++)
  7.     {
  8.           array1[i][n] = array2[i][n];
  9.      }
  10. }
  11.  
  12.  

..::[JiOn]::..

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Buenas Y Consulta
« Respuesta #2 en: Martes 3 de Octubre de 2006, 19:52 »
0
Si, perdon, es que no copie codigo y pegue, lo escribi en el post medio apurado. Igual a lo que voy no es a que no me anda ese codigo sino a que quisiera saber si no hay una manera mejor que esa para copiar arrays.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Buenas Y Consulta
« Respuesta #3 en: Martes 3 de Octubre de 2006, 20:45 »
0
Código: Text
  1.  
  2. memcpy(array1, array2);
  3.  
  4.  

http://www.conclase.net/c/librerias/funcion.php?fun=memcpy
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

..::[JiOn]::..

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Re: Buenas Y Consulta
« Respuesta #4 en: Miércoles 4 de Octubre de 2006, 04:24 »
0
Muchas gracias!! Estoy medio olvidado con el C ^_^

geobeid

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Re: Buenas Y Consulta
« Respuesta #5 en: Viernes 6 de Octubre de 2006, 06:47 »
0
CLARO JUANK PERO SI NO ME EQUIVOCO INTERNAMENTE ESA FUNCION HACE EXACTAMENTE QUE ..::[JiOn]::.. VIENE HACIENDO. EN DEFINITIVA PARA COPIARLO HAY QUE RECORRERLO NO HAY OTRA FORMA :kicking:
[size=109]
SI QUERES ENCONTRAR A JESÚS GOOGLEALO
[/size]

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Buenas Y Consulta
« Respuesta #6 en: Viernes 6 de Octubre de 2006, 14:46 »
0
No no hace lo mismo porque hasta donde se memcpy hace copia de bloques lo cual es mucho mas rápido que uno a uno como en el codigo que han mostrado, sin contar que hace le codigo mas legible y facil d mantener.

La manera en que memcpy hace la copia en general debe ser mucho mas eficiente que hacerla 'manualmente' pero eso tambien depende del compilador porque hay compiladores que las instrucciones de copia uno a uno las compilan generando codigo que copia porciones en bloque y algunos utilizan caracteristicas especiales de los procesadores para la generacion de codigo es decir instrucciones como las SSE4 o SSE3 o cualquiera de esas etc. que poseen por ejemplo los procesadores pentium algunos compiladores pueden ser capaces de generar codigo para usarlas, otros no.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

The Black Boy

  • Miembro de PLATA
  • *****
  • Mensajes: 1043
  • Nacionalidad: co
    • Ver Perfil
    • http://www.mslatam.com/latam/technet/mva2/Microsite.aspx?alias=JairoDiaz
Re: Buenas Y Consulta
« Respuesta #7 en: Viernes 6 de Octubre de 2006, 17:02 »
0
yo no conocia esa instruccion, siempre lo hacia manual  :blink:    :whistling:

excelente, aunque yo creo lo mismo, creo que esa funcion por debajo lo copia rrecoriendo, aunque como dije antes ni siquiera conozco la funcion

Salu2 :hola:
El inteligente no es aquel que lo sabe todo
sino aquel que   sabe utilizar lo poco que sabe.


Espacio Personal

si necesitas algo de programacion click aqui, si no esta aqui no existe

Programacion]

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Buenas Y Consulta
« Respuesta #8 en: Viernes 6 de Octubre de 2006, 17:10 »
0
¿Recorriendo que? Esa funcion copia bytes ... y al menos en x86/x64 hay instrucciones (no funciones de C como memcpy) de ensamblador especificas para copiar bytes. Tampoco se usan extensiones para una tarea tan trivial.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Buenas Y Consulta
« Respuesta #9 en: Viernes 6 de Octubre de 2006, 17:22 »
0
claro, el ejemplo es trivial.. obviamente...
pero me inquieta saber si un compilador en un caso determinado puede optar por generar codigo usando extenciones o en otro puede decidir generar codigo solo mov?  :rolleyes:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Buenas Y Consulta
« Respuesta #10 en: Viernes 6 de Octubre de 2006, 18:37 »
0
Cita de: "JuanK"
claro, el ejemplo es trivial.. obviamente...
pero me inquieta saber si un compilador en un caso determinado puede optar por generar codigo usando extenciones o en otro puede decidir generar codigo solo mov?  :rolleyes:
Esta funcion suele estar en la Run Time de C que por lo general esta precompilada en una biblioteca ya sea estatica (.lib) o dinamica (.dll para Windows). Las extensiones no suelen usarse a menos que explicitamente las habilites ya que como su nombre lo indican no estan presentes en todos los micros ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.