C#

How do I concatenate two arrays in C duplicate

27 September 2026 · 4 min read

How do I concatenate two arrays in C duplicate

Combining arrays is a fundamental operation in C development, frequently encountered when manipulating collections of data. Whether you’re merging user inputs, processing large datasets, or simply organizing information, understanding the nuances of array concatenation is crucial for writing efficient and elegant C code. This article explores various methods for concatenating arrays in C, ranging from simple techniques for basic scenarios to more advanced approaches suitable for complex operations. We’ll delve into the performance implications of each method, helping you choose the optimal solution for your specific needs. By the end, you’ll be equipped with a comprehensive understanding of how to concatenate arrays effectively in C.

Using Concat from LINQ

The LINQ (Language Integrated Query) library provides a straightforward method, Concat, for combining two arrays. This method is highly readable and suitable for most common scenarios. It creates a new array containing all elements from the first array followed by all elements from the second.

Example:

int[] array1 = { 1, 2, 3 }; int[] array2 = { 4, 5, 6 }; int[] combinedArray = array1.Concat(array2).ToArray(); 

While convenient, Concat creates a new array in memory. This can impact performance when dealing with very large arrays. Consider alternative approaches if memory efficiency is paramount.

Utilizing CopyTo and Array.Resize

For performance-sensitive applications, manually copying elements using CopyTo and resizing the destination array with Array.Resize can be more efficient than Concat, particularly for large arrays. This approach avoids the overhead of creating an entirely new array in certain cases.

Example:

int[] array1 = { 1, 2, 3 }; int[] array2 = { 4, 5, 6 }; int[] combinedArray = new int[array1.Length + array2.Length]; array1.CopyTo(combinedArray, 0); array2.CopyTo(combinedArray, array1.Length); 

This method provides finer control over memory management and can be optimized further depending on the specific context.

Working with Array.Copy

Similar to CopyTo, Array.Copy offers another way to manually copy array elements. This method provides more flexibility in specifying source and destination ranges within arrays, enabling scenarios where you might need to concatenate only portions of arrays.

Example:

int[] array1 = { 1, 2, 3, 4, 5 }; int[] array2 = { 6, 7, 8 }; int[] combinedArray = new int[array1.Length + array2.Length]; Array.Copy(array1, combinedArray, array1.Length); Array.Copy(array2, 0, combinedArray, array1.Length, array2.Length); 

This offers a more specialized approach for specific concatenation requirements.

Collections and AddRange

If you are working with collections like List, using AddRange provides a highly efficient method for concatenating. Lists offer dynamic resizing, making them particularly suitable for situations where the final size of the combined array isn’t known beforehand. Adding ranges of elements is generally faster than repeated individual additions.

Example:

List<int> list1 = new List<int> { 1, 2, 3 }; List<int> list2 = new List<int> { 4, 5, 6 }; list1.AddRange(list2); int[] combinedArray = list1.ToArray(); 

This approach offers flexibility and good performance, especially for dynamic array operations.

  • Consider using List and AddRange for dynamic concatenation.
  • For large arrays, CopyTo and Array.Resize offer better performance.

Featured Snippet: For simple array concatenation in C, LINQ’s Concat method provides an elegant and readable solution: array1.Concat(array2).ToArray(). However, for performance-critical operations with large arrays, CopyTo and Array.Resize offer better memory management.

  1. Choose the appropriate method based on your performance requirements.
  2. If using CopyTo, ensure the destination array is appropriately sized.
  3. Consider using collections for dynamic array operations.

Learn More about C Array ManipulationAccording to Stack Overflow’s 2023 Developer Survey, C remains a popular language for backend development. Source

  • C Arrays
  • Array Concatenation
  • LINQ
  • CopyTo
  • AddRange
  • Array Performance
  • C Collections

Placeholder for Infographic: illustrating the performance differences between the concatenation methods.

External Resource 1: Microsoft C Array Documentation

External Resource 2: Microsoft LINQ Concat Documentation

External Resource 3: Stack Overflow Discussion on Array Concatenation

FAQ

What is the fastest way to concatenate arrays in C?

For very large arrays, manually managing memory with CopyTo and Array.Resize offers better performance than Concat.

Choosing the right method to concatenate arrays in C hinges on understanding the nuances of each technique. While Concat offers simplicity, the manual approaches shine when performance is critical, particularly when handling large datasets. Exploring collections and the AddRange method provides additional flexibility for dynamic operations. By considering these factors, you can write more efficient and effective C code. Explore more advanced C array techniques and further optimize your data manipulation strategies.

Question & Answer :

``` int[] x = new int [] { 1, 2, 3}; int[] y = new int [] { 4, 5 }; int[] z = // your answer here... Debug.Assert(z.SequenceEqual(new int[] { 1, 2, 3, 4, 5 })); ```

Right now I use

int[] z = x.Concat(y).ToArray(); 

Is there an easier or more efficient method?


Be careful with the Concat method. The post Array Concatenation in C# explains that:

var z = x.Concat(y).ToArray(); 

Will be inefficient for large arrays. That means the Concat method is only for meduim-sized arrays (up to 10000 elements).

var z = new int[x.Length + y.Length]; x.CopyTo(z, 0); y.CopyTo(z, x.Length);