Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 A Pointer: an address, a reference, a location of the computer memory A pointer of what? int, char, bool, double, or any kind of data type need to know.

Similar presentations


Presentation on theme: "1 A Pointer: an address, a reference, a location of the computer memory A pointer of what? int, char, bool, double, or any kind of data type need to know."— Presentation transcript:

1 1 A Pointer: an address, a reference, a location of the computer memory A pointer of what? int, char, bool, double, or any kind of data type need to know so the computer knows how to read or store the contents of the memory. Can be

2 2 // define pointers int a, *ap; // can’t use a and *a at the same time; double b, *bp; token k, *kp; a is an integer, ap is a pointer to an integer; b is a double, bp is a pointer to a double; k is a token, kp s a pointer to a token. Define pointers

3 3 A Pointer points to a location of the computer memory int a=5; int *ap; double b=2.3; double *bp; token k; token *kp; bp = new double; *bp = 3.14; *ap = 7; // not new-ed yet a ap b bp k kp 4 bytes } ? ? 2.3 5 3.14 FFFFA080 FFFFA084 1 1

4 4 A Pointer points to a location of the computer memory double a=5.1; double *ap; double *b,*c; ap = &a; // &a :the address of a *ap=1.7; b = new double; *b = 3.14; b = &a; c = b; a ap b c 4 bytes } 5.1 3.14 1.7 new FFFFA080 FFFFA084 1 1 2 2 3 4 3 4

5 5 The name of an array is a pointer int a[4]={5,60,700,8000}; int *p; p=a; cout << *p << endl; cout << *p+1 << endl; cout << *(p+1) << endl; cout << *(p+2) << endl; cout << *(p+3) << endl; cout << *(p+4) << endl; apap 4 bytes } #$&@ 5 60 700 8000 #$&@ FFFFA080 FFFFA084 5 6 60 700 8000 #$&@ 1 1 2 2

6 6 Call by value double fun(int n, double p) { for (int i=0; i < 2; i++) p = p-n; return p; } 5 123.4 0 npinpi int main() { int i=1,k=4; double p, s=123.4; p = fun(i+k,s); cout << i << “\n“ << k << “\n“ << p << “\n“ << s; } 1 4 113.4 123.4 1 4 113.4 123.4 ikpsikps 1+4=5 123.4 118.4 113.4 1 2

7 7 Call by reference double fun(int n, double & p) { for (int i=0;i < 2;i++) p = p-n; return p; } 5 0 npinpi int main() { int i=1,k=4; double p, s=123.4; p = fun(i+k,s); cout << i << “\n“ << k << “\n“ << p << “\n“ << s; } 1 4 113.4 1 1 4 113.5 123.4 ikpsikps &s 1+4=5 2 118.4 113.4

8 8 Call by Value vs. Call by Reference int add_one_V(int n) { n++; cout << “1:“ << n << endl; return n; } 5 n int main() { int a,b=5; a = add_one_V(b); cout << “2:“ << a << “ “ << b << endl; a = sub_one_R(b); cout << “3:“ << a << “ “ << b << endl; } 1:6 2:6 5 3:4 4 abab int sub_one_R(int & n) { n--; return n; } n 6 5 2 4 &b 6 1 1 2 4 3 3

9 9 Passing Arrays as Parameters int top(int a[]) { int i=0; return a[i]; } 0 aiai int main() { int a[4]={10,200,300,400}; cout << top(a) << endl; cout << third(a) << endl; } 10 200 300 400 a int third(int a[]) { int i=2; return a[i]; } 2 aiai 10 300 a+2

10 10 Arrays passed as References void fun(int a[]) { int i=2; a[i] += 5; } 2 aiai int main() { int a[4]={10,200,300,400}; fun(a); cout << a[0] << “ “; cout << a[1] << “ “; cout << a[2] << “ “; cout << a[3] << endl; return 1; } 10 200 305 400 a a[2] 10 200 305 400

11 11 Pass the size of an Array int main() { const int size=4; int a[size]={1,2,3,4}; add_one_to_all(a,size); for (int i=0;i<size;i++) cout << a[i] << “ “; return 1; } 4 0 size i a 1 2 void add_one_to_all(int A[], int size) { for (int i=0;i<size;i++) A[i]++; } 0 4 i A size 1 2 3 4 3 4 1 2 3 4 2 3 4 5 2 3 4 5

12 12 Vector passed as Value int main() { vector a(4); int i; for (i=0;i<a.size();i++) a[i]=i+1; add_one_to_all(a); for (i=0;i<a.size();i++) cout << a[i] << “ “; } 0 1 2 3 4 iaia 1 2 void add_one_to_all(vector v) { for (int i=0;i<v.size();i++) v[i]++; } 0 1 2 3 4 iviv 1 2 3 4 3 4 2 3 4 5 1 2 3 4

13 13 Vector passed as Reference int main() { vector a(4); for (int i=0;i<a.size();i++) a[i]=i+1; add_one_to_all(a); for (int i=0;i<a.size();i++) cout << a[i] << “ “; } 0 1 2 3 4 iaia 1 2 void add_one_to_all(vector & v) { for (int i=0;i<a.size();i++) a[i]++; } 0 iviv 1 2 3 4 3 4 2 3 4 5 2 3 4 5 &a

14 14 C-string is an array of char char *a = "Dennis"; char b[7] = {'D','e','n', 'n','i','s','\0'}; char *c=b; cout << *a << “ “ << b[0] << endl; cout << *(a+2) << “ “ << b[2] << endl; cout << a << “ “ << b << endl; char *d[2] = {c, "Li"}; cout << d[0] << " " << d[1] << endl;; abcdabcd 4 bytes } D n Dennis Dennis Li } 1 byte ‘D’ ‘e’ ‘n’ ‘i’ ‘s’ 0 ‘L’ ‘i’ 0 1 1 d[0] d[1] ‘D’ ‘e’ ‘n’ ‘i’ ‘s’ 0


Download ppt "1 A Pointer: an address, a reference, a location of the computer memory A pointer of what? int, char, bool, double, or any kind of data type need to know."

Similar presentations


Ads by Google