An examination is made of the different ways in which APL and ALGOL 68 refer to cross-sections or other subsets of an array. It is noted that APL allows a variety of reference operations but no reference variables; on the other hand, ALGOL 68 has reference variables and parameters, but only one array operation. Two kinds of array reference are distinguished - the linear and the nonlinear - and a proposal is made for representing a linear reference by a simple form of descriptor, suitable for processing in hardware. The reference operations are then divided into those which give linear results and those which give non-linear. By retaining only the linear ones, it is possible to combine the main advantages of the APL and ALGOL 68 operations into a single system. A discussion is given of some of the issues involved, including those of dynamic types and bounds.