Chapter 8: Arrays
-
Upload
dante-chambers -
Category
Documents
-
view
30 -
download
1
description
Transcript of Chapter 8: Arrays
![Page 1: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/1.jpg)
Chapter 8: Arrays
Starting Out with C++ Early Objects Seventh Edition
by Tony Gaddis, Judy Walters, and Godfrey Muganda
![Page 2: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/2.jpg)
Topics
8.1 Arrays Hold Multiple Values8.2 Accessing Array Elements8.3 Inputting and Displaying Array
Contents8.4 Array Initialization8.5 Processing Array Contents8.6 Using Parallel Arrays
8-2
![Page 3: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/3.jpg)
Topics (continued)
8.7 The typedef Statement8.8 Arrays as Function Arguments8.9 Two-Dimensional Arrays8.10 Arrays with Three or More
Dimensions8.11 Vectors8.12 Arrays of Class Objects
8-3
![Page 4: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/4.jpg)
8.1 Arrays Hold Multiple Values
• Array: variable that can store multiple values of the same type
• Values are stored in adjacent memory locations
• Declared using [] operatorconst int ISIZE = 5;
int tests[ISIZE];
8-4
![Page 5: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/5.jpg)
Array Storage in Memory
The definition int tests[ISIZE]; // ISIZE = 5
allocates the following memory
8-5
Element 0 Element 1 Element 2 Element 3 Element 4
![Page 6: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/6.jpg)
Array Terminology
In the definition int tests[ISIZE];
– int is the data type of the array elements– tests is the name of the array– ISIZE, in [ISIZE], is the size declarator. It
shows the number of elements in the array.– The size of an array is the number of bytes
allocated for it (number of elements) * (bytes needed for each
element)
8-6
![Page 7: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/7.jpg)
Array Terminology Examples
Examples:Assumes int uses 4 bytes and double uses 8
bytes
const int ISIZE = 5, DSIZE = 10;
int tests[ISIZE]; // holds 5 ints, array // occupies 20 bytes
double volumes[DSIZE];// holds 10 doubles // array is 80 bytes
8-7
![Page 8: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/8.jpg)
8.2 Accessing Array Elements
• Each array element has a subscript, used to access the element.
• Subscripts start at 0
8-8
subscripts 0 1 2 3 4
![Page 9: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/9.jpg)
Accessing Array Elements
Array elements (accessed by array name and subscript) can be used as regular variables
tests[0] = 79;cout << tests[0];cin >> tests[1];tests[4] = tests[0] + tests[1];cout << tests; // illegal due to // missing subscript
8-9
0 1 2 3 4 tests
![Page 10: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/10.jpg)
8.3 Inputting and Displaying Array Contents
cout and cin can be used to display values from and store values into an array
const int ISIZE = 5;
int tests[ISIZE]; // Define 5-elt. array
cout << "Enter first test score ";
cin >> tests[0];
8-10
![Page 11: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/11.jpg)
Array Subscripts
• Array subscript can be an integer constant, integer variable, or integer expression
• Examples: Subscript is
cin >> tests[3]; int constant
cout << tests[i]; int variable
cout << tests[i+j]; int expression
What happens if subscript is not an integer???
8-11
![Page 12: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/12.jpg)
Inputting and Displaying All Array Elements
To access each element of an array– Use a loop (usually a for loop)– Let loop control variable be array
subscript– A different array element will be
referenced each time through loop
for (i = 0; i < 5; i++) cout << tests[i] << endl;
Note difference between array location and contents!!!
8-12
![Page 13: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/13.jpg)
Getting Array Data from a File
const int ISIZE = 5, sales[ISIZE]; ifstream dataFile; datafile.open("sales.dat"); if (!dataFile) cout << "Error opening data file\n"; else { // Input daily sales for (int day = 0; day < ISIZE;day++) dataFile >> sales[day]; dataFile.close(); }
8-13
![Page 14: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/14.jpg)
No Bounds Checking
• There are no checks in C++ that an array subscript is in range – so no messages
• An invalid array subscript can cause program to overwrite other memory
• Example:const int ISIZE = 3;int i = 4;int num[ISIZE];num[i] = 25;
8-14
num
[0] [1] [2]25
![Page 15: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/15.jpg)
Off-By-One Errors• Most often occur when a program
accesses data one position beyond the end of an array, or misses the first or last element of an array.
• Don’t confuse the ordinal number of an array element (first, second, third) with its subscript (0, 1, 2)
8-15
![Page 16: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/16.jpg)
8.4 Array Initialization• Can be initialized during program
execution with assignment statements tests[0] = 79; tests[1] = 82; // etc.
• Can be initialized at array definition with an initialization list const int ISIZE = 5;int tests[ISIZE] = {79,82,91,77,84};
8-16
![Page 17: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/17.jpg)
Partial Array Initialization
• If array initialized at definition with fewer values than size of array, remaining elements set to 0 or NULL
int tests[ISIZE] = {79, 82};
• Initial values used in order; cannot skip over elements to initialize noncontiguous range
8-17
79 82 0 0 0
![Page 18: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/18.jpg)
Start at element 0 or 1?• May choose to declare arrays to be
one larger than needed. Allows use of element with subscript 1 as ‘first’ element, etc. & may minimize off-by-one errors.
• Element with subscript 0 is not used.• Most often done when working with
ordered data, e.g., months of the year or days of the week
8-18
![Page 19: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/19.jpg)
Implicit Array Sizing• Can set array size by size of the
initialization list short quizzes[]={12,17,15,11};
• Must use either array size declarator or initialization list when array is defined
short quizzes[4]={12,17,15,11};
8-19
12 17 15 11
![Page 20: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/20.jpg)
8.5 Processing Array Contents
• Array elements can be – treated as ordinary variables of same
type as array– used in arithmetic operations, in
relational expressions, etc.
• Example: if (principalAmt[3] >= 10000) interest = principalAmt[3] * intRate1; else interest = principalAmt[3] * intRate2;
8-20
![Page 21: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/21.jpg)
Using Increment & Decrement Operators with Array Elements
When using ++ and -- operators, don’t confuse the element with the
subscript
tests[i]++; // adds 1 to tests[i]
tests[i++]; // increments i, but has // no effect on contents
// of tests
8-21
![Page 22: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/22.jpg)
Copying One Array to Another
• Cannot copy with an assignment statement:
tests2 = tests; //won’t work
• Must instead use a loop to copy element-by-element:
for (int indx=0; indx < ISIZE; indx++)
tests2[indx] = tests[indx];
8-22
![Page 23: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/23.jpg)
Are Two Arrays Equal?• Like copying, cannot compare in a single
expression:if (tests2 == tests)
• Use a while loop with a boolean variable:bool areEqual=true;
int indx=0;
while (areEqual && indx < ISIZE)
{ if(tests[indx] != tests2[indx])
areEqual = false;
}
8-23
![Page 24: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/24.jpg)
Sum, Average of Array Elements• Use a simple loop to add together
array elementsfloat average, sum = 0;
for (int tnum=0; tnum< ISIZE; tnum++)
sum += tests[tnum];
• Once summed, average can be computedaverage = sum/ISIZE;
8-24
![Page 25: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/25.jpg)
Largest Array Element
• Use a loop to examine each element & find largest element (i.e., one with largest value)
int largest = tests[0]; for (int tnum = 1; tnum < ISIZE; tnum++) { if (tests[tnum] > largest) largest = tests[tnum]; } cout << "Highest score is " << largest;
• A similar algorithm exists to find the smallest element
8-25
![Page 26: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/26.jpg)
Partially-Filled Arrays• Exact number of data (and, therefore,
array size) may not be known when a program is written.
• Programmer makes best estimate for maximum amount of data, sizes arrays accordingly. A sentinel value can be used to indicate end-of-data.
• Programmer must also keep track of how many array elements are actually used
8-26
![Page 27: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/27.jpg)
C-Strings and string Objects - OMIT
Can be processed using array name – Entire string at once, or – One element at a time by using a
subscript
string city;cout << "Enter city name: ";cin >> city;
8-27
'S' 'a' 'l' 'e' 'm'
city[0] city[1] city[2] city[3] city[4]
![Page 28: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/28.jpg)
8.6 Using Parallel Arrays
• Parallel arrays: two or more arrays that contain related data
• Subscript is used to relate arrays
– elements at same subscript are related
• The arrays do not have to hold data of the same type
8-28
![Page 29: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/29.jpg)
Parallel Array Example
const int ISIZE = 5; string name[ISIZE]; // student namefloat average[ISIZE]; // course averagechar grade[ISIZE]; // course grade
8-29
01234
01234
01234
name average grade
![Page 30: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/30.jpg)
Parallel Array Processingconst int ISIZE = 5;
string name[ISIZE]; // student name
float average[ISIZE]; // course average
char grade[ISIZE]; // course grade
...
for (int i = 0; i < ISIZE; i++)
cout << " Student: " << name[i]
<< " Average: " << average[i]
<< " Grade: " << grade[i]
<< endl;
8-30
![Page 31: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/31.jpg)
8.7 The typedef Statement
• Creates an alias for a simple or structured data type
• Format:typedef existingType newName;
• Example:typedef unsigned int Uint;Uint tests[ISIZE]; // array of
// unsigned ints
8-31
![Page 32: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/32.jpg)
Uses of typedef
• Used to make code more readable• Can be used to create alias for array
of a particular type
// Define yearArray as a data type// that is an array of 12 intstypedef int yearArray[MONTHS];
// Create two of these arraysyearArray highTemps, lowTemps;
8-32
![Page 33: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/33.jpg)
8.8 Arrays as Function Arguments
• Referred to as Pass by Pointer– Equivalent to Pass by Reference (Address)
• To define a function with an array parameter, use empty [] to indicate array argument
• To pass array to a function, just use array name
// Function prototype void showScores(int []);
// Function header void showScores(int tests[])
// Function call showScores(tests);
8-33
![Page 34: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/34.jpg)
Passing an Array Element• Passing a single array element to a
function is no different than passing a regular variable of that data type
• Function does not need to know that the value it receives is coming from an array
displayValue(score[i]); // call
void displayValue(int item) // header { cout << item << endl; }
8-34
![Page 35: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/35.jpg)
Passing an Entire Array
• Use array name, without any brackets, as the argument
• Can also pass the array size so the function knows how many elements to process
showScores(tests, 5); // call void showScores(int[], int); // prototype void showScores(int A[], int size)
// header8-35
![Page 36: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/36.jpg)
Modifying Arrays in Functions
• Array parameters in functions are similar to reference variables– No copy, share array memory location
• Changes made to array in a function are made to the actual array in calling function
• Must be careful that an array is not inadvertently changed by a function
8-36
![Page 37: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/37.jpg)
8.9 Two-Dimensional Arrays
• Can define one array for multiple sets of data
• Like a table in a spreadsheet
• Use two size declarators in definition
int exams[4][3];
8-37
Number of rows
Number of cols
First number
ALWAYS represents
Rows!!
![Page 38: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/38.jpg)
Two-Dimensional Array Representation
int exams[4][3];
Use two subscripts to access element exams[2][2] = 86;
8-38
exams[0][0] exams[0][1] exams[0][2]
exams[1][0] exams[1][1] exams[1][2]
exams[2][0] exams[2][1] exams[2][2]
exams[3][0] exams[3][1] exams[3][2]
columns
rows
![Page 39: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/39.jpg)
Initialization at Definition• Two-dimensional arrays are initialized
row-by-rowint exams[2][2] = { {84, 78},
{92, 97} };
• Can omit inner { }
• What will this do?int exams[2][2] = { 84, 78};
8-39
84 78
92 97
![Page 40: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/40.jpg)
Passing a Two-Dimensional Array to a Function• Use array name as argument in function call
getExams(exams, 2);• Use empty [] for row & size declarator for
column in prototype & header
// Headervoid getExams int exams[][NUM_COLS], int rows)
// Prototype, where NUM_COLS is 2 void getExams(int[][NUM_COLS], int);
8-40
![Page 41: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/41.jpg)
Using typedef with aTwo-Dimensional Array
Can use typedef for simpler notation
typedef int intExams[][2];...
// Function prototypevoid getExams(intExams, int);
// Function header void getExams(intExams exams, int rows)
8-41
![Page 42: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/42.jpg)
2D Array Traversal
• Traversal: to visit every element in a data structure
• Use nested loops, one for row and one for column, to visit each array element.– Outer loop determines if by row or column
• Accumulators can be used to sum (process) elements row-by-row, column-by-column, or over the entire array.
8-42
![Page 43: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/43.jpg)
Example: 2D array
// Fill array by rows
int A[3][5],r,c; //3 rows,5 columns
for (r=0;r<3;++r)
for (c=0;c<5;c++)
{ cin >> A[r][c];}
8-43
![Page 44: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/44.jpg)
Example: 2D array
// Print array by rows
int A[3][5],r,c;//3 rows,5 columns
for (r=0;r<3;++r)
{for (c=0;c<5;c++) { cout << A[r][c];}
cout << ‘\n’;
}
8-44
![Page 45: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/45.jpg)
Example: 2D array
// Sum & Avg values in 3x5 array
int A[3][5],r,c,sum = 0;
float avg;
for (r=0;r<3;++r)
{for (c=0;c<5;c++) {sum += A[r][c]}
}
avg = sum/15.0;
8-45
![Page 46: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/46.jpg)
Processing by Columns
// Fill array by columns
int A[3][5],r,c; //3 rows
//5 columns
for (c=0;r<5;++c)
for (r=0;c<3;r++)
{ cin >> A[r][c];}
8-46
![Page 47: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/47.jpg)
CMPS 1043
•Stop Here in Chapter 8
8-47
![Page 48: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/48.jpg)
8.10 Arrays with Three or More Dimensions
• Can define arrays with any number of dimensionsshort rectSolid(2,3,5);
double timeGrid(3,4,3,4);
• When used as parameter, specify size of all but 1st dimensionvoid getRectSolid(short [][3][5]);
8-48
![Page 49: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/49.jpg)
8.11 Vectors
• Holds a set of elements, like an array
• Flexible number of elements - can grow and shrink– No need to specify size when defined – Automatically adds more space as needed
• Defined in the Standard Template Library (STL)– Covered in a later chapter
• Must include vector header file to use vectors
#include <vector>
8-49
![Page 50: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/50.jpg)
Vectors
• Can hold values of any type– Type is specified when a vector is defined vector<int> scores;
vector<double> volumes;
• Can use [] to access elements
8-50
![Page 51: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/51.jpg)
Defining Vectors
• Define a vector of integers (starts with 0 elements)vector<int> scores;
• Define int vector with initial size 30 elementsvector<int> scores(30);
• Define 20-element int vector and initialize all elements to 0 vector<int> scores(20, 0);
• Define int vector initialized to size and contents of vector finalsvector<int> scores(finals);
8-51
![Page 52: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/52.jpg)
Growing a Vector’s Size
• Use push_back member function to add an element to a full array or to an array that had no defined size // Add a new element holding a 75scores.push_back(75);
• Use size member function to determine number of elements currently in a vector howbig = scores.size();
8-52
![Page 53: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/53.jpg)
Removing Vector Elements
• Use pop_back member function to remove last element from vector scores.pop_back();
• To remove all contents of vector, use clear member function scores.clear();
• To determine if vector is empty, use empty member functionwhile (!scores.empty()) ...
8-53
![Page 54: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/54.jpg)
8.14 Arrays of Class Objects
• Class objects can also be used as array elements class Square{ private: int side; public: Square(int s = 1) { side = s; } int getSide() { return side; }};Square shapes[10]; // Create array of 10 // Square objects
8-54
![Page 55: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/55.jpg)
Arrays of Class Objects
• Like an array of structures, use an array subscript to access a specific object in the array
• Then use dot operator to access member methods of that object
for (i = 0; i < 10; i++) cout << shapes[i].getSide() << endl;
8-55
![Page 56: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/56.jpg)
Initializing Arrays of Objects
• Can use default constructor to perform same initialization for all objects
• Can use initialization list to supply specific initial values for each object
Square shapes[5] = {1,2,3,4,5};
• Default constructor is used for the remaining objects if initialization list is too short
Square boxes[5] = {1,2,3};
8-56
![Page 57: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/57.jpg)
Initializing Arrays of Objects
If an object is initialized with a constructor that takes > 1 argument, the initialization list must include a call to the constructor for that object Rectangle spaces[3] =
{ Rectangle(2,5), Rectangle(1,3), Rectangle(7,7) };
8-57
![Page 58: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/58.jpg)
8.13 Arrays of Structures
• Structures can be used as array elements struct Student{
int studentID;string name;
short year;double gpa;
};const int CSIZE = 30;Student class[CSIZE]; // Holds 30 // Student structures
8-58
![Page 59: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/59.jpg)
Arrays of Structures
• Use array subscript to access a specific structure in the array
• Then use dot operator to access members of that structure cin >> class[25].studentID;
cout << class[i].name << " has GPA " << class[i].gpa << endl;
8-59
![Page 60: Chapter 8: Arrays](https://reader035.fdocuments.in/reader035/viewer/2022062301/56813549550346895d9ca651/html5/thumbnails/60.jpg)
Chapter 8: Arrays
Starting Out with C++ Early Objects Seventh Edition
by Tony Gaddis, Judy Walters, and Godfrey Muganda