Pointer variables store memory addresses and can be used to indirectly access other variables. Pointers allow values to be passed by reference into functions rather than by value. Arrays can be accessed using pointers by treating the array name as a pointer to its first element. Dynamic memory allocation with new/delete operators allows pointers to reference variables in heap memory.
3. Learning Outcome
At the end of the class, student should be able
to:
Define pointer and explain its function
Declare pointer
Explain new and delete operators
4. What is pointer?
Pointer is the memory address of a variable.
Pointer is a variables that are used to store the
addresses of other variables.
5. What is pointer?
Memory Blocks
0x8f8dfff12 0x8f8dfff13 0x8f8dfff14
Address of Memory Blocks
7. The * and & operators
* operator
Reference/dereference operator
Produce the variable to which it point
Refer to “value pointed by”
Pointers are said to "point to"
Example of usage:
double *p; // declare pointer to double variable
void func(int *p) // declare p to be a pointer value
parameter
8. The * and & operators
& operator
Address-of operator
Produce address of variable
Example:
double *p, v;
p = &v; // p point to address of v
9. Pointer Operator
int *my_pointer;
int my_variable;
my_pointer = &my_variable;
my_pointer =
&my_variable
Pointer Memory location
variables Address
operator
10. How it will look like?
#include<iostream>
using namespace std;
void main()
{
int i;
int *j;
j = &i; //pointer to i
i=4;
cout<<"i = " <<i<<endl;
cout<<"j = " <<j<<endl;
}
11. j = &i; //pointer to address i
i=4;
i 4
j 0012FF60
12. What is the output???
int i;
int *j;
j = &i; //pointer to i
i=4;
cout<<"i = " <<i<<endl;
cout<<"j = " <<*j<<endl;
13. j = &i; //pointer to address i
i=4;
i 4
j 0012FF60
cout<<"j = " <<*j
j 4
14. How it will look like?
#include<iostream> Output:
using namespace std;
void main()
v1=42
{
int *p1, v1; p1=42
v1 = 0; Why?
p1 = &v1; //pointer to v1 - As long as p1
*p1 = 42; //value pointed by p1 = 42 contains address to
v1, then both refer
cout<<"v1="<<v1<<endl; to the same
cout<<"p1="<<*p1<<endl; variable
}
16. See difference?
p1 = p2;
p1 8 p1 8
p2 9 p2 9
BEFORE AFTER
*p1 = *p2;
p1 8 p1 9
p2 9 p2 9
17. Pointer Arithmetic
Pointer can only used two arithmetic operation
addition and subtraction.
int a, int *p; W hat happen is:
p=&a; pointer move over bytes
p=p+2; not adding 2 to value of a
it point to the last 2 x int of the integer
a
Position of pointer p Position of pointer p after
before operation p+2 operation
18. Pointer Arithmetic
Example: its equivalent to:
#include<iostream>
using namespace std; #include<iostream>
void main() using namespace std;
{ void main()
int arraysize=4; {
int d []={1,2,3,4}; int arraysize=4;
for (int i = 0; i < arraysize; + int d []={1,2,3,4};
+i) for (int i = 0; i < arraysize; ++i)
cout << *(d + i) << " "; cout << d[i] << " ";
} }
19. Pointer & character string
Use standard function strcmp() uses two pointers to compare
two strings:
strcmp (char *s1, char *s2)
{
while (*s1)
if (*s1 - *s2)
return *s1 - *s2; //if the string are not equal
else
{ s1++;
s2++;
}
return 0;
}
20. new and delete operator
new operator creates new dynamic variable of
specific type
It also return a pointer that point to this new
variable
Eg:
int *n;
n = new int(17); // initialize *n to 17
21. How it will look like?
int *p1, *p2;
p1 ?
p2 ?
p1 = new int;
*p1 = 42;
p1
p2 ?
p1
42
p2 ?
23. delete operator eliminates dynamic variable
It also returns memory that the dynamic
variable occupied in freestore.
Eg:
delete p;
// p will be undefined
Good practice:
Everytime you delete a pointer variable put it to
NULL to ensure it does not become dangling
pointer!
29. In Class Exercise 2
What is the different between the following
variable?
int *intPtr1, intPtr2;
Write a declaration for a pointer variable
named my_new_ptr that points to dynamic
variable of type double.
31. Learning Outcome
At the end of the class, student should be able
to:
Identify relationship between pointer and array
Write program using pointer and array
32. Pointer & Array
Array is a collection of similar type of data
Variable in an array can store memory address
instead of variable value
Dynamic array is an array whose size is
determined during run-time.
It is created using new operator.
Eg:
double *new_array; //point to 1st index in the
array
new_array = new double[10] //to allocate
33. Pointer in Array: Example 1
#include<iostream>
using namespace std;
void main()
{
int d []={1,2,3,4};
int *p1;
p1=d;
for (int i = 0; i < 4; ++i)
cout << *(p1 + i) << " ";
}
34. Pointer in Array: Example 2
#include <iostream>
using namespace std;
void main()
{
int array_size;
cout << “Enter array size: “;
cin >> array_size;
int* my_dyn_array = new int [array_size];
cout << “Enter ” << array_size << “ number ” << endl;
for (int i = 0; i < array_size; ++i)
cin >> my_dyn_array[i];
}
35. Pointer and Array
An array declared without specifying its size
can be assume as a pointer to the address of
the first element in the array.
Eg:
int a[] = {2, 4, 6, 8, 10};
To iterate to the next element, add operation is
used.
36. Pointer and Array: Example 1
#include <iostream>
using namespace std;
int main()
{
char susun[] = "Selamat belajar";
char * pt_str;
pt_str = susun; / point to first element
/
cout << "Turutan sblm perubahan " << susun;
cout << "
nSebelum perubahan, kandungan susun[5] : " <<susun[5];
* (pt_str+5) = 'C'; /change the 6th element
/
cout << "
nSelepas perubahan, kandungan susun[5] : " <<susun[5];
cout << "
nTurutan slps perubahan" << susun;
return 0;
}
37.
38. Pointer and Array: Example 2
#include <iostream>
using namespace std;
int main()
{
int senarai[] = {1,2,3,4,5};
int * point;
point=senarai; / point to first element
/
cout << "
nTurutan sblm perubahan " << senarai[0] << " " << senarai[1];
cout << " " << senarai[2] << " " << senarai[3] << " " << senarai[4];
cout << "
nSebelum perubahan, kandungan senarai[2] : " <<senarai[2];
* (point+2)= 7; / change the 3rd element
/
cout << "
nSelepas perubahan, kandungan senarai[2] : " <<senarai[2];
cout << "
nTurutan slps perubahan " << senarai[0] << " " << senarai[1];
cout << " " << senarai[2] << " " << senarai[3] << " " << senarai[4];
cout << endl;
return 0;
}
39.
40. In Class Exercise 3
Write a declaration for pointer variable named
char_ptr that will be used to point to a dynamic
array of type char.
What is the output for the following code?
int c[3] = {2, 3, 4};
int arraysize = 3, * p;
p = c;
for (int i = 0; i < arraysize; ++i)
cout << c[i] << “ “;
for (i = 0; i < arraysize; ++i)
cout << * (p + i) << “ “;
41. Declaration
char * char_ptr; //point to 1st index in the array
char_ptr = new char[6];
What is the output for the following code?
43. Learning Outcome
At the end of the class, student should be able
to:
Identify relationship between pointer and function
Use pointer as function argument
Write program using pointer and function
44. Pointer & Functions
2 types of function calls:
Call by value
Call by reference
Pointer can be used as parameters in both
function
45. Pointers & Function
#include <iostream>
using namespace std; void Change (int *a, int *b, int *c)
{
void Change (int *, int *, int *); *a = 100;
*b = 200;
*c = 300;
void main() }
{
int x=50, y=60, z=70;
cout << "nx = " << x << "ny = " << y received address
<< "nz = " << z << "nn";
Change (&x, &y, &z);
cout << "nx = " << x << "ny = " << y
<< "nz = " << z << "nn"; change value in
} variable that is point
by a,b,c
46.
47. How it will look like?
Change(&x, &y, &z);
void Change(int *a, int *b, int *c)
{ &x
50
*a = 100; x (100) 1001
*a
*b = 200; 1001 *a
&y
*c = 300; 60
y (200) 1002
} 1002
*b
*b
70 &z
z (300) 1003
*c
1003 *c
48. Pointers & Function
#include <iostream> void Change (int &a, int &b, int &c)
using namespace std; {
a = 100;
b = 200;
void Change (int &, int &, int &);
c = 300;
}
void main() received address
{
int x=50, y=60, z=70;
cout << "nx = " << x << "ny = " << y
<< "nz = " << z << "nn"; change value refered by
Change (x, y, z); a,b,c
cout << "nx = " << x << "ny = " << y
<< "nz = " << z << "nn";
}
49.
50. Summary
Pointer is a memory address
Pointer variable provides way to indirectly
name variable by naming the address of
variable in memory
new and delete operator can be use to
allocate and free the memory after pointer is
used
Dynamic array is array whose sized is
determined during runtime
Function can have pointer variable as its
parameter variables.