#include int main(int argc, char** argv) { double array[4] = {1.2, 2.4, 3.6, 4.8}; // declare a reference to an array double (&ary_ref)[4] = array; // use the reference -- 6.0 std::cout << ary_ref[1] + ary_ref[2] << std::endl; int twod[3][2] = { {10, 11}, {12, 13}, {14, 15} }; // declare a reference to a 2-d array int (&td_ref)[3][2] = twod; // use the reference -- 25 std::cout << td_ref[2][0] + td_ref [0][1] << std::endl; double* dp = &array[2]; // declare a reference to a pointer double*& refp = dp; // use the reference to pointer std::cout << *refp << std::endl; // declare a pointer to an array int (*parray)[2] = twod; // declare a reference to a pointer to an array int (*&prarray)[2] = parray; // use the reference to pointer to array -- 15 std::cout << prarray[2][1] << std::endl; return 0; }