# Include <iostream. h>
/* Void main ()
{
Void * P;
Float x = 5;
P = & X;
Cout <p <Endl;
}*/
// P [I * n + J] = A [I] [J], representing a two-dimensional array with a one-dimensional pointer
/* Void main ()
{
Int A [4] [3] = {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12 }};
Int * P;
P = & A [0] [0]; // or P = A [0]
Cout <p [0*3 + 0] <p [0*3 + 1] <p [0*3 + 2] <Endl;
Cout <p [1*3 + 0] <p [1*3 + 1] <p [1*3 + 2] <Endl;
}*/
Void main ()
{
Int A [4] [3] = {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12 }};
INT (* P) [3]; // * P indicates the first pointer address with three elements.
P =;
Cout <p [0] [0] <p [0] [1] <p [0] [2] <Endl;
Cout <p [1] [0] <p [1] [1] <p [1] [2] <Endl;
// General Method
Cout <* (* A) <* (* A + 1) <* (* A + 2) <Endl;
Cout <* (a + 1) + 0) <* (a + 1) + 1) <* (a + 1) + 2) <Endl;
Cout <A [0] [0] <A [0] [1] <A [0] [2] <Endl;
Cout <A [1] [0] <A [1] [1] <A [1] [2] <Endl;
}
// The most typical method is to use pointer arrays. Obviously, pointer arrays are used to store pointer arrays.
Void main ()
{
Int * A [4];
// Int B [3] [4] = {1, 2, 3} {4, 5, 6} {7, 8, 9} {10, 11, 12} another method
// A [0] = B [0]; A [1] = B [1]; A [2] = B [2]; A [3] = B [3];
Int B0 [] = {, 3}, B1 [] = {, 6}, B2 [] = {, 9}, B3 [] =, 12 };
A [0] = b0;
A [1] = b1;
A [2] = B2;
A [3] = B3;
Cout <A [0] [0] <A [0] [1] <A [0] [2] <Endl;
Cout <A [1] [0] <A [1] [1] <A [1] [2] <Endl;
Int ** P;
P =;
Cout <p [0] [0] <p [0] [1] <p [0] [2] <Endl;
}