Título: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: AlbertoBSD en 21 Junio 2016, 22:13 pm Muy buen dia.
Algo que aprende el dia de ayer fue a copiar un arreglo de caracteres con el operador igual sin ayuda de memcpy o strcpy y derivados. Segun el libro no es algo que se recomiende muy a menudo pero que por lo general indican produce un codigo de ensamblador muy optimizado. Dadas 2 Cadenas de Igual longitud es posible copiar el contenido de una en otra con el operador igual. Código
Normalmente la operacion siguientearca error de compilacion. Código
Pero con ayuda de una estructura de datos de igual longitud: Código
podemos por ejemplo. Código
Repito en el libro no lo recomiendan pero indican que si lo que buscas es optimizar un poco mas el codigo generado sería una opcion valida. En el Libro muestran una funcion generica que hace una copia de bloques como el ejemplo mostrado para cualquier cantidad arbitraria de bytes. En lo que llegue a la casa pongo el código mencionado. Saludos. Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: fary en 22 Junio 2016, 14:16 pm Que buena Alberto ;-)
Código
Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: AlbertoBSD en 25 Junio 2016, 00:51 am El libro menciona una funcion al estilo de memcpy llamada blockmove
Código
Saludos! Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: class_OpenGL en 25 Junio 2016, 01:23 am Vale, igual se me ha ido un poco de las manos XDD
Código
Salida: Código: Hola Hola 000000000023FE40 000000000023FE30 Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: AlbertoBSD en 25 Junio 2016, 01:48 am Código
;-) ;-) ;-) ;-) Esa si que no me la sabia, hay que ver que codigo de ASM produce para ver si hay diferencia. Aun asi ese ejemplo solo copia 4 u 8 bytes no? Digo por el tamaño de un apuntador Deja hago pruebas y lo veo. Saludos! Efectivamente solo copia bytes igual al tamaño de un apuntador: Código
Salida Código: AAAAAAAAAAAAAAA AAAAAAAA 000000000060FE40 000000000060FE30 Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: class_OpenGL en 25 Junio 2016, 01:51 am Sinceramente, no sé cómo el código funciona XD
Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: AlbertoBSD en 25 Junio 2016, 02:00 am El codigo orignal viene de que es posible usar el operador igual para copiar una estructura completa de una variable A a una variable B ejemplo:
Código
salida: Código: 1,10,100 La linea responsable por la copia completa del bloque de memoria de la variable1 a la variable2 es: Código
Y de ahi el codigo mostrado en los post anteriores. lo que tu realizaste fue lo mismo pero solo con el tamaño de un apuntador. Saludos! Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: class_OpenGL en 25 Junio 2016, 02:06 am Justo lo acabo de entender y lo iba a publicar... Estoy ciego xD
Título: Re: [C] Copiar arreglo de caracteres con Operador Igual Publicado por: fary en 25 Junio 2016, 11:40 am Es lo mismo solo qie tratas la estructura como si fuera plana. :xD
Saludos y muy buena también!! |