In C++, you can pass an array to a function by specifying the array's name and its size as parameters, allowing the function to access and manipulate the array elements.
#include <iostream>
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
}
int main() {
int myArray[] = {1, 2, 3, 4, 5};
printArray(myArray, 5);
return 0;
}
Understanding Arrays in C++
What is an Array?
An array is a collection of variables that are stored under a single name and are accessible by an index. In C++, arrays can be of various types such as integers, floats, characters, etc. They are essential for handling multiple data items of the same type efficiently. Key characteristics of arrays include:
- Fixed Size: Once an array is declared with a certain size, it cannot be resized.
- Index-Based Access: Each element in an array can be accessed using an index, which starts at 0.
Syntax for Declaring Arrays
To declare an array in C++, the syntax is as follows:
datatype arrayName[arraySize];
For example, to declare an integer array of size 5:
int numbers[5];

Functions in C++
What is a Function?
A function is a block of code that performs a specific task. Functions have a defined name, accept inputs, and may return a value. The key components of a function include:
- Function Name: A unique identifier.
- Parameter List: Inputs that the function can accept.
- Return Type: The type of value the function returns.
Syntax for Declaring Functions
The syntax for declaring a function in C++ is:
returnType functionName(parameterType parameterName) {
// body of the function
}
For instance, a simple function that adds two integers can be defined as:
int add(int a, int b) {
return a + b;
}

Passing Arrays to Functions
Array as Parameter in C++
When an array is used as a parameter in a function, it allows the function to operate on the entire array without needing to pass all of its elements individually. This reduces overhead and keeps the code clean. Passing an array as a parameter promotes modularity—a coding best practice that enhances maintainability.
Syntax for Passing an Array to a Function
To pass an array to a function, you can define the function's parameter as an array type. Here is an example of how this looks:
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
}
In the example, `printArray` takes an integer array and its size as parameters.
How to Pass an Array to a Function in C++
Pass by Reference vs. Pass by Value
In C++, passing an array as a function argument is different from passing standard variables. An array is passed by reference, which means that the function receives a reference to the original array rather than a copy. This is efficient in terms of memory usage and performance.
Here’s an example demonstrating the difference:
void modifyArray(int arr[]) {
arr[0] = 100; // Changing the first element
}
int main() {
int myArray[3] = {1, 2, 3};
modifyArray(myArray);
std::cout << myArray[0]; // Outputs: 100
return 0;
}
This code snippet shows how the original array is modified within the function, illustrating the concept of pass by reference.
Example: Pass Array to a Function
Here is a complete example showcasing how to pass an array into a function and manipulate its contents:
#include <iostream>
void squareArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
arr[i] *= arr[i]; // Squaring each element
}
}
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int size = sizeof(numbers) / sizeof(numbers[0]);
squareArray(numbers, size);
for (int i = 0; i < size; i++) {
std::cout << numbers[i] << " "; // Outputs: 1 4 9 16 25
}
return 0;
}
In this example, `squareArray` takes an array and its size, squares each element, and modifies the original array.

Functions and Arrays C++
Function Returning an Array
While C++ does not allow returning an entire array directly, you can opt to return pointers or utilize the std::array class. Here’s an example of returning a pointer:
int* createArray(int size) {
int* arr = new int[size]; // Dynamically allocated array
for (int i = 0; i < size; i++) {
arr[i] = i * 10;
}
return arr;
}
int main() {
int* myArray = createArray(5);
// Use the array...
delete[] myArray; // Don't forget to free the memory
return 0;
}
Passing 2D Arrays to Functions
Passing two-dimensional arrays to functions requires specifying both dimensions in the function definition:
void print2DArray(int arr[][3], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 3; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
}
In this case, we declare the number of columns explicitly. When using a variable number of columns, you could alternatively use pointers or vectors for added flexibility.

Best Practices for Working with Arrays in Functions
Memory Management
Proper memory management is crucial, especially when dealing with dynamic arrays. It’s important to allocate and deallocate memory correctly to prevent memory leaks. Always remember to use `delete[]` for arrays created with `new`.
Error Handling
When passing arrays to functions, be cautious of boundary conditions. Make sure to account for the size of the array in the function parameters to avoid out-of-bounds access, which can lead to undefined behavior.

Common Use Cases for Passing Arrays to Functions
Sorting Algorithms
Functions that perform sorting on arrays are commonplace. For example, implementing a bubble sort might involve passing an array and its size:
void bubbleSort(int arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
std::swap(arr[j], arr[j + 1]);
}
}
}
}
Searching Algorithms
Similarly, searching through an array can be encapsulated in a function. A simple linear search would look like this:
int linearSearch(int arr[], int size, int key) {
for (int i = 0; i < size; i++) {
if (arr[i] == key) {
return i; // Return the index where key is found
}
}
return -1; // Not found
}

Conclusion
In this article, we’ve explored the significance of passing arrays into functions in C++. We’ve discussed the syntax, best practices, and provided illustrative examples demonstrating how to manipulate arrays effectively. Understanding how to use arrays with functions enhances code modularity and improves program performance. Whether you are implementing sorting algorithms, searching, or other operations, the ability to pass arrays into functions is a foundational skill in C++ programming.

Frequently Asked Questions
What happens if I pass an array incorrectly?
Passing an array incorrectly, such as specifying the size or type incorrectly, can lead to compilation errors or unexpected behavior at runtime. Always verify that the function parameter matches the array type and size.
Can I change the original array inside the function?
Yes, when you pass an array to a function, you are passing a reference to the original array, allowing modifications within the function to reflect outside.
Are there any limitations to passing arrays to functions?
Yes, arrays cannot be resized once declared. If you need a dynamic-sized array, consider using data structures like `std::vector` or dynamically allocated arrays with pointers.