tracing through e01, question 9 – step 1 // p02.cc p. conrad, for cisc181 07s // exam question for...
TRANSCRIPT
![Page 1: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/1.jpg)
Tracing through E01, question 9 – step 1// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main
![Page 2: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/2.jpg)
Tracing through E01, question 9 – step 2// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main
7k
![Page 3: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/3.jpg)
Tracing through E01, question 9 – step 3// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
7k
mysteryFunction()
![Page 4: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/4.jpg)
Tracing through E01, question 9 – step 4// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
7k
mysteryFunction()
x
The address of k is copied into xSince an address is a pointer,and a pointer is an address,x now points to k.
![Page 5: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/5.jpg)
Tracing through E01, question 9 – step 5// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
7k
mysteryFunction()
x
result
![Page 6: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/6.jpg)
Tracing through E01, question 9 – step 6// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
7k
mysteryFunction()
x
7result
(*x) means dereference the pointer xto go to what it points to. That is, k.
Since (*x) is really k, the value of k,which is 7, gets copied into result.
![Page 7: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/7.jpg)
Tracing through E01, question 9 – step 7// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
7k
mysteryFunction()
x
7 21result
result gets multiplied by 3,and 7 changes to 21
![Page 8: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/8.jpg)
Tracing through E01, question 9 – step 8// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
7 21k
mysteryFunction()
x
21result
Now, (*x) is on the left hand side. (*x) dereferences the pointer x, follows the arrow to what is pointed to,which is k.
So (*x) on the left hand side,really means that we are assigning a new value to k.
![Page 9: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/9.jpg)
Tracing through E01, question 9 – step 9// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
21k
mysteryFunction()
x
21result
When we reach the end of the function,the call frame, and all of its local variablesare popped off of the stack, and they go away.
![Page 10: Tracing through E01, question 9 – step 1 // p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include using namespace std; void mysteryFunction(int](https://reader031.vdocuments.net/reader031/viewer/2022020417/56649f305503460f94c4b138/html5/thumbnails/10.jpg)
Tracing through E01, question 9 – step 10// p02.cc P. Conrad, for CISC181 07S // Exam question for E01 #include <iostream> using namespace std; void mysteryFunction(int *x); int main() { int k = 7; mysteryFunction(&k); cout << k << endl; return 0; }
void mysteryFunction(int *x) { int result; result = (*x); result = result * 3; (*x) = result; }
main()
21k
We have returned from the function,and we print the answer, 21.