fork download
  1. #include <iostream>
  2. #include <typeinfo>
  3. int main()
  4. {
  5. int a[3][4] = { {1, 2, 3, 4} , {5, 6, 7, 8}, {9, 10, 11, 12}};
  6. int n = sizeof(a)/sizeof(a[0]);
  7. int m = sizeof(a[0])/sizeof(a[0][0]);
  8. int *end = a[0] + n * m - 1;
  9.  
  10. std::cout << typeid(a).name() << "\n";
  11. std::cout << typeid(a[0]).name() << "\n";
  12. std::cout << typeid(a[0][0]).name() << "\n";
  13. std::cout << typeid(end).name() << "\n";
  14.  
  15. std::cout << "sizeof(a)/sizeof(a[0])\t" << sizeof(a) << "/" << sizeof(a[0]) << "\n";
  16. std::cout << "sizeof(a[0])/sizeof(a[0][0])\t" << sizeof(a[0]) << "/" << sizeof(a[0][0]) << "\n";
  17. std::cout << "sizeof(int)\t" << sizeof(int) << "\n";
  18. std::cout << "sizeof(end)\t" << sizeof(end) << "\n\n";
  19.  
  20. int** b = new int*[3];
  21. b[0] = new int[4];
  22.  
  23. std::cout << typeid(b).name() << "\n";
  24. std::cout << typeid(b[0]).name() << "\n";
  25. std::cout << typeid(b[0][0]).name() << "\n";
  26. std::cout << typeid(b).name() << "\n";
  27.  
  28. std::cout << "sizeof(b)/sizeof(b[0])\t" << sizeof(b) << "/" << sizeof(b[0]) << "\n";
  29. std::cout << "sizeof(b[0])/sizeof(b[0][0])\t" << sizeof(b[0]) << "/" << sizeof(b[0][0]) << "\n";
  30. std::cout << "sizeof(int)\t" << sizeof(int) << "\n";
  31. std::cout << "sizeof(b)\t" << sizeof(b) << std::endl;
  32.  
  33. delete [] b[0];
  34. delete [] b;
  35. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
A3_A4_i
A4_i
i
Pi
sizeof(a)/sizeof(a[0])	48/16
sizeof(a[0])/sizeof(a[0][0])	16/4
sizeof(int)	4
sizeof(end)	8

PPi
Pi
i
PPi
sizeof(b)/sizeof(b[0])	8/8
sizeof(b[0])/sizeof(b[0][0])	8/4
sizeof(int)	4
sizeof(b)	8