cs162 introduction to computer science ii
play

CS162: Introduction to Computer Science II References 1 - PDF document

CS162: Introduction to Computer Science II References 1 Pass-by-Value void swap(int x, int y) { int temp = x; x = y; y = temp; } Consider the swap function above, which is intended to swap the values of x and y We will use it in


  1. CS162: Introduction to Computer Science II References 1 Pass-by-Value void swap(int x, int y) { int temp = x; x = y; y = temp; } • Consider the swap function above, which is intended to swap the values of x and y • We will use it in the next slide 2 1

  2. Pass-by-Value int main() { int a = 10; int b = 20; swap(a,b); std::cout << "a = " << a << " b = " << b << std:: endl; } • What gets printed out? a = 10 b= 20 • What happened? 3 Pass-by-Value void swap(int x, int y) { int temp = x; x = y; y = temp; } • When swap(a,b) is called: • The value of a is copied into local variable x • The value of b is copied into local variable y • The swap function executes (local variables x and y are swapped) • Nothing happens to the original values of a and b 4 2

  3. Pass-by-Value • Pass-by-value: the parameters of a function hold copies of the values sent to them • Pass-by-reference: the parameters of a function hold the actual memory locations of the values sent to them 5 Pass-by-Value void swap(int& x, int& y) { int temp = x; x = y; y = temp; } • If you changed the swap function to pass by reference, you need to pass in a reference to x and a reference to y 6 3

  4. Pass-by-Reference • A reference variable has an & between the data type and the variable • Eg. x and y are reference variables below // Pass by reference version void swap(int& x, int& y) { int temp = x; x = y; y = temp; } 7 Pass-by-Reference int main() { int a = 10; int b = 20; swap(a,b); std::cout << "a = " << a << " b = " << b << std:: endl; } • If you run the pass-by-reference version of swap, you now get: a = 20, b = 10 8 4

  5. Pass-by-Reference • You can also accomplish the same thing as pass-by-reference if you translate everything into pointers // Pointer version void swap(int* x, int* y) { int temp = *x; *x = *y; *y = temp; } 9 Pass-by-Reference • And for the pointer version, you also need to call swap with the address of a and b int main() { int a = 10; int b = 20; // This is the pointer version of swap swap(&a,&b); std::cout << "a = " << a << " b = " << b << std:: endl; } 10 5

  6. Const • If a reference variable is declared const, it means the reference contents cannot be changed • eg. the function foo doesn’t change the variable x // This is a silly function but it’s just // an illustration int foo(const int& x) { return x*x; } 11 Const • If we make x and y const references in the swap function, it will not compile • This is because x and y are modified by the swap function // Won’t compile void swap(const int& x, const int& y) { int temp = x; x = y; y = temp; } 12 6

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend