Jagged Array or Array of Arrays in C

A jagged array (also referred to as "ragged arrays" or "array of arrays") in the C programming language is an array of arrays in which each element of the primary array is a reference to another array rather than a fixed-size component. It enables the generation of arrays with a variable number of columns, with a varied number of columns for each row. Jagged arrays might be useful when dealing with irregular data sets where the total amount of columns in each row varies.

Example:

The following are the techniques for implementing the jagged array:

1. Using an array and a pointer (Static Jagged Array)

  • First, declare 1-D arrays with the total number of rows we'll need, and then use a pointer to access the array.
  • The number of columns (or components) in the row will equal the size of each array (array for the items in the row).
  • After that, define a 1-D array of pointers to contain the row addresses.
  • The total number of rows in the jagged array is equal to the size of the 1-D array.

Example:

Let us take an example to illustrate the jagged array using array and pointer in C.

Output:

1 5 3 8 
5 9 

2. By using the Pointer array

  • Here, declare a pointer array (jagged array), the size of which will be the total number of rows necessary in the Jagged array.
  • After that, allocate memory for the total amount of elements that are desired in this row for each reference in the array.

Example:

Let us take an example to illustrate the jagged array using pointer array in C.

Output:

500 
501 502 503 

Advantages of Jagged Array or Array of Arrays in C:

Several advantages of Jagged array or Array of Arrays are as follows:

  • Memory Efficiency: Jagged Array allows for the storage of arrays of variable lengths, decreasing memory use by allocating space only for the needed components.
  • Flexibility: Jagged Array allows for differently shaped data structures with variable sub-array sizes.
  • Dynamic nature: Jagged Array allows for dynamic scaling of specific arrays inside the structure without impacting others.
  • Cache Locality: Jagged Array provides greater cache usage due to contiguous memory allocation, which could result in quicker access times as compared to jagged arrays.
  • Regular Data Structures' Simplicity: Jagged Arrays are ideal for regular grid-style data with the same amount of columns in each row.
  • Ease of use: Multidimensional arrays with identical dimensions are easier to view and operate.