This document discusses pointers and arrays in C++. It covers array names as pointers, pointer arithmetic, passing addresses to functions, dynamic array allocation using new/delete operators, and common programming errors related to pointers. The key points are: arrays are passed by address; array names are pointer constants; pointers can be used to access array elements; and dynamic allocation allows arrays to adjust at runtime.
I am Christopher Hemmingway. I am a Computer Science Assignment Expert at programminghomeworkhelp.com. I hold a Master's in Computer Science, Princeton University, Princeton. I have been helping students with their homework for the past 10 years. I solve assignments related to Computer Science.
Visit programminghomeworkhelp.com or email support@programminghomeworkhelp.com.You can also call on +1 678 648 4277 for any assistance with Computer Science assignments.
I prepared this slides for the student of FSC BSC BS Computer Science Students. These Slides are very easy to read and understand the pointer logic used in C++ Programming.
All Topic related to pointer is discussed and examples are given
I am Blake H. I am a Software Construction Assignment Expert at programminghomeworkhelp.com. I hold a PhD. in Programming, Curtin University, Australia. I have been helping students with their homework for the past 10 years. I solve assignments related to Software Construction.
Visit programminghomeworkhelp.com or email support@programminghomeworkhelp.com. You can also call on +1 678 648 4277 for any assistance with Software Construction Assignments.
This slide consists of a short introduction to three address code generation, different types of three address code generation such as assignment statements, assignment instructions, copy statements, Unconditional, Conditional, param x call p, n, indexed and address & pointer assignment statements.
I am Elijah L. I am an Algorithm Assignment Expert at programminghomeworkhelp.com. I hold a Bachelor’s Degree in Programming, Leeds University, UK. I have been helping students with their homework for the past 6 years. I solve assignments related to Algorithms.
Visit programminghomeworkhelp.com or email support@programminghomeworkhelp.com.You can also call on +1 678 648 4277 for any assistance with Algorithm assignments.
I am Simon M. I am an Electrical Engineering exam Helper at liveexamhelper.com. I hold a Masters' Degree in Electrical Engineering from, University of Wisconsin, USA. I have been helping students with their exams for the past 10 years. You can hire me to take your exam in Electrical Engineering.
Visit liveexamhelper.com or email info@liveexamhelper.com.
You can also call on +1 678 648 4277 for any assistance with the Electrical Engineering exam.
A template for Market entry strategies for manufacturers or traders wishing to enter a new market overseas. An international marketing plan based from an trade agency model.
I am Christopher Hemmingway. I am a Computer Science Assignment Expert at programminghomeworkhelp.com. I hold a Master's in Computer Science, Princeton University, Princeton. I have been helping students with their homework for the past 10 years. I solve assignments related to Computer Science.
Visit programminghomeworkhelp.com or email support@programminghomeworkhelp.com.You can also call on +1 678 648 4277 for any assistance with Computer Science assignments.
I prepared this slides for the student of FSC BSC BS Computer Science Students. These Slides are very easy to read and understand the pointer logic used in C++ Programming.
All Topic related to pointer is discussed and examples are given
I am Blake H. I am a Software Construction Assignment Expert at programminghomeworkhelp.com. I hold a PhD. in Programming, Curtin University, Australia. I have been helping students with their homework for the past 10 years. I solve assignments related to Software Construction.
Visit programminghomeworkhelp.com or email support@programminghomeworkhelp.com. You can also call on +1 678 648 4277 for any assistance with Software Construction Assignments.
This slide consists of a short introduction to three address code generation, different types of three address code generation such as assignment statements, assignment instructions, copy statements, Unconditional, Conditional, param x call p, n, indexed and address & pointer assignment statements.
I am Elijah L. I am an Algorithm Assignment Expert at programminghomeworkhelp.com. I hold a Bachelor’s Degree in Programming, Leeds University, UK. I have been helping students with their homework for the past 6 years. I solve assignments related to Algorithms.
Visit programminghomeworkhelp.com or email support@programminghomeworkhelp.com.You can also call on +1 678 648 4277 for any assistance with Algorithm assignments.
I am Simon M. I am an Electrical Engineering exam Helper at liveexamhelper.com. I hold a Masters' Degree in Electrical Engineering from, University of Wisconsin, USA. I have been helping students with their exams for the past 10 years. You can hire me to take your exam in Electrical Engineering.
Visit liveexamhelper.com or email info@liveexamhelper.com.
You can also call on +1 678 648 4277 for any assistance with the Electrical Engineering exam.
A template for Market entry strategies for manufacturers or traders wishing to enter a new market overseas. An international marketing plan based from an trade agency model.
Educational issues in the context of urbanization, globalization and privatiz...Hathib KK
It deals: what is urbanization? What are the positive impact of urbanization on education? what are the negative impact of urbanization on education? What is globalization? What is the positive impact of globalization on education? what is the negative impact of globalization on education? What is privatization? what is the positive impact of privatization on education?What is the negative impact of privatization on education?
I am Arnold H. I am a C++ Programming Homework Expert at cpphomeworkhelp.com. I hold a Masters in Programming from The University of Sheffield, UK. I have been helping students with their homework for the past 6 years. I solve homework related to C++ Programming.
Visit cpphomeworkhelp.com or email info@cpphomeworkhelp.com. You can also call on +1 678 648 4277 for any assistance with C++ Programming Homework.
Dynamic Objects,Pointer to function,Array & Pointer,Character String ProcessingMeghaj Mallick
This is an PPT of C++ Programming Language. This includes the various topics such as "Dynamic Objects,Pointer to function,Array & Pointer,Character String Processing ".
it is an array and pointers In this tutorial, you'll learn about the relationship between arrays and pointers in C programming. You will also learn to access array elements using pointers.
Before you learn about the relationship between arrays and pointers, be sure to check these two topics:
In most contexts, array names decay to pointers. In simple words, array names are converted to pointers. That's the reason why you can use pointers to access elements of arrays. However, you should remember that pointers and arrays are not the same.
Homework Assignment – Array Technical DocumentWrite a technical .pdfaroraopticals15
Homework Assignment – Array Technical Document
Write a technical document that describes the structure and use of arrays. The document should
be 3 to 5 pages and include an Introduction section, giving a brief synopsis of the document and
arrays, a Body section, describing arrays and giving an annotated example of their use as a
programming construct, and a conclusion to revisit important information about arrays described
in the Body of the document. Some suggested material to include:
Declaring arrays of various types
Array pointers
Printing and processing arrays
Sorting and searching arrays
Multidimensional arrays
Indexing arrays of various dimension
Array representation in memory by data type
Passing arrays as arguments
If you find any useful images on the Internet, you can use them as long as you cite the source in
end notes.
Solution
Array is a collection of variables of the same type that are referenced by a common name.
Specific elements or variables in the array are accessed by means of index into the array.
If taking about C, In C all arrays consist of contiguous memory locations. The lowest address
corresponds to the first element in the array while the largest address corresponds to the last
element in the array.
C supports both single and multi-dimensional arrays.
1) Single Dimension Arrays:-
Syntax:- type var_name[size];
where type is the type of each element in the array, var_name is any valid identifier, and size is
the number of elements in the array which has to be a constant value.
*Array always use zero as index to first element.
The valid indices for array above are 0 .. 4, i.e. 0 .. number of elements - 1
For Example :- To load an array with values 0 .. 99
int x[100] ;
int i ;
for ( i = 0; i < 100; i++ )
x[i] = i ;
To determine to size of an array at run time the sizeof operator is used. This returns the size in
bytes of its argument. The name of the array is given as the operand
size_of_array = sizeof ( array_name ) ;
2) Initialisg array:-
Arrays can be initialised at time of declaration in the following manner.
type array[ size ] = { value list };
For Example :-
int i[5] = {1, 2, 3, 4, 5 } ;
i[0] = 1, i[1] = 2, etc.
The size specification in the declaration may be omitted which causes the compiler to count the
number of elements in the value list and allocate appropriate storage.
For Example :- int i[ ] = { 1, 2, 3, 4, 5 } ;
3) Multidimensional array:-
Multidimensional arrays of any dimension are possible in C but in practice only two or three
dimensional arrays are workable. The most common multidimensional array is a two
dimensional array for example the computer display, board games, a mathematical matrix etc.
Syntax :type name [ rows ] [ columns ] ;
For Example :- 2D array of dimension 2 X 3.
int d[ 2 ] [ 3 ] ;
A two dimensional array is actually an array of arrays, in the above case an array of two integer
arrays (the rows) each with three elements, and is stored row-wise in memory.
For Example :- Program to fill .
The objective of the Level 5 Diploma in Information Technology is to provide learners with an excellent foundation for a career in a range of organisations. It designed to ensure that each learner is ‘business ready’: a confident, independent thinker with a detailed knowledge of Information Technology, and equipped with the skills to adapt rapidly to change.
1. A First Book of C++A First Book of C++
Chapter 8 (Pt 2)Chapter 8 (Pt 2)
Arrays and PointersArrays and Pointers
2. ∗ In this chapter, you will learn about:
∗ Introduction to Pointers
∗ Array Names as Pointers
∗ Pointer Arithmetic
∗ Passing Addresses
∗ Common Programming Errors
A First Book of C++ 4th Edition 2
Objectives
3. ∗ If grade is a single-dimensional array containing five
integers, the fourth element is grade[3]
∗ C++ compiler computation of the address of grade[3]:
(assuming 4 bytes per integer)
&grade[3] = &grade[0] + (3 * 4)
col*byte size (offset)
∗ This statement reads as “the address of grade[3] equals
the address of grade[0] plus 12”
∗ Figure 8.12 illustrates the address computation used to locate
grade[3]
A First Book of C++ 4th Edition 3
Array Names as Pointers
4. A First Book of C++ 4th Edition 4
Array Names as Pointers (cont'd.)
5. ∗ Offset: number of positions beyond first element in
array
∗ Using offset, we can simulate process used by
computer to access array elements
∗ Example (Figure 8.14 and Table 8.1):
∗ Store address of grade[0] in pointer gPtr
∗ Use offset to find location of grade[3]
∗ Expression *(gPtr + 3) references variable that is
three integers beyond variable pointed to by gPtr
A First Book of C++ 4th Edition 5
Array Names as Pointers (cont'd.)
6. A First Book of C++ 4th Edition 6
Array Names as Pointers (cont'd.)
7. A First Book of C++ 4th Edition 7
Array Names as Pointers (cont'd.)
8. //Program 8.6 – Method 1, assign starting address to pointer
#include <iostream>
using namespace std;
int main()
{
const int ARRAYSIZE = 5;
int *gptr; // declare a pointer to an int
int i, grade[ARRAYSIZE] = {98,87,92,79,85};
gptr = &grade[0]; // store starting of array address
for (i=0; i < ARRAYSIZE; i++)
cout << “nElement ” << i << “ is “ << *(gptr + i);
cout << endl;
return 0;
}
Accessing Array Elements using Pointers 1Accessing Array Elements using Pointers 1
A First Book of C++ 4th Edition 8
9. //Program 8.7 – Method 2, use array itself as pointer
#include <iostream>
using namespace std;
int main()
{
const int ARRAYSIZE = 5;
int i, grade[ARRAYSIZE] = {98,87,92,79,85};
for (i=0; i < ARRAYSIZE; i++)
cout << “nElement ” << i << “ is “ << *(grade + i);
cout << endl;
return 0;
}
Accessing Array Elements Using Pointers 2Accessing Array Elements Using Pointers 2
A First Book of C++ 4th Edition 9
10. ∗ Static array allocation: as variables are defined,
storage is assigned from a memory pool
∗ Specific memory locations are fixed for life of a variable,
used or not
∗ Example: function requests storage for an array of
500 integers
∗ If application requires less than 500 integers, unused
storage is not released until array goes out of scope
∗ If more than 500 integers required, array size must be
increased and the function recompiled
A First Book of C++ 4th Edition 10
Dynamic Array Allocation
11. ∗ Dynamic allocation: storage allocated is determined
and adjusted as program is run
∗ Useful when dealing with lists
∗ Allows list to expand and contract as list items are
added and deleted
∗ Example: constructing list of grades
∗ Don’t know number of grades ultimately needed
∗ Need a mechanism to enlarge and shrink array
∗ new and delete operators: provide capability
A First Book of C++ 4th Edition 11
Dynamic Array Allocation (cont’d.)
12. A First Book of C++ 4th Edition 12
Dynamic Array Allocation (cont'd.)
13. ∗ Dynamic storage requests for scalar variables or
arrays made in declaration or assignment statements
∗ Example 1 (assign value to pointer upon declaration):
int *num = new int;
∗ Reserves space for an integer variable
∗ Stores address of this variable into pointer num
A First Book of C++ 4th Edition 13
Dynamic Array Allocation (cont'd.)
14. ∗ Example 2: same function as Example 1
(declare pointer first, assign value in next statement)
int *num;
num = new int;
∗ Heap: free storage area of a computer
∗ Consists of unallocated memory, can be allocated to a
running program
∗ In Examples 1 and 2, new storage comes from free
storage area (heap)
A First Book of C++ 4th Edition 14
Dynamic Array Allocation (cont'd.)
15. ∗ Example of dynamic allocation of an array:
int *grade = new int[200];
∗ Statement reserves storage for 200 integers and places address
of first integer into pointer grade
∗ Same example with variable dimension
cout << "Enter the number of grades to be"
<< " processed: ";
cin >> numgrades;
int *grades = new int[numgrades];
∗ Size of array depends on user input
∗ Values accessed by array notation: grades[i]
∗ Values accessed by pointer notation: *(grades+i)
A First Book of C++ 4th Edition 15
Dynamic Array Allocation (cont'd.)
16. ∗ By adding to and subtracting from pointers, we can
obtain different addresses
∗ Pointers can be compared using relational operators (
==, !=, <, >, etc.)
∗ Consider declarations:
int nums[100];
int *nPt;
∗ Set address of nums[0] into nPt using:
nPt = &nums[0];
nPt = nums;
A First Book of C++ 4th Edition 16
Pointer Arithmetic
similar (an array is by default a pointer)
17. ∗ After nPt is assigned a valid address, values can be
added or subtracted to produce new addresses
∗ Scaling: automatic adjustment of computed address,
ensures points to value of correct type
∗ Example: nPt = nPt + 4;
∗ Assuming an integer requires 4 bytes, the computer
multiplies 4 by 4 and adds 16 to the address in nPt
A First Book of C++ 4th Edition 17
Pointer Arithmetic (cont'd.)
computing new address
18. A First Book of C++ 4th Edition 18
Pointer Arithmetic (cont'd.)
+4 bytes +4 bytes +4 bytes +4 bytes
19. ∗ Pointers can be initialized when declared
∗ Example: int *ptNum = &miles;
∗ Above initialization valid only if miles was declared as an integer
prior to above statement
∗ The following statements produce an error
int *ptNum = &miles;//miles not declared yet
int miles;
∗ Arrays can be initialized within declarations
double *zing = &prices[0];
∗ This statement is valid if prices has already been declared as
a double-precision array
A First Book of C++ 4th Edition 19
Pointer Initialization
20. ∗ Passing addresses to function using reference
variables was addressed in Chapter 6
∗ Implied use of addresses because the reference does
provide the function with an address
∗ The function call swap(num1, num2) does not tell
whether parameters are passed by value or reference
∗ Must look at function prototype or header line to
determine
A First Book of C++ 4th Edition 20
Passing Addresses
21. ∗ Explicit passing of an address to a function: place the
address operator (&) in front of variable being passed
∗ Example (Figure 8.19 and Program 8.11):
swap(&firstnum, &secnum);//in function call
∗ This function call passes the addresses of firstnum and
secnum to swap()
∗ Explicitly passing addresses using the address operator is
effectively a pass by reference
A First Book of C++ 4th Edition 21
Passing Addresses (cont'd.)
22. A First Book of C++ 4th Edition 22
Passing Addresses (cont'd.)
23. A First Book of C++ 4th Edition 23
Passing Addresses (cont'd.)
24. ∗ When array is passed to a function, address of first
location is the only item passed
∗ Program 8.13 passes an array to a function using
conventional array notation
A First Book of C++ 4th Edition 24
Passing Arrays
25. A First Book of C++ 4th Edition 25
//vals = &nums[0]
26. ∗ Parameter vals in header line declaration for
findMax() in Program 8.13 actually receives the
address of array nums
∗ Thus, val is really a pointer
∗ Another suitable header line for findMax() is:
int findMax(int *vals, int numels)
// here vals is declared as a pointer
// to an integer
A First Book of C++ 4th Edition 26
Passing Arrays (cont'd.)
27. ∗ Access to multidimensional arrays can be made using
pointer notation
∗ Example: consider the declaration:
int nums[2][3] = { {16,18,20},
{25,26,27} };
∗ Creates an array of elements and a set of pointer
constants named nums, nums[0], and nums[1] (as
shown in Figure 8.26)
A First Book of C++ 4th Edition 27
Advanced Pointer Notation
28. Advanced Pointer Notation (cont'd.)Advanced Pointer Notation (cont'd.)
A First Book of C++ 4th Edition 28
29. ∗ Two-dimensional array pointer constants allow for
accessing array elements in several ways
∗ Address of first element in first row of nums is
nums[0]
∗ Address of first element in second row is nums[1]
∗ Variable pointed to by nums[0] is num[0][0]
∗ Variable pointed to by nums[1] is num[1][0]
∗ Each element can be accessed by applying an offset
to the correct pointer
A First Book of C++ 4th Edition 29
Advanced Pointer Notation (cont'd.)
30. A First Book of C++ 4th Edition 30
Advanced Pointer Notation (cont'd.)
Pointer Notation Subscript Notation Values
*(*nums) nums[0][0] 16
*(*nums + 1) nums[0][1] 18
*(*nums + 2) nums[0][2] 20
*(*(nums + 1)) nums[1][0] 25
*(*(nums + 1) + 1) nums[1][1] 26
*(*(nums + 1) + 2) nums[1][2] 27
31. ∗ Attempting to explicitly store an address in a variable that
has not been declared as a pointer
∗ Using a pointer to access nonexistent array elements
∗ Incorrectly applying address and indirection operators
∗ If pt is a pointer variable, the expressions:
pt = &45 //must be variable name, e.g:&num
pt = &(miles + 10)//&(miles + num)-> ok
are both invalid because they attempt to take
the address of a value
A First Book of C++ 4th Edition 31
Common Programming Errors
32. ∗ Taking addresses of pointer constants
∗ For example, given the declarations:
int nums[25];
int *pt;
the assignment pt = &nums; //INVALID
∗ nums is a pointer constant that is itself equivalent to an
address; the correct assignment is :
pt = nums OR pt = &nums[0]
∗ Taking addresses of a reference argument, reference
variable, or register variable
A First Book of C++ 4th Edition 32
Common Programming Errors
(cont'd.)
33. ∗ Initializing pointer variables incorrectly
∗ Initialization int *pt = 5; // INVALID
∗ pt is a pointer to an integer; it must be initialized with a valid
address
∗ Becoming confused about whether a variable contains an
address or is an address
int &dist = miles; // contains an address or is an address???
int dist = &miles; // contains an address or is an address???
∗ Forgetting to use the bracket set, [ ], after the delete or
new operator when dynamically allocating or deallocating
memory
A First Book of C++ 4th Edition 33
Common Programming Errors
(cont'd.)
34. ∗ Every variable has: data type, address, value
∗ A pointer is a variable that is used to store the address
of another variable
∗ An array name is a pointer constant
∗ Access to an array element using a subscript can
always be replaced using a pointer
∗ Arrays can be dynamically created as a program is
executing
A First Book of C++ 4th Edition 34
Summary
35. ∗ Arrays are passed to functions as addresses
∗ When a single-dimensional array is passed to a
function, the parameter declaration for the function
can be either an array declaration or a pointer
declaration
∗ Pointers can be incremented, decremented,
compared, and assigned
A First Book of C++ 4th Edition 35
Summary (cont'd.)