Nie do końca rozumiem pierwsze pytanie, ale jeśli chodzi o pętle, a zmienne to posłużmy się pętlą for bo jest najprostsza i deklaracja jest nad ciałem pętli.
Przykladowo:
for( int i = 0; i < 10; i++ )
{
}
Na pierwszym miejcu mamy licznik. Jeśli zadeklarowałeś ten licznik dopiero w tej pętli, mam na myśli nawiasy, to będzie on zmienną lokalną i nie możesz jej nigdzie indziej niż w tej pętli odczytać lub zmienić. Jeśli to zechcesz zrobić kompilator wywali ci błąd.
Na drugim mamy warunek i<10 sprawi, że pętla wykona się 10 razy.
Na trzecim mamy instrukcję "co zrobić z licznikiem". Tutaj mamy zwykłą iterację ++ czyli zwiększ wartość o 1;
Jeśli natomiast licznik masz zadeklarowany o tak:
int i = 0;
for( i; i < 10; i++ )
{
}
To poinformowałeś pętlę, że licznikiem jest zmienna i. Jako, że jest globalna (w zasadzie to tylko dla int main(), ale jeszcze przed tobą długa droga ) to możesz sobie ją dowolnie zmieniać i wywoływać w reszcie kodu. Może on zostać licznikiem dla drugiej pętli.
Tam w tym pierwszym argumencie dla pętli for możesz sobie zmienić wartość tego licznika "globalnego" np ustawić i=0;
Pamiętaj, że:
Jeśli deklarujesz licznik w pętli np. int i=0 to jest lokalny dla tej pętli i druga pętla może mieć tak samo nazwane int i=0;
Jeśli deklarujesz w ciele int main() to będzie to "globalny" licznik;
Uważaj z tym globalnym bo jeśli go nie zresetujesz np do 0, to inne pętle korzystające z niego będą źle liczyć ile mają się razy wykonać, więc jeśli nie musisz to go nie używaj;
A co do tablic:
Jeśli mamy lokalnie zadeklarowane to tablica wewnątrz pętli może sobie korzystać z tego licznika bez żadnego problemu.
for( int i = 0; i < 10; i++ )
{
cout << tablica[ i ] << endl;
}
Tutaj 10 razy wyświetli się zawartość tablicy z kolejnej "szufladki" po kolei [0],[1] itd...
cout << "To tyle z mojej strony" << endl;
Drobny edit: teraz widzę, że czasem zamiast kropek używam " ; ", ale to wchodzi w krew :D