CHAPTER 4
▪ The elements of an array are related by the fact that
they have the same array name and type.
▪ The number used to refer to a particular element of
an array is called its index or subscript.
▪ Arrays are blocks of static memory of a given size. A
typical declaration for an array in C++ syntax is:
type arrayName[size];
▪ For example, to declare an array A as shown above:
int A[5];
Computer Programming 3/20/2021 2
▪ The array size used to declare an array must be a
constant expression in standard C++.
▪ For example, the following code is illegal:
int size = 4;
double myList[size]; // Wrong
▪ But it is all right if SIZE is a constant as follows:
const int SIZE = 4;
double myList[SIZE]; // Correct
▪ If arrays have the same element type, they can be declared
together that are separated by commas.
For example,
double listA[10], listB[25];
Computer Programming 3/20/2021 3
We can assign values to members of an array at the
point of declaration using the following syntax:
type arrayName[arraySize] = {value0, value1, ..., valuek};
▪ For example, int A[5] = {11, 3, 5, 7, 9};
▪ This is called the array initializer, declares and initializes
the array A with 5 elements in a single statement, making
it equivalent to the statements shown below:
int A[5];
A[0] = 11;
A[1] = 3;
A[2] = 5;
A[3] = 7;
A[4] = 9;
Computer Programming 3/20/2021 4
▪ When declaring an array of local scope (within a function),
if we do not specify otherwise, it will not be initialized, so its
content is undetermined until we store some values on it.
▪ If we declare a global array (outside any function) its
content will be initialized with all its elements filled with
zeros. Thus, if in the global scope we declared:
int billy [5];
▪ When we declare an Array, we have the possibility to assign
initial values to each one of its elements.
int billy [5] = { 16, 2, 77, 40, 12071 };
This looks like:
Computer Programming 3/20/2021 5
Example: Finding the Maximum of 100 randomly assigned integers.
#include <iostream.h>
int main()
{
int i, max = 0;
int list[100];
// initialize the array with random values
for(i=0; i<100; i++) list[i] = rand();
// find maximum value
for(i=0; i<100; i++)
if(max < list[i]) max = list[i];
cout << “Maximum value: “ << max;
return(0);
}
Computer Programming 3/20/2021 6
▪ Using an array initializer, Splitting the declaration
and initialization parts would cause a syntax error.
▪ Thus, the next statement is wrong:
double myList[4];
myList = {1.9, 2.9, 3.4, 3.5};
▪ C++ allows you to omit the array size when declaring
and creating an array using an initializer.
▪ For example, the following declaration is fine because
the compiler automatically figures out how many elements
are in the array:
double myList[] = {1.9, 2.9, 3.4, 3.5};
Computer Programming 3/20/2021 7
▪ No Array-to-Array Assignments
You cannot assign one array to another in C++.
The following is wrong:
int a[10], b[10];
// Now, assign all elements of
// array b to array a
a = b; // error – illegal
Instead, you have to do the assignments for each
element:
int i;
// Now, assign all elements of
// array b to array a
for(i=0; i<10; i++) a[i] = b[i];
Computer Programming 3/20/2021 8
▪ Each element in the array is represented using the
following syntax:
arrayName[index];
▪ For example, storing 75 in the third element of array A:
A[2] = 75;
▪ And passing the third element of A value to the variable a,
we could write:
a = A[2];
▪ We can use loop to manipulate/process an array.
Computer Programming 3/20/2021 9
▪ The most common multidimensional array is an array
of dimension 2. It is called matrix. The syntax is:
type arrayName[rowSize][columnSize];
▪ For example, declaring an array B as shown above:
int B[3][5];
▪ B represents a 3 by 5 bidimensional array of type integer
Computer Programming 3/20/2021 10
Example - 2D vs. 1D arrays.
// 1. multidimensional array // 2. pseudo-multidimensional array
#include <iostream.h> #include <iostream.h>
#define WIDTH 5 #define WIDTH 5
#define HEIGHT 3 #define HEIGHT 3
int jimmy [HEIGHT][WIDTH]; int jimmy [HEIGHT * WIDTH];
int n, m; int n, m;
int main ( ) { int main ( ) {
for (n=0; n<HEIGHT; n++) for (n=0; n<HEIGHT; n++)
for (m=0; m<WIDTH; m++) { for (m=0; m<WIDTH; m++) {
jimmy[n][m]=(n+1)*(m+1); jimmy[n * WIDTH + m]=(n+1)*(m+1);
} }
return 0; return 0;
} }
Computer Programming 3/20/2021 11
▪ Multidimensional arrays are just an abstraction, since we
can simply obtain such results with a simple array with a
factor between its indices:
int jimmy [3][5]; is equivalent to
int jimmy [15]; (3 * 5 = 15)
▪ with the only difference that the compiler remembers for us
the depth of each imaginary dimension.
▪ In both cases, you can assign values to the memory block
called jimmy in the following way:
Computer Programming 3/20/2021 12
▪ C++ allows arrays with more than two dimensions.
The syntax for an N-dimensional array declaration is:
type array_name [size_1] [size_2] … [size_N];
▪ For example, the following declaration creates a
4 x 10 x 20 character array, or a matrix of strings:
char string_matrix[4][10][20];
▪ Memory Allocation: Storage for all array elements is
determined at compile time. A char allocates 1 byte.
▪ This requires 4 * 10 * 20 = 800 bytes.
Computer Programming 3/20/2021 13
Computer Programming 3/20/2021 14
▪ strings of characters allow to represent sequences of
characters, like: words, sentences, texts, et cetera.
▪ The most common use for one-dimensional arrays is to store
strings of characters.
▪ In C++, a string is defined as a character array terminated by
a null symbol ( ‘\0’ ).
▪ For example, to declare an array str that could hold a
5-character string as shown above:
char str[6];
▪ The size is 6 making room for the null at the end of the string
Computer Programming 3/20/2021 15
▪ Some examples of string constants in C++ are:
Example: strings Output
"hello there" hello there
"I like C++." I like C++.
"#$%§@@+*" #$%§@@+*
"\"" "
"\"\"" ""
"\\" \
"" null
▪ The null string, "", only contains the null terminator
and represents the empty string.
Computer Programming 3/20/2021 16
▪ Make an array, that will receive the string, the target of
a cin stream. The following program reads (part of) a
string entered by the user:
#include <stdio.h>
int main()
{
char str[80];
cout << “Enter a string: ”;
cin >> str; // read string from keyboard
cout << “Here is your string: ”;
cout << str;
return(0);
}
Computer Programming 3/20/2021 17
▪ Problem: Entering the string “This is a test”, the above
program only returns “This”, not the entire sentence.
▪ Reason: The C++ input/output system stops reading a
string when the first whitespace character is encountered.
▪ Solution: Use another C++ library function, gets().
#include <iostream.h>
#include <cstdio.h>
int main()
{
char str[80]; // long enough for user input?
cout << “Enter a string: ”;
gets(str); // read a string from the keyboard
cout << “Here is your string: ”;
cout << str << endl;
return(0);
}
Computer Programming 3/20/2021 18
▪ C++ supports a range of string-manipulation functions.
▪ The most common are:
• strcpy() : copy characters from one string to another
• strcat() : concatenation of strings
• strlen() : length of a string
• strcmp() : comparison of strings
▪ First of all, include <cstring.h> or include <string> in the
very first lines of the code.
Computer Programming 3/20/2021 19
▪ strcpy(to_string, from_string) — String Copy :
#include <iostream.h>
#include <cstring.h>
int main()
{
char a[10];
strcpy(a, “hello”);
cout << a;
return(0);
}
Computer Programming 3/20/2021 20
▪ strlen(string) — String Length :
#include <iostream.h> strlen(str) returns the length of
#include <cstdio.h> the string pointed to by str, i.e.,
#include <cstring.h> the number of characters
int main() excluding the null terminator.
{
char str[80];
cout << “Enter a string: “;
gets(str); // let the input is: hello
// Length is: 5
cout << “Length is: “ << strlen(str);
return(0);
}
Computer Programming 3/20/2021 21
▪ strcat(string_1, string_2) — Concatenation of Strings :
#include <iostream.h>
The strcat(s1,s2) function
#include <cstdio.h>
appends s2 to the end of s1.
#include <cstring.h>
String s2 is unchanged.
int main(){
char s1[21], s2[11];
strcpy(s1, “Hello”);
strcpy(s2, “ there”); Displays:
strcat(s1, s2);
Hello there
cout << s1 << endl;
there
cout << s2 << endl;
return(0);
}
Computer Programming 3/20/2021 22
The first string array has to be large enough to hold both strings:
▪ To be on the safe side:
strlen(s1concats2) >= strlen(s1) + strlen(s2)
Computer Programming 3/20/2021 23
▪ strcmp(string_1, string_2) — Comparison of Strings :
The strcmp(str_1, str_2) function compares two
strings and returns the following result:
• str_1 == str_2 :0
• str_1 > str_2 : positive number
• str_1 < str_2 : negative number
The strings are compared lexicographically
(i.e., according to dictionary order), for example:
a < aa < aaa < … < b < ba < bb < … < bz < baa < … < abca < abd
Computer Programming 3/20/2021 24
// Comparing strings
#include <iostream.h>
#include <cstring.h>
#include <cstdio.h>
int main(){
char str[80];
cout << “Enter password: “;
gets(str);
if(strcmp(str, “password”)) // strings differ
cout << “Invalid password.\n”;
else cout << “Logged on.\n”;
return(0);
}
Computer Programming 3/20/2021 25