Array pointer (also called row pointer)
Define int (* P) [N];
() A high priority indicates that p is a pointer pointing to an integer one-dimensional array. The length of this one-dimensional array is N, or the step size of P. That is to say, when p + 1 is executed, P must span the length of N integer data.
To assign a two-dimensional array to a pointer, assign a value as follows:
Int A [3] [4];
INT (* P) [4]; // This statement defines an array pointer pointing to a one-dimensional array containing four elements.
P = A; // assign the first address of the Two-dimensional array to P, that is, a [0] Or & A [0] [0].
P ++; // after the statement is executed, that is, P = p + 1; p spans Row A [0] [] pointing to row A [1] []
Therefore, an array pointer is also called a pointer to a one-dimensional array or a row pointer.
Pointer Array
Define int * P [N];
[] High priority. It is first combined with P to form an array, and then int * indicates that this is an integer pointer array, which has n Array elements of pointer type. The execution of p + 1 here is incorrect, so the value assignment is also incorrect: P = A; Because p is an unknown representation, only P [0], p [1], p [2]... P [n-1], and they are pointer variables that can be used to store variable addresses. But it can be like this * P = A; here * P represents the value of the first element of the pointer array and the value of the first address of.
To assign a two-dimensional array to a pointer array:
Int * P [3];
Int A [3] [4];
For (I = 0; I <3; I ++)
P [I] = A [I];
Int * P [3] indicates that three pointer variables exist in the memory of a one-dimensional array, namely P [0], p [1], and P [2].
Therefore, assign values respectively.
In this way, the difference between the two is suddenly clear. The array pointer is just a pointer variable. It seems that the C language is specifically used to point to a two-dimensional array, which occupies the storage space of a pointer in the memory. A pointer array contains multiple pointer variables in memory and occupies the storage space of multiple pointers.
It also needs to be noted that when it is used to point to a two-dimensional array, its reference is the same as the array name reference.
For example, to represent an element in column J of row I in the array:
* (P [I] + J), * (p + I) + J), (* (p + I )) [J], p [I] [J]
Priority: ()> []> *