avr39ripe

megaPtrWorkout

Nov 26th, 2020
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.53 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. void printArr(int* arr, int arrSize)
  4. {
  5.     for (int i{ 0 }; i < arrSize; ++i)
  6.     {
  7.         std::cout << arr[i] << ' ';
  8.     }
  9.     std::cout << '\n';
  10. }
  11.  
  12. //arr
  13. // 0     1     2     3      4     5     6     7     8     9
  14. //[1000][2000][3000][4000][5000][6000][7000][8000][9000][A000][Xxxx][xxxx][xxxx][Xxxx]
  15. // 100   104   108   112   116   120   124   128   132   136    140  144   148   152
  16. int main()
  17. {
  18.     int num{ 33 }; //['33''0''0''0']
  19.     const int arrSize{ 10 };
  20.     bool flag{ true };
  21.     int arr[arrSize]{ 1,2,3,4,5,6,7,8,9,10 };// arr => &arr[0]
  22.     const int cArr[arrSize]{};
  23.     bool flags[arrSize]{};
  24.     bool* ptrB{ &flag };
  25.     bool* ptrFlags{ flags };
  26.     double* ptrD;
  27.     int* ptr{ arr }; // arr + 5 = > arr + 5 * sizeof(int) => arr + 5 * 4
  28.     const int* cPtr{ cArr };
  29.     //cArr -> const int* const
  30.     arr += 5; // int* const
  31.     ptr += 5; // int*
  32.  
  33.     cArr += 5;
  34.     cPtr += 5;
  35.  
  36.     int x{ 33 };
  37.     int y{ 44 };
  38.     int* ptrI{ &x };
  39.     ptrI = &y;
  40.  
  41.     int* const cPtrI{ &x };
  42.     cPtrI = &y;
  43.     std::cout << *cPtrI << '\n';
  44.     *cPtrI = 444;
  45.  
  46.     const int cx{ 333 };
  47.     const int* ptrCI{ &cx };
  48.     ptrCI = &y;
  49.  
  50.     const int* const zhest{ &cx };
  51.  
  52.     ptrI = ptrCI;
  53.     ptrCI = ptrI;
  54.     *ptrCI = 5678;
  55.     *ptrI = 789;
  56.  
  57.     std::cout << *ptrCI << '\n';
  58.     *ptrCI = 678;
  59.  
  60.     // int* - не константный ук. на не константную память
  61.     // const int* - не константный ук. на константную память
  62.     // const int* const - константный ук. на константную память
  63.  
  64.  
  65.     std::cout << ptr[0] << '\n'; //6
  66.     std::cout << *(ptr - 0) << '\n'; //6
  67.  
  68.     std::cout << ptr[-5] << '\n'; //6 ptr = ptr - 5 * sizeof(int) => 5 * 4
  69.     std::cout << *(ptr-5) << '\n'; //6
  70.    
  71.     std::cout << ptr[3] << '\n'; //9 ptr = ptr + 3 * sizeof(int)
  72.     std::cout << *(ptr + 3) << '\n'; //9
  73.     return 0;
  74.     //ptr = ptr + 3; // ptr == 135 -> false :) ptr = ptr - 2 * sizeof(type)
  75.  
  76.     //std::cout << sizeof(int) << '\n';
  77.     //std::cout << sizeof(flag) << '\n';
  78.     //std::cout << sizeof(ptrB) << '\n';
  79.     //std::cout << sizeof(ptrD) << '\n';
  80.     int size{arrSize };
  81.  
  82.     for (int i{ 0 }; i < size; ++i)
  83.     {
  84.         //*(ptr + i) += 1;
  85.         //ptr[i] += 1;
  86.         std::cout << *(ptr + i) << '\n';
  87.         //std::cout << (ptr[i]) << '\n';
  88.         //std::cout << (arr[i]) << '\n';
  89.         //std::cout << "\n\n";
  90.     }
  91.  
  92.     // arr[i] <=> *(arr + i)
  93.     // int arr[10] = 100;
  94.     // arr + 2 => arr + 2 * sizeof(int) ==> 100 + 2 * 4 = 108
  95.  
  96.     return 0;
  97.     std::cout << "&arr[0] =\t" << (&arr[0]) << '\n';
  98.     std::cout << "ptr =\t\t" << ptr << '\n';
  99.     std::cout << "arr =\t\t" << arr << '\n';
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment