fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. //Пример раз.
  8. int a = 10;
  9. int *p = &a;
  10. int **dp = &p;
  11.  
  12. cout << "Указатель *p = " << *p << endl;
  13. cout << "Он указывает на адрес p = " << p << endl;
  14. cout << "Адрес самого указателя &p = " << &p << endl;
  15. cout << endl;
  16. cout << "Двойной указатель **dp = " << **dp << endl;
  17. cout << "Он указывает на переменную 'a' с адресом *dp = " << *dp << endl;
  18. cout << "И на поинтер p с адресом dp = " << dp << endl;
  19. cout << "Адрес самого двойного указателя dp = " << &dp << endl;
  20. cout << endl;
  21.  
  22. //Пример два.
  23. int A[2][2];
  24. A[0][0] = 20;
  25.  
  26. cout << "У нас есть двумерный массив A c адресом &A = " << &A << endl;
  27. cout << "В этому адресу находится указтель на адрес A = " << A << endl;
  28. cout << "Значение этого указателя *A = " << A << endl;
  29. cout << "Первый элемент массива равен **A = " << **A << endl;
  30. cout << "Вопрос: при разворачивании указателя с адресом " << A << " на адрес " << A << " мы естесвенно получаем значение\n" \
  31. "самого А, т.е. " << *A << ", однако при двойном разворачивании, \n" \
  32. "т.е. получении значения все по тому же адресу мы получаем значение " << **A <<endl;
  33. cout << endl;
  34.  
  35. //Омский код.
  36. int s = 30;
  37. int *j = &s;
  38. int **i = &j;
  39. i = (int**) &i;
  40.  
  41. cout << "&i = " << (int)&i <<endl;
  42. cout << "i = " << (int)i <<endl;
  43. cout << "*i = " << (int)*i <<endl;
  44. cout << "**i = " << (int)**i <<endl;
  45. cout << "***i = " << (int)***i <<endl;
  46. }
Compilation error #stdin compilation error #stdout 0.01s 2684KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:45: error: invalid type argument of ‘unary *’
stdout
Standard output is empty