Lección 19: Aritmética de punteros y arreglos
Puedes hacer aritmética con punteros — pero una aritmética inteligente: p + 1 no avanza un byte, avanza un elemento entero, es decir, sizeof(type) bytes. Aquí se revela el gran secreto de los arreglos: el nombre de un arreglo 'decae' a la dirección de su primer elemento — arr es exactamente &arr[0].
Un arreglo es una fila de casillas contiguas en una calle. El nombre del arreglo es la dirección de la primera casilla, y p + 1 significa 'salta a la siguiente casilla' — sin importar cuántos centímetros de ancho tenga cada casilla, el salto siempre es exactamente una casilla entera.
- aritmética de punteros
- Sumar y restar sobre punteros. p + 1 avanza al siguiente elemento, no al siguiente byte.
- paso de elemento
- p + 1 suma sizeof(type) bytes a la dirección — para int (4 bytes): de 1000 a 1004.
- decaimiento de arreglo
- En la mayoría de las expresiones, el nombre de un arreglo se convierte en la dirección de su primer elemento: arr == &arr[0].
- la identidad arr[i] == *(arr + i)
- Indexar es una abreviatura de la aritmética: salta i elementos desde el inicio y accede al valor.
- recorrido con puntero
- Un bucle que avanza un puntero a través del arreglo: while (p < arr + n) { ...; p++; }.