C++ Arrays
In C++, an array is a variable that can store multiple values of the same type. For example,
Suppose a class has 27 students, and we need to store the grades of all of them. Instead of creating 27 separate variables, we can simply create an array:
double grade[27];
Here, grade is an array that can hold a maximum of 27 elements of double
type.
In C++, the size and type of arrays cannot be changed after its declaration.
C++ Array Declaration
dataType arrayName[arraySize];
For example,
int x[6];
Here,
int
- type of element to be stored- x - name of the array
6
- size of the array
Access Elements in C++ Array
In C++, each element in an array is associated with a number. The number is known as an array index. We can access elements of an array by using those indices.
// syntax to access array elements
array[index];
Consider the array x we have seen above.
Few Things to Remember:
- The array indices start with
0
. Meaning x[0] is the first element stored at index0
. - If the size of an array is
n
, the last element is stored at index(n-1)
. In this example, x[5] is the last element. - Elements of an array have consecutive addresses. For example, suppose the starting address of
x[0]
is 2120.
Then, the address of the next elementx[1]
will be 2124, the address ofx[2]
will be 2128, and so on.
Here, the size of each element is increased by 4. This is because the size ofint
is 4 bytes.
C++ Array Initialization
In C++, it's possible to initialize an array during declaration. For example,
// declare and initialize and array
int x[6] = {19, 10, 8, 17, 9, 15};
Another method to initialize array during declaration:
// declare and initialize an array
int x[] = {19, 10, 8, 17, 9, 15};
Here, we have not mentioned the size of the array. In such cases, the compiler automatically computes the size.
C++ Array With Empty Members
In C++, if an array has a size n
, we can store upto n number of elements in the array. However, what will happen if we store less than n number of elements.
For example,
// store only 3 elements in the array
int x[6] = {19, 10, 8};
Here, the array x has a size of 6
. However, we have initialized it with only 3 elements.
In such cases, the compiler assigns random values to the remaining places. Oftentimes, this random value is simply 0
.
How to insert and print array elements?
int mark[5] = {19, 10, 8, 17, 9}
// change 4th element to 9
mark[3] = 9;
// take input from the user
// store the value at third position
cin >> mark[2];
// take input from the user
// insert at ith position
cin >> mark[i-1];
// print first element of the array
cout << mark[0];
// print ith element of the array
cout >> mark[i-1];
Example 1: Displaying Array Elements
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// Printing array elements
// using range based for loop
for (const int &n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// Printing array elements
// using traditional for loop
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}
Output
The numbers are: 7 5 6 12 35 The numbers are: 7 5 6 12 35
Here, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we have printed numbers[i]
.
We again used a range-based for
loop to print out the elements of the array. To learn more about this loop, check C++ Ranged for Loop.
Note: In our range-based loop, we have used the code const int &n
instead of int n
as the range declaration. However, the const int &n
is more preferred because:
- Using
int n
simply copies the array elements to the variable n during each iteration. This is not memory-efficient.
&n, however, uses the memory address of the array elements to access their data without copying them to a new variable. This is memory-efficient. - We are simply printing the array elements, not modifying them. Therefore, we use
const
so as not to accidentally change the values of the array.
Example 2: Take Inputs from User and Store Them in an Array
#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// store input from user to array
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
// print array elements
for (int n = 0; n < 5; ++n) {
cout << numbers[n] << " ";
}
return 0;
}
Output
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
Once again, we have used a for
loop to iterate from i = 0
to i = 4
. In each iteration, we took an input from the user and stored it in numbers[i]
.
Then, we used another for
loop to print all the array elements.
Example 3: Display Sum and Average of Array Elements Using for Loop
#include <iostream>
using namespace std;
int main() {
// initialize an array without specifying size
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// print array elements
// use of range-based for loop
for (const double &n : numbers) {
cout << n << " ";
// calculate the sum
sum += n;
// count the no. of array elements
++count;
}
// print the sum
cout << "\nTheir Sum = " << sum << endl;
// find the average
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
}
Output
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
In this program:
- We have initialized a double array named numbers but without specifying its size. We also declared three double variables sum, count, and average.
Here,sum =0
andcount = 0
. - Then we used a range-based
for
loop to print the array elements. In each iteration of the loop, we add the current array element to sum. - We also increase the value of count by
1
in each iteration, so that we can get the size of the array by the end of the for loop. - After printing all the elements, we print the sum and the average of all the numbers. The average of the numbers is given by
average = sum / count;
Note: We used a ranged for
loop instead of a normal for
loop.
A normal for
loop requires us to specify the number of iterations, which is given by the size of the array.
But a ranged for
loop does not require such specifications.
C++ Array Out of Bounds
If we declare an array of size 10, then the array will contain elements from index 0 to 9.
However, if we try to access the element at index 10 or more than 10, it will result in Undefined Behaviour.
0 comments:
Post a Comment