¿Cómo concateno dos matrices para obtener una única matriz que contenga los elementos de ambas matrices originales?¿Cómo puedo concatenar dos matrices en C?
Respuesta
Las matrices en C simplemente son un área contigua de memoria, con un puntero a su inicio *. Así que la fusión de los involucra:
- encontrar la longitud de las matrices A y B, (que probablemente necesitará saber el número de elementos y la
sizeof
cada elemento) - Asignación (
malloc
) una nueva matriz C que es el tamaño de A + B. - Copia (
memcpy
) la memoria de A a C, - Copie la memoria de B a C + la longitud de A (consulte 1).
- Es posible que desee también para desasignar (
free
) la memoria de A y B.
Tenga en cuenta que esta es una operación costosa, pero esta es la teoría básica. Si está utilizando una biblioteca que ofrece algo de abstracción, es posible que esté mejor. Si A y B son más complicados que una matriz simple (por ejemplo, arreglos ordenados), tendrá que hacer una copia más inteligente, luego los pasos 3 y 4 (consulte: how do i merge two arrays having different values into one array).
- Aunque el propósito de esta cuestión, la explicación puntero será suficiente, en sentido estricto (y para apaciguar el autor del comentario más abajo): C tiene el concepto de una matriz, que se puede utilizar sin el sintaxis de punteros. En lo que respecta a la implementación, sin embargo, una matriz en C y un área contigua de memoria, con un puntero, están lo suficientemente cerca que pueden ser, y a menudo se usan, indistintamente.
¿De dónde vino "... con un puntero a su comienzo ..."? Cuando declaro 'int a [10]' obtengo un área contigua de memoria con 10 'int' y ningún puntero en absoluto. – AnT
@AndreyT: 'a' es su puntero. Parece ser consciente de esto en su comentario sobre la otra respuesta ... – Shog9
@ Shog9: 'a' no es un puntero. 'a' es una matriz. Cuando el tipo de matriz decae a tipo de puntero, el puntero resultante es solo un valor temporal intermedio, que no tiene nada que ver con 'a'. Aunque los estados posteriores a la publicación son incorrectos, a menos que se trate específicamente de matrices 'malloc'ed. – AnT
- 1. Concatenar dos matrices de caracteres?
- 2. C++ concatenar dos matrices int en una mayor variedad
- 3. Concatenación de dos matrices en Objective-C
- 4. Concatenar dos matrices numpy en la 4ta dimensión
- 5. ¿Cómo puedo concatenar matrices de alias en Perl?
- 6. Macro para concatenar dos cadenas en C
- 7. ¿Cómo combinaría dos matrices en Objective-C?
- 8. Concatenar dos campos
- 9. JavaScript: ¿Cómo unir/combinar dos matrices para concatenar en una matriz?
- 10. Concatenar valores de n matrices en php
- 11. ¿Cómo concatenar dos cadenas en iPhone?
- 12. ¿Cómo concatenar dos líneas rápidamente en Vim?
- 13. Cómo concatenar dos (IO) Cuerdas en Haskell?
- 14. Concatenar una matriz de matrices en Coffeescript
- 15. R concatenar dos factores
- 16. concatenar dos cadenas
- 17. regresar dos matrices creadas en C++
- 18. C#, Linq2Sql: ¿Es posible concatenar dos consultas en una?
- 19. array dividido en dos matrices
- 20. Intersecar dos matrices
- 21. ¿Cómo declaro dos matrices dimensionales en javascript?
- 22. cómo intersectar dos matrices en el objetivo C?
- 23. Cómo concatenar dos archivos tcpdump (archivos pcap)
- 24. ¿Cómo concatenar dos historias de git?
- 25. R: ¿cómo puedo concatenar un vector?
- 26. ¿Cómo mezclar dos matrices en Java?
- 27. Fusionando dos matrices en Bash
- 28. php fusionar dos matrices
- 29. Concatenar enteros en C#
- 30. uniendo dos matrices numpy
Sí ... Dado que ambas respuestas parecen responder a la interpretación de "concatenación", y el OP no ha vuelto a aclarar, he editado la pregunta para reflejar esto. – Shog9