constk

AboutPointersAndReferences

Dec 10th, 2019
161
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <iostream>
  4.  
  5. void f1(int*);
  6. void f2(int &);
  7. void f3(int);
  8. void show(int);
  9.  
  10. int main() {
  11. setlocale(0, "Russian");
  12. puts("f1 - передача по указателю");
  13. puts("f2 - передача по ссылке");
  14. puts("f3 - передача по адресу");
  15. puts("");
  16.  
  17. int x = 100;//инициализируем переменную
  18. int* ptr_x = &x;//инициализируем указатель
  19. int& link = x;//инициализируем ссылку
  20.  
  21. show(x);
  22. f1(ptr_x);
  23. show(x);
  24. f1(&x);
  25. show(x);
  26.  
  27. f2(x);
  28. show(x);
  29.  
  30. f3(x);
  31. show(x);
  32.  
  33. system("pause");
  34. return 0;
  35. }
  36.  
  37. void f1(int* ptr) {//передача по указателю
  38. static int counter_1 = 1;
  39. *ptr += 10;
  40. printf("-------------------------\n");
  41. printf("call %d f1\n", counter_1);
  42. printf("f1: value is %d\n", *ptr);
  43. printf("f1: pointer is %d\n", ptr);
  44. printf("-------------------------\n");
  45. counter_1++;
  46. }
  47. void f2(int &var) {//передача по ссылке
  48. static int counter_2 = 1;
  49. var += 2;
  50. printf("-------------------------\n");
  51. printf("call %d f2\n", counter_2);
  52. printf("f2: value is %d\n", var);
  53. printf("f2: pointer is %d\n", &var);
  54. printf("-------------------------\n");
  55. counter_2++;
  56. }
  57. void f3(int var) {//передача по значению
  58. static int counter_3 = 1;
  59. var += 1;
  60. printf("-------------------------\n");
  61. printf("call %d f3\n", counter_3);
  62. printf("f3: value is %d\n", var);
  63. printf("f3: pointer is %d\n", &var);
  64. printf("-------------------------\n");
  65. counter_3++;
  66. }
  67. void show(int var) {
  68. printf("var is %d\n", var);
  69. }
RAW Paste Data