Arrays are really based on two types, the type of the elements of the array, and the type of the index, and of course the range of that index which says how big the array is.
An array of 7 characters is not the same type as an array of 11 characters. In C a pointer to character is also usable as a pointer to an array of any number of characters.
So any particular array type has these three determining factors.
A quick way to declare an array in Ada is;
input_Line:array (0..80) of character:=(others=>' ');
The index will be of type Integer by default and its range is not constrained so if its out of range we won't find out until we try to use it. Note the ' ' single quotes meaning a space character constant. " " would be a string composed of a single space and therefore not correct. (Thanks to Björn for pointing this out to me.)
Below by declaring a buffer index type with a restricted range problems will be detected sooner. But perhaps we want to have values outside the range so that adding 1 to the last valid index position does not throw an exception. Values just outside the range of an array index are known as "bounding values".
type tBuffer_Index is range 1 .. 80;
input_Line : array (tBuffer_Index) of Character:=(others=>' ');
Both the above cannot be passed to a function or procedure as the array type has not been declared, they are anonymous arrays.
Below we add an extra step to give the array type a name so that arrays of this type can be passed to functions and procedures;
type tBuffer_Index is range 1 .. 80;
type tBuffer is array (tBuffer_Index) of Character:=(others=>' ');
Input_Line : tBuffer:=(others=>' ');
We don't have to fix the size of the array with the type declaration;
subtype tBuffer_Index is Integer;
type tBuffer is array (tBuffer_Index range <>) of Character:=(others=>' ');
Input_Line : tBuffer(1..80):=(others=>' ');
Here the buffer size was postponed until the declaration of the array its self.