Presentation is loading. Please wait.

Presentation is loading. Please wait.

計算機概論實習 2007-06-15. 2 Claim a Parameter int a; a = 5; typenameaddress inta0x0001 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008.

Similar presentations


Presentation on theme: "計算機概論實習 2007-06-15. 2 Claim a Parameter int a; a = 5; typenameaddress inta0x0001 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008."— Presentation transcript:

1 計算機概論實習 2007-06-15

2 2 Claim a Parameter int a; a = 5; typenameaddress inta0x0001 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 typenameaddress 5 char c; c = 'A'; typenameaddress inta0x0001 charc0x0006 'A'

3 3 Print a Parameter typenameaddress inta0x0001 charc0x0006 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 5 cout << a; cout << &a; 'A'

4 4 Claim a Pointer typenameaddress inta0x0001 int*ap0x0008 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 int* ap; ap = &a; 0x0001 5

5 5 Print a Point typenameaddress inta0x0001 int*ap0x0008 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 0x0001 5 cout << ap; cout << &ap; cout << *ap;

6 6 Claim a Class (Object) typenameaddress value 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 A a; a.a = 5; class A{ int p; int f(){return p;} }; typenameaddress Aa0x0001 a.a0x0001 5 A &ap = a; typenameaddress Aa0x0001 a.a0x0001 Aap0x0001 ap.a0x0001

7 7 Print the Content of Object addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 5 typenameaddress Aa0x0001 a.a0x0001 Aap0x0001 ap.a0x0001 cout << "&a: " << &a << endl; cout << "&ap: " << &ap << endl; &a: 0x0001 &ap: 0x0001 cout << "a.f(): " << a.f() << endl; cout << "ap.f(): " << ap.f() << endl; a.f(): 5 ap.f(): 5 a.a = 4; cout << "a.f(): " << a.f() << endl; cout << "ap.f(): " << ap.f() << endl; a.f(): 4 ap.f(): 4 4

8 8 Call by Value addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 typenameaddress inta0x0001 charc0x0006 void main(){ int a; a = 5; f(a); } void f(int c){ c = 4; } 5 4 1 1 2 2 2 3 3 3 3 5 4 4 4

9 9 Call by Address typenameaddress inta0x0001 int*ap0x0008 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 void main(){ int a = 5; f(a); } void f(int* ap){ *ap = 4; ap = ap + 1; } 5 1 1 1 0x0001 2 2 2 2 3 4 34 4 0x0005 3 4

10 10 Call by Reference addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 typenameaddress Aa0x0001 a.a0x0001 Aao0x0001 ao.a0x0001 4 void main(){ A a; a.a = 5; f(a); } void f(A& ao){ ao.a = 4; } 5 1 1 1 2 3 2 2 3 3 4 4 4

11 11 Try it!!! Please explain that what happen in the following code. Please write a sample code to prove your mind. A a1,a2; a1.a = 5; a2 = a1; :


Download ppt "計算機概論實習 2007-06-15. 2 Claim a Parameter int a; a = 5; typenameaddress inta0x0001 addressvalue 0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008."

Similar presentations


Ads by Google