|
C++ Programming Tutorials
Basics of C++
Structure of a
program
Variables
Data types
Constants
Operators
Basic Input/output
Control Structures
Control Structures
Functions (I)
Functions (II)
Compound Data Types
Arrays
Character Sequences
Pointers
Dynamic Memory
Data Structures
Other Data Types
Object Oriented Programming
Classes [I]
Classes [II]
Friendship & Inheritance
Polymorphism
Advanced Concepts
Templates
Namespaces
Exceptions
Type Casting
Preprocessor Directives
C++ Standard Library
Input/output with Files
Soft Skills
Communication Skills
Leadership Skills
.........More
|
|
C++ Programming Tutorials
Arrays
An array is a series of elements of the same type placed in contiguous
memory locations that can be individually referenced by adding an index
to a unique identifier.
That means that, for example, we can store 5 values of type int in an
array without having to declare 5 different variables, each one with a
different identifier. Instead of that, using an array we can store 5
different values of the same type, int for example, with a unique
identifier.
For example, an array to contain 5 integer values of type int called
billy could be represented like this:

where each blank panel represents an element of the array,
that in this case are integer values of type int. These elements are numbered
from 0 to 4 since in arrays the first index is always 0, independently of its
length.
Like a regular variable, an array must be declared before it is used. A typical
declaration for an array in C++ is:
type name [elements];
where type is a valid type (like int, float...), name is a valid identifier and
the elements field (which is always enclosed in square brackets []), specifies
how many of these elements the array has to contain.
Therefore, in order to declare an array called billy as the one shown in the
above diagram it is as simple as:
NOTE: The elements field within brackets []
which represents the number of elements the array is going to hold, must be a
constant value, since arrays are blocks of non-dynamic memory whose size must be
determined before execution. In order to create arrays with a variable length
dynamic memory is needed, which is explained later in these tutorials.
Initializing arrays.
When declaring a regular array of local scope (within a function, for example),
if we do not specify otherwise, its elements will not be initialized to any
value by default, so their content will be undetermined until we store some
value in them. The elements of global and static arrays, on the other hand, are
automatically initialized with their default values, which for all fundamental
types this means they are filled with zeros.
In both cases, local and global, when we declare an array, we have the
possibility to assign initial values to each one of its elements by enclosing
the values in braces { }. For example:
| int billy [5] = { 16, 2, 77, 40, 12071 }; |
This declaration would have created an array like this:

The amount of values between braces { } must not be larger
than the number of elements that we declare for the array between square
brackets [ ]. For example, in the example of array billy we have declared that
it has 5 elements and in the list of initial values within braces { } we have
specified 5 values, one for each element.
When an initialization of values is provided for an array, C++ allows the
possibility of leaving the square brackets empty [ ]. In this case, the compiler
will assume a size for the array that matches the number of values included
between braces { }:
| int billy [] = { 16, 2, 77, 40, 12071 }; |
After this declaration, array billy would be 5 ints long,
since we have provided 5 initialization values.
Accessing the values of an
array.
In any point of a program in which an array is visible, we can access the value
of any of its elements individually as if it was a normal variable, thus being
able to both read and modify its value. The format is as simple as:
name[index]
Following the previous examples in which billy had 5 elements and each of those
elements was of type int, the name which we can use to refer to each element is
the following:

For example, to store the value 75 in the third element of
billy, we could write the following statement:
and, for example, to pass the value of the third element of
billy to a variable called a, we could write:
Therefore, the expression billy[2] is for all purposes like a
variable of type int.
Notice that the third element of billy is specified billy[2], since the first
one is billy[0], the second one is billy[1], and therefore, the third one is
billy[2]. By this same reason, its last element is billy[4]. Therefore, if we
write billy[5], we would be accessing the sixth element of billy and therefore
exceeding the size of the array.
In C++ it is syntactically correct to exceed the valid range of indices for an
array. This can create problems, since accessing out-of-range elements do not
cause compilation errors but can cause runtime errors. The reason why this is
allowed will be seen further ahead when we begin to use pointers.
At this point it is important to be able to clearly distinguish between the two
uses that brackets [ ] have related to arrays. They perform two different tasks:
one is to specify the size of arrays when they are declared; and the second one
is to specify indices for concrete array elements. Do not confuse these two
possible uses of brackets [ ] with arrays.
int billy[5]; // declaration of a new array
billy[2] = 75; // access to an element of the array. |
If you read carefully, you will see that a type specifier
always precedes a variable or array declaration, while it never precedes an
access.
Some other valid operations with arrays:
billy[0] = a;
billy[a] = 75;
b = billy [a+2];
billy[billy[a]] = billy[2] + 5; |
// arrays example
#include <iostream>
using namespace std;
int billy [] = {16, 2, 77, 40, 12071};
int n, result=0;
int main ()
{
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
cout << result;
return 0;
} |
12206
|
NEXT >>
Multidimensional Arrays
Have a Question ?
post your questions here. It
will be answered as soon as possible.
Check
C Aptitude Questions
for more C Aptitude Interview Questions with Answers
Check
C Interview Questions
for more C Interview Questions with Answers.
|