alexiskhb

pointers

Oct 23rd, 2020
993
138 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string.h>
  3.  
  4. using namespace std;
  5.  
  6. void foo(char const* s) {
  7.     cout << s << endl;
  8. }
  9.  
  10. void foo(int ddd) {
  11.     int const d = ddd; // west const / east const
  12. //    d += 1;
  13. }
  14.  
  15. void print_array(int64_t *arr, int n) {
  16.     for (int i = 0; i < n; i++) {
  17.         cout << arr[i] << ' ';
  18.     }
  19.     cout << endl;
  20. }
  21.  
  22. void update_and_print_array(int64_t *arr, int n, int k) {
  23.     // segfault
  24.     for (int i = 0; i < n; i++) {
  25.         arr[i] *= k;
  26.     }
  27.     print_array(arr, n);
  28. }
  29.  
  30.  
  31. struct Array {
  32.     int64_t *arr;
  33.     int n;
  34.     Array *p;
  35. };
  36.  
  37. void update_and_print_array(Array a, int k) {
  38.     // segfault
  39.     for (int i = 0; i < a.n; i++) {
  40.         a.arr[i] *= k;
  41.     }
  42.     print_array(a.arr, a.n);
  43. }
  44.  
  45. struct S {
  46.     int64_t i64;
  47.     char c1, c2;
  48. };// 11111111cc......
  49. // 10 байт?
  50. // 16 байт!!
  51.  
  52. struct S2 {
  53.     char c1;
  54.     int64_t i64;
  55.     char c2;
  56. };// c.......11111111c.......
  57. // 10 байт?
  58. // 24!!
  59.  
  60. struct SEmpty {
  61. };
  62.  
  63. int main() {
  64.     int64_t i;
  65.     int a = 4;
  66.     char c;
  67.     // UNDEFINED BEHAVIOUR
  68.  
  69.     char c_string[] = "kek"; // \0
  70.  
  71. //    cout << sizeof(c_string) << endl;
  72.  
  73.     char c_str2[] = "a\naa\ta\\s\"das\0-123123123";
  74.  
  75. //    cout << c_str2 << endl;
  76. //    cout << sizeof(c_str2) << endl;
  77.  
  78. //    foo();
  79.  
  80.     const int d = 5;
  81.     int d2 = 44;
  82.  
  83.     int *d_p = &d2;
  84.  
  85.     (*d_p) += 1;
  86. //    cout << d2 << endl;
  87.  
  88.  
  89.     int arr[3] = {11, 22, 33};
  90.     // d_p = &arr[0]; // арифметика указателей
  91.     d_p = arr;
  92. //    cout << *d_p << endl;
  93.     d_p += 1;
  94. //    cout << *d_p << endl;
  95.  
  96.     char carr[3] = {'a', 'b', 'c'};
  97. //    char *c_p = &carr[0];
  98.     char *c_p = carr;
  99. //    cout << *c_p << endl;
  100. //    c_p += 1;
  101. //    cout << *c_p << endl;
  102. //    cout << c_p[2] << endl;
  103. //    cout << *(c_p + 2) << endl;
  104. //    cout << *(2 + c_p) << endl;
  105. //    cout << 2[c_p] << endl;
  106.  
  107.     const int u = 10;
  108.     int const * u_p = &u;
  109.     u_p += 1;
  110. //    cout << *u_p << endl;
  111.  
  112.  
  113.  
  114.     int64_t arr2[3] = {111, 222, 333};
  115.     int64_t * const a2_p = arr2;
  116. //    a2_p = &arr;
  117. //    a2_p += 1;
  118.     arr2[0] += 1;
  119. //    cout << *a2_p << endl;
  120. //    foo("asdasasdsd");
  121.  
  122.     int n = sizeof(arr2) / sizeof(*arr2);
  123. //    update_and_print_array(arr2, n, 2);
  124.  
  125.     Array ar{arr2, n};
  126. //    ar.arr = arr2;
  127. //    ar.n = n;
  128. //    update_and_print_array(ar,2);
  129.  
  130.  
  131.     int * p1 = &n, **p2 = &p1, ***p3 = &p2;
  132. //    cout << ***p3 << endl;
  133.  
  134.  
  135.     S ss[3];
  136.     cout << sizeof(ss) << endl;
  137.     cout << sizeof(ss[0]) << endl;
  138.  
  139.     S2 ss2[3];
  140.     cout << sizeof(ss2) << endl;
  141.     cout << sizeof(ss2[0]) << endl;
  142.  
  143.     SEmpty sse[10];
  144.     cout << sizeof(SEmpty) << endl;
  145.     cout << sizeof(sse) << endl;
  146.  
  147.     string s = "asd\0asdas";
  148.     s += '\n';
  149.     cout << s << endl;
  150.     cout << s.size() << endl;
  151.     cout << s.capacity() << endl;
  152.     return 0;
  153. }
  154.  
RAW Paste Data