# Arrays

## **What is an Array?**

An array is a **sequence of elements** that are stored in **contiguous memory locations**. Each element in the array is of the **same data type**, and you can access them using an **index**.

**Key Points:**

* All elements in an array are of the same type (e.g., all integers, all floats).
* The **index** of an array starts at `0`.
* Arrays are **fixed in size**, meaning you must define the size when you declare the array.

***

#### **Array Declaration and Initialization**

To declare an array, you specify the type, the name, and the number of elements (size). You can also initialize the array with values.

**Syntax:**

```c
type arrayName[arraySize];
```

**Example:**

```c
int numbers[5];  // Declares an array 'numbers' that can hold 5 integers
```

***

#### **Array Initialization**

You can initialize an array when you declare it by listing its values in curly braces `{}`.

**Example:**

```c
int numbers[5] = {10, 20, 30, 40, 50};  // Array with 5 elements
```

* The array `numbers` holds the values `10, 20, 30, 40, 50`.

If you don’t initialize all the elements, the remaining elements are automatically set to `0`.

**Example:**

```c
int numbers[5] = {1, 2};  // The first two elements are 1 and 2, rest are 0
```

***

#### **Accessing Elements in an Array**

You can access array elements using their index. Remember, the first element has an index of `0`.

**Syntax:**

```c
arrayName[index];
```

**Example:**

```c
int numbers[5] = {10, 20, 30, 40, 50};
printf("%d\n", numbers[0]);  // Outputs 10
printf("%d\n", numbers[4]);  // Outputs 50
```

***

#### **Modifying Elements**

You can change the value of a specific element by assigning it a new value.

**Example:**

```c
int numbers[5] = {10, 20, 30, 40, 50};
numbers[2] = 100;  // Change the value at index 2 to 100
printf("%d\n", numbers[2]);  // Outputs 100
```

***

#### **Looping through Arrays**

Using loops, especially `for` loops, is the easiest way to work with arrays.

**Example:**

```c
int numbers[5] = {10, 20, 30, 40, 50};

for (int i = 0; i < 5; i++) {
    printf("%d\n", numbers[i]);
}
```

* This loop prints all the elements of the `numbers` array.

***

#### **Multidimensional Arrays**

C allows you to create arrays with more than one dimension. A **two-dimensional array** can be thought of as a grid or matrix.

**Syntax:**

```c
type arrayName[rows][columns];
```

**Example:**

```c
int matrix[2][3] = {
    {1, 2, 3}, 
    {4, 5, 6}
};
```

* This creates a 2x3 array (2 rows and 3 columns).

You can access elements of a 2D array like this:

```c
printf("%d\n", matrix[0][1]);  // Outputs 2 (row 0, column 1)
```

***

#### **Practical Example: Sum of Array Elements**

Let’s sum all elements of an integer array.

```c
#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};
    int sum = 0;

    for (int i = 0; i < 5; i++) {
        sum += numbers[i];
    }

    printf("Sum of array elements: %d\n", sum);

    return 0;
}
```

* This code adds up the elements of the `numbers` array and prints the sum (`150` in this case).

***

#### **Arrays Summary**

| Concept                     | Explanation                                                                        |
| --------------------------- | ---------------------------------------------------------------------------------- |
| **Array Declaration**       | `type arrayName[size];` - Fixed size, elements stored in sequence.                 |
| **Indexing**                | Arrays are indexed starting from 0.                                                |
| **Initialization**          | Arrays can be initialized when declared (e.g., `{1, 2, 3}`) or left uninitialized. |
| **Access/Modification**     | Use `arrayName[index]` to access or modify elements.                               |
| **Looping Through Arrays**  | Use loops to iterate over elements (e.g., `for` loop).                             |
| **Multidimensional Arrays** | Arrays with more than one dimension (e.g., `int matrix[2][3]`).                    |

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cs.d19.in/c-programming/basics/arrays.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
