Un șir este o secvență de date de același tip, indexate și memorate continuu.
Se folosesc pentru reprezentarea unui număr mare de valori omogene.
O declarație obișnuită de șir alocă memorie începând de la o adresă de bază.
Șiruri Uni-dimensionale
Declararea unui șir de întregi: int a[3];
Elementele șirului: a[0], a[1], a[2]
O declarație de șir uni-dimensional este un tip, urmat de un identificator și paranteze pătrate cu o expresie întreagă constantă.
Valoarea constantei (pozitivă) reprezintă lungimea șirului și specifică numărul de elemente.
Compilatorul rezervă spațiu de memorie corespunzător, pornind de la o adresă de bază. Dimensiunea este calculată ca numărul de elemente înmulțit cu numărul de octeți necesari pentru memorarea unui element.
Dacă un șir este declarat fără lungime și inițializat, lungimea sa este implicit numărul de valori inițiale.
Accesarea unui element: a[i] sau a[expresie], unde i este indexul (între 0 și lungime-1).
Relația dintre vectori și pointeri
Numele unui șir (ex: "a") este o adresă, deci poate fi privit ca un pointer.
Șirurile și pointerii pot fi priviți similar în accesarea memoriei.
La declararea unui șir, compilatorul alocă adresa de bază și spațiu pentru toate elementele.
Șiruri ca argumente pentru funcții
Un parametru formal declarat ca șir este de fapt un pointer. Se trimite adresa de bază, nu elementele copiate.
Se permite folosirea parantezelor pătrate în declararea șirurilor ca parametri.
Exemplu: c
int suma (int a[], int n) /* n dimensiunea sirului */
{
int i, S = 0;
for (i = 0; i < n; ++i)
S += a[i];
return s;
}