Primero: lo de usar <TAM> es para evitar "números mágicos" (magic numbers) que son números que aparecen por el código literalmente y que es difícil ver a qué están haciendo referencia. Siempre es mejor guardar esos valores en constantes y así en el caso de querer modificar el tamaño/alcance del programa, sólo tendrás que modificar el valor de la constante.
Te muestro un código muy sencillo donde guardamos un array y luego lo mostramos. Imagina el caso que queremos que el programa en vez de almacenar 10 valores, ahora queremos que almacene un máximo de 20... En el primer código tendríamos que cambiar cada 10 por 20; mientras que en el segundo bastaría con cambiar el valor de <TAM>
// version 1 usando numero magicos
int main(){
int my_array[10];
for(size_t i = 0; i < 10; i++){
cout << "Elemento " << i+1 << ": ";
cin >> my_array[i];
}
for(size_t i = 0; i < 10; i++)
cout << my_array[i] << endl;
}
// version 2 usando constantes
const int TAM = 10;
int main(){
int my_array[TAM];
for(size_t i = 0; i < TAM; i++){
cout << "Elemento " << i+1 << ": ";
cin >> my_array[i];
}
for(size_t i = 0; i < TAM; i++)
cout << my_array[i] << endl;
}
Otra buena utilidad es cuando todavía no sabemos usar memoria dinámica, es decir; que si queremos que el usuario introduzca n datos pero no sabemos cuánto va a valer n hasta el tiempo de ejecución, podemos crear un máximo para declarar el array y luego controlar la cantidad de valores que va a usar el usuario con otra variable. Se desperdicia memoria pero es la forma de hacerlo con memoria estática. Te dejo aquí un ejemplo:
const int TAM_MAX = 100;
int main(){
int my_array[TAM_MAX];
int tam_util;
cout << "Numero de datos a almacenar: ";
cin >> tam_util;
for(size_t i = 0; i < tam_util; i++){ // no usamos TAM_MAX, sino tam_util
// el resto del bloque
}
}
Respecto al tema del aprendizaje, al final lo importante es que vayas practicando todo lo que vas viendo, si te limitas a ver códigos hechos nunca sabrás tratar con los errores que te van a surgir cuando seas tú quien los escriba. Siempre habrá temas más importantes que vas a usar en prácticamente todos los programas que hagas y otras cosas que no usarás casi nunca. Para empezar a programar tampoco necesitas haber memorizado TODO antes. Es suficiente con que sepas qué cosas se pueden hacer y cuando necesites usar algo poco común siempre podrás buscar por internet o en libros cómo se usaba eso que quieres implementar.
Normalmente los tutoriales que van por "capítulos" suelen ir bien estructurados para que la curva de aprendizaje no sea muy grande y te van metiendo conceptos poco a poco. Simplemente seguir aprendiendo e ir probando todo lo que vas viendo. Suerte