Advertisement
TheWhiteFang

Pass by everything lel

Dec 18th, 2014
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.96 KB | None | 0 0
  1. //http://pastebin.com/u/TheWhiteFang
  2. //pass by everything
  3. //Return by value
  4. int DoubleValue(int nX)
  5. {
  6.  int nValue = nX * 2;
  7.  return nValue; // A copy of nValue is returned here
  8. } // nValue goes out of scope here
  9. ---------------------------------------------------------------------------------------------------------------------------------//Return by reference
  10. int& DoubleValue(int nX)
  11. {
  12.     int nValue = nX * 2;
  13.     return nValue; // return a reference to nValue here
  14. } // nValue goes out of scope here
  15.  
  16. struct FixedArray25 {
  17.  int anValue[25];
  18. };
  19.  
  20. int& Value(FixedArray25 &rArray, int nIndex) {
  21.  return rArray.anValue[nIndex];
  22. }
  23.  
  24. int main() {
  25.  FixedArray25 sMyArray;
  26.  // Set the 10th element of sMyArray to the value 5
  27.  Value(sMyArray, 10) = 5;
  28.  cout << sMyArray.anValue[10] << endl;
  29.  return 0;
  30. }
  31.  
  32. ---------------------------------------------------------------------------------------------------------------------------------//Return by Address
  33.  
  34.     int* DoubleValue(int nX)
  35.     {
  36.     int nValue = nX * 2;
  37.     return &nValue; // return nValue by address here
  38.     } // nValue goes out of scope here
  39.  
  40.     int* AllocateArray(int nSize)
  41.     {
  42.     return new int[nSize];
  43.     }
  44.  
  45. int main()
  46. {
  47.  int *pnArray = AllocateArray(25);
  48.  // do stuff with pnArray
  49.  delete[] pnArray;
  50.  return 0;
  51. }
  52. ---------------------------------------------------------------------------------------------------------------------------------//more examples
  53.  
  54. #include <iostream>
  55. using namespace std;
  56.  
  57. void method1(int *inVal){ //pass by reference
  58.  
  59.     *inVal = 5;
  60. };
  61. void method2(int &inVal){ //pass by address
  62.  
  63.     inVal = 5;
  64. };
  65. int method3(int inVal){ //pass by value
  66.     return 5;
  67. };
  68.  
  69. int main()
  70. {
  71.     int data1 = 0, data2 = 0, data3 = 0;
  72.  
  73.     method1(&data1);//pointer needs input address
  74.     method2(data2);//method2 function will change the value in address data2
  75.     data3 = method3(data3);//function passes value to data3
  76.     cout << data1 << endl;
  77.     cout << data2 << endl;
  78.     cout << data3 << endl;
  79.  
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement