Equivalències entre taules i punters. Ja sabeu que quan fem int t[10] estem declarant una taula de 10 elements, on cadascun d'ells és un enter. t[0] és int t[1] és int ..... t[9] és int ¿ I qué passa amb t ? ¿t és també un int? ¡¡ NOOOOOOOOOOOOOOOOOO !! t és un punter al primer element de la taula. Llavors t és de tipus int * (punter a enter). ¿I tot això qué vol dir? Doncs que ens trobem les següents equivalències : si fem: int t[10], int *p; i després fem p = t ara p apunta al mateix lloc on apunta t. ¿I on apuntava t ? Mireu la línia nº 4 del text. és a dir, p apunta al primer lloc de la taula . Ara fixeu-vos bé en el que vaig a dir (bueno, a escriure): SI P ÉS UN PUNTER AL PRIMER LLOC DE LA TAULA, P ÉS UNA POSICIÓ DE MEMÓRIA. ¿ EN EL PRIMER LLOC DE LA TAULA QUE HI HA ? t[0] ¿ NO ? ¿ I QUINA ÉS LA POSICIÓ DE MEMÒRIA DE t[0] ? &t[0] ¿NO? DONCS SI ESTEU D'ACORD AMB TOT EL QUE HE DIT, ESTAREU D'ACORD EN QUE p = &t[0] per tant, les posicions de memòria d'un vector són posició 0 ----- &t[0] ------------ p posició 1 ----- &t[1] ------------ p + 1 posició 2 ----- &t[2] ------------ p + 2 i així fins al final , en general: posició i -------------- &t[i] ---------------- p + i Ara una altra cosa. ¿No he dit que si p és un punter que apunta a una posició de memòria, *p és el contingut d'aquesta posició? Per tant, si p = &t[0], això implicaria que el contingut de la posició apuntada per p és el contingut de la posició 0, és a dir *p = t[0]