Advertisement
avr39ripe

cppPtrAdvanceeeed

Sep 13th, 2021
1,159
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.51 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int& maxArr(int arr[], int arrSize)
  4. {
  5.     int maxIdx{ 0 };
  6.     for (int i{ 0 }; i < arrSize; ++i)
  7.     {
  8.         if (arr[i] > arr[maxIdx]) { maxIdx = i; }
  9.     }
  10.     return arr[maxIdx];
  11. }
  12.  
  13. int a{ 10 };
  14.  
  15. int copy{ a };
  16.  
  17.  
  18. template <typename T>
  19. T max(T a, T b)
  20. {
  21.     return a > b ? a: b;
  22. }
  23.  
  24. template <typename T>
  25. T& max(T& a, T& b)
  26. {
  27.  
  28.     return a > b ? a : b;
  29. }
  30.  
  31. int& badRefRet()
  32. {
  33.     int arr[5]{ 1,4,7,343,2 };
  34.     return arr[3];
  35. }
  36.  
  37. int* badPtrRet()
  38. {
  39.     int arr[5]{ 1,4,7,343,2 };
  40.     return &arr[3];
  41. }
  42.  
  43. void bigFrame()
  44. {
  45.     double biggArr[100000]{};
  46.     std::cout << "Boooo :)\n";
  47. }
  48.  
  49. void printArr(int arr[], int arrSize)
  50. {
  51.     for (int i{ 0 }; i < arrSize; ++i)
  52.     {
  53.         std::cout << arr[i] << ' ';
  54.     }
  55.     std::cout << '\n';
  56. }
  57.  
  58. void printArr(int arr[], int idxBegin, int idxEnd)
  59. {
  60.     for (int i{ idxBegin }; i < idxEnd; ++i)
  61.     {
  62.         std::cout << arr[i] << ' ';
  63.     }
  64.     std::cout << '\n';
  65. }
  66.  
  67. void printArr(const int* begin, const int* const end)
  68. {
  69.     while (begin != end)
  70.     {
  71.         std::cout << *begin++ << ' ';
  72.     }
  73.     std::cout << '\n';
  74. }
  75.  
  76. void fillArr(int* begin, int* end)
  77. {
  78.     while (begin != end)
  79.     {
  80.         *begin++ = rand()%10;
  81.     }
  82.     std::cout << '\n';
  83. }
  84.  
  85. void swap(int a, int b)
  86. {
  87.     std::cout << "inside swap start a = " << a << ' ' << " b = " << b << '\n';
  88.     int copy{ a };
  89.     a = b;
  90.     b = copy;
  91.  
  92.     std::cout << "inside swap end a = " << a << ' ' << " b = " << b << '\n';
  93. }
  94.  
  95. void swapPtr(int* a, int* b)
  96. {
  97.     std::cout << "inside swap start *a = " << *a << ' ' << " *b = " << *b << '\n';
  98.     int copy{ *a };
  99.     *a = *b;
  100.     *b = copy;
  101.  
  102.     std::cout << "inside swap end *a = " << *a << ' ' << " *b = " << *b << '\n';
  103. }
  104.  
  105. void swapRef(int& a, int& b)
  106. {
  107.     std::cout << "inside swap start a = " << a << ' ' << " b = " << b << '\n';
  108.     int copy{ a };
  109.     a = b;
  110.     b = copy;
  111.  
  112.     std::cout << "inside swap end a = " << a << ' ' << " b = " << b << '\n';
  113. }
  114.  
  115. int* createArr(int size)
  116. {
  117.     return new int[size];
  118.  
  119. }
  120.  
  121.  
  122. void deleteArr(int* ptr)
  123. {
  124.     delete[] ptr;
  125. }
  126.  
  127.  
  128. int main()
  129. {
  130.     //const int cNum{ 33 };
  131.     //int num{ 42 };
  132.     //const int arrSize{ 15 };
  133.     //int arr[arrSize]{ 1,2,3,4,5,6,7,8,9,100,11,12,13,14,15 };
  134.  
  135.  
  136.     //int x{ 10 };
  137.     //int y{ 20 };
  138.  
  139.     //std::cin >> x;
  140.     //std::cin >> y;
  141.     //std::cout << "pre swap start x = " << x << ' ' << " y = " << y << '\n';
  142.     //swapRef(x, y);
  143.     //std::cout << "post swap start x = " << x << ' ' << " y = " << y << '\n';
  144.     //maxArr(arr, arrSize) = 88;
  145.  
  146.     //auto badPtr{ badPtrRet() };
  147.     //std::cout << *badPtr << '\n';
  148.  
  149.     //bigFrame();
  150.  
  151.     //std::cout << *badPtr << '\n';
  152.     //int* const refPtr{ &x };
  153.     /*int& ref{};*/
  154.  
  155.     //ref = y;
  156.     //*refPtr = y;
  157.  
  158.     //y = 88;
  159.     ////ref = 555;
  160.     //std::cout << x << '\n';
  161.  
  162.  
  163.  
  164.     // arr -> int* const arr;
  165.  
  166.     /*const int* ptrI{ &num };
  167.     *ptrI = 777;
  168.  
  169.  
  170.    
  171.    
  172.     ptrI++;
  173.     arr++;*/
  174.  
  175.     // *(arr + i) < - > arr[i]
  176.     // 100 - 2
  177.    
  178.     //d::cout << *ptrI << ' ' << *arr << '\n';
  179.  
  180.     //printArr(arr+6, arr + arrSize-2);
  181.  
  182.     //int val{ 42 };
  183.  
  184.     //int* ptrI{ nullptr };
  185.  
  186.     //ptrI = new int{ 4242 };
  187.  
  188.     ////ptrI = (int*)260781;
  189.  
  190.     //std::cout << *ptrI << '\n';
  191.  
  192.     //(*ptrI)++;
  193.  
  194.     //std::cout << *ptrI << '\n';
  195.  
  196.     //delete ptrI;
  197.  
  198.     //ptrI = &val;
  199.  
  200.     //std::cout << *ptrI << '\n';
  201.  
  202.     int arrSize{};
  203.  
  204.     std::cout << "Enter arr size:\n";
  205.     std::cin >> arrSize;
  206.  
  207.     int* p{ new int{ 33 } };
  208.     p++;
  209.     p++;
  210.  
  211.     p -= 2;
  212.  
  213.  
  214.     delete p;
  215.  
  216.     p = new int[5];
  217.     delete[] p;
  218.  
  219.     // A 1 ,1 ,2 ,3,5,3
  220.  
  221.     // B 0, 2, 2, 5, 0 ,8
  222.  
  223.     // C 1, 3, 0,0 ,0, 0
  224.  
  225.  
  226.  
  227.  
  228.  
  229.     auto arr{ createArr(arrSize) };
  230.     fillArr(arr, arr + arrSize);
  231.     printArr(arr, arr + arrSize);
  232.     deleteArr(arr);
  233.  
  234.  
  235.     return 0;
  236. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement