8.5 Instrukcja grupująca

Instrukcje grupujące (ang. compound statement, grouping statement) stosuje się, gdy składnia języka wymaga wystąpienia w pewnym miejscu programu dokładnie jednej instrukcji, a tymczasem czynności, które mają być wykonane przez program za pomocą jednej instrukcji zapisane być nie mogą (lub prowadziłoby to do nieczytelnych konstrukcji). Istnieje zatem w języku możliwość potraktowania wielu instrukcji jako jednej instrukcji złożonej (grupującej). Ma ona postać ujętej w nawiasy klamrowe sekwencji instrukcji, z których każda może być instrukcją pustą (sam średnik), niepustą pojedynczą (a więc zakończoną średnikiem) lub również instrukcją grupującą (ujętą w nawiasy klamrowe). Po nawiasie klamrowym kończącym instrukcję grupującą średnika nie stawiamy. Przykładem instrukcji grupującej jest definicja funkcji.

Pamiętać trzeba, o czym już mówiliśmy, że fragment programu ujęty w nawiasy klamrowe tworzy blok. Zmienne zadeklarowane wewnątrz takiego bloku tworzonego przez instrukcję grupującą są lokalne dla tego bloku: po wyjściu sterowania z takiej instrukcji zmienne zadeklarowane wewnątrz nie są już znane (i w ogóle nie istnieją; są ze stosu usuwane). Tak więc

       {
           int i = 5;
           {
               int k = fun(i);
               i += k;
           }
           cout << "i=" << i << endl;
       }
jest jedną instrukcją grupującą, złożoną z trzech instrukcji, z których jedna jest również instrukcją grupującą. Po wykonaniu tej instrukcji zmienne ik nie istnieją i, w szczególności, zmienne o tej nazwie mogą być zadeklarowane w dalszej części ciała funkcji, w której instrukcja ta wystąpiła.

T.R. Werner, 21 lutego 2016; 20:17