Upcoming SlideShare
×

# FP 201 - Unit 6

512

Published on

0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total Views
512
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
42
0
Likes
0
Embeds 0
No embeds

No notes for slide

### FP 201 - Unit 6

1. 1. FUNDAMENTALS OFC++ PROGRAMMING6.0 POINTER (PENUDING)
2. 2. 6.1 Understand the concept of pointer
3. 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. 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. 5. What is pointer? Memory Blocks 0x8f8dfff12 0x8f8dfff13 0x8f8dfff14 Address of Memory Blocks
6. 6. Declaring Pointer Syntax: data_type *pointer_name;Example double *p;
7. 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. 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. 9. Pointer Operator int *my_pointer; int my_variable; my_pointer = &my_variable; my_pointer = &my_variable Pointer Memory location variables Address operator
10. 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. 11. j = &i; //pointer to address i i=4;i 4j 0012FF60
12. 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. 13. j = &i; //pointer to address ii=4; i 4 j 0012FF60 cout<<"j = " <<*j j 4
14. 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}
15. 15. v1 = 0;v1 0 p1 = &v1; &vp1 1 *p1 = 42; //value pointed by p1 = 42 p1 42 v1 42
16. 16. See difference? p1 = p2;p1 8 p1 8p2 9 p2 9 BEFORE AFTER *p1 = *p2;p1 8 p1 9p2 9 p2 9
17. 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 aPosition of pointer p Position of pointer p after before operation p+2 operation
18. 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. 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. 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. 21. How it will look like?int *p1, *p2; p1 ? p2 ?p1 = new int;*p1 = 42; p1 p2 ? p1 42 p2 ?
22. 22. p2 = p1; p2 = new int; p1 ? p1 42 p2 p2 53*p2 = 53; *p1 = 88; p1 p1 88 53 p2 p2 53
23. 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!
24. 24. #include<iostream>using namespace std;void main(){int *p1;p1 = new int;*p1 = 10; cout << "*p1 t = "<< *p1 << endl;delete p1;cout << "*p1 t = "<< *p1 << endl;}
25. 25. In Class Exercise 1 What is the output? p1 = p2;int *p1, *p2; cout << *p1 << "t"<< *p2 << endl;p1 = new int; *p1 = 30;p2 = new int; cout << *p1 << "t"<< *p2 << endl; *p1 = *p2;*p1 = 10; cout << *p1 << "t"<< *p2 << endl;*p2 = 20;cout << *p1 << "t"<< *p2 << endl;
26. 26. How it will look like?int *p1, *p2; p1 ? p2 ?p1 = new int;p2 = new int; p1 p2*p1 = 10; *p2 = 20; p1 10 p2 20
27. 27. p1 = p2; p1 10 p2 20*p1 = 30; p1 10 p2 30*p1 = *p2; p1 30 p2 30
28. 28. 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.
29. 29. 6.2 Illustrate the relationship between pointer and array
30. 30. 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
31. 31. 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
32. 32. 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) << " ";}
33. 33. 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];}
34. 34. 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.
35. 35. 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;}
36. 36. 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;}
37. 37. 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) << “ “;
38. 38.  Declaration char * char_ptr; //point to 1st index in the array char_ptr = new char[6]; What is the output for the following code?
39. 39. 6.3 Illustrate the relationship between pointer and function
40. 40. 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
41. 41. Pointer & Functions 2 types of function calls:  Call by value  Call by reference Pointer can be used as parameters in both function
42. 42. 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
43. 43. 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
44. 44. 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"; }
45. 45. 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.
1. #### A particular slide catching your eye?

Clipping is a handy way to collect important slides you want to go back to later.