Bisus

Untitled

Oct 30th, 2019
192
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. double x;
  2. double *p = &x;
  3.  
  4. void *q;
  5. q + 1;// Синтаксическая ошибка
  6.  
  7. double *p, *q;
  8. p - q;// Расстояние между адресами выраженное в элементах данного типа, тип sizet
  9.  
  10. *(p + k);// Значение
  11. Сокращенное обозначение: p[k];
  12.  
  13. double a[5];// a - константный указатель на начало массива
  14. a = p;// Так нельзя!
  15.  
  16. double *p;
  17. const double *q;// q==100 q++==108
  18. double * const r;// r++ не определено!
  19. const double * const s;// s++ не определено!
  20.  
  21. &p[k]==(p + k)
  22. // Лучше писать p + k!
  23.  
  24. double a[5];
  25. double *b[5];
  26. double (*c)[5];
  27. double d[2][3];
  28. double e[5]();
  29. double (*f)(void);
  30.  
  31. Правило интерпритации составных указателей типа:
  32. (В порядке убывания приоритета:)
  33. 1) Идентефикатор(имя объекта);
  34. 2) Если справа стоит ), то найти парную ей ( и проинтерпритировать внутри скобок;
  35. 3) Если справа стоит (, то:
  36. То, что уже проитерпритировали есть ф-ия.
  37. Оставшееся - тип возвращаемого значения.
  38. Скобки до парной - список типов аргуметов.
  39. 4) Если справа стоит ], то:
  40. То, что проинтерпритировали - массив.
  41. Оставшееся - тип аргумена.
  42. В [] может стоять размер.
  43. 5) Если слева стоит *, то то, что проинтерпритировали - указатель. Оставшееся - тип, на который указывает.
  44.  
  45. double a;
  46. double *b;
  47. double c[2];
  48. double d(double);
  49. double *e[3];// e - массив из 3х элементов типа double *
  50. double (*f)[3];// f - указатель на массив из 3х элементов типа double. f==100 f + 1==124
  51. double g[2][3];// g - массив из двух элементов типа массив из трех элементов
  52. double (*h)(double);
  53. double (*i)[5](double);// i - указатель на массив из ф-ий. Такого не бывает!
  54. double (*(*i)[3])(double);
  55.  
  56. double a[5];// 5 - константное выражение
  57. // Размещается в стеке
  58. // В стеке храняться локальные переменные
  59. // Здесь на компиляторах стек - 4 MiB
  60.  
  61. heap(куча)
  62. void *malloc(sizet len);
  63. int free(void *);
  64. или
  65. void free(void *);
  66.  
  67. malloc() возвращает нуль, если не удалось выделить память.
  68.  
  69. stdio.h:
  70. printf(); scanf();
  71. fprintf(); fsanf();
  72. sprintf(); sscanf();// Печать/чтение из строки
  73. snprintf();
  74.  
  75. sscanf(const char *std, const char *format, ...);
  76. int n = 5;
  77. const char *s = "5";
  78. int n;
  79. if( sscanf(s, "%d", &n)!=1 )
  80. return -1;
RAW Paste Data