ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²Π΅ΠΊΡΠΎΡ.
3.5.1. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²
ΠΠ°ΡΡΠΈΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΡΠ°Π²Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.3). ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡΠΌΡ a[d], Π³Π΄Π΅ Π° β ΠΈΠΌΡ; d β ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. Π Π°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π·Π°Π΄Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΡΡΠΎ ΡΠ°ΡΡΡ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.4.4).
unsigned cnt = 42; // Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
constexpr unsigned sz = 42; // ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
// constexpr ΡΠΌ. p. 2.4.4
int arr[10]; // ΠΌΠ°ΡΡΠΈΠ² Π΄Π΅ΡΡΡΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π»
int *parr[sz]; // ΠΌΠ°ΡΡΠΈΠ² 42 ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° int
string bad[cnt]; // ΠΎΡΠΈΠ±ΠΊΠ°: cnt Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
string strs[get_size()]; // ok, Π΅ΡΠ»ΠΈ get_size - constexpr,
// Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ - ΠΎΡΠΈΠ±ΠΊΠ°
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (ΡΠ°Π·Π΄Π΅Π» 2.2.1).
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ² Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ auto Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠ° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ². ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π²Π΅ΠΊΡΠΎΡΡ, ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠ»ΠΎΠΊ.
Π―Π²Π½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²Π°ΠΠ°ΡΡΠΈΠ² Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΡΠ½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.3.1) ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡΡΠΈΡΡ. ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π΅Π΅ ΠΈΠ· ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π°, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠ΅Π²ΡΡΠ°ΡΡ Π΅Π΅.
ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.3.1):
const unsigned sz = 3;
int ia1[sz] = {0, 1, 2}; // ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΡΡΠ΅Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» ΡΠΎ
// Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ 0, 1, 2
int a2[] = {0, 1, 2}; // ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 3 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
int a3[5] = {0, 1, 2}; // ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ a3[] = {0, 1, 2, 0, 0}
string a4[3] = {"hi", "bye"}; // ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ a4[] = {"hi", "bye", ""}
int a5[2] = {0, 1, 2}; // ΠΎΡΠΈΠ±ΠΊΠ°: ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ²Π£ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ: ΡΡΡΠΎΠΊΠΎΠ²ΡΠΌ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠΌ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.1.3). ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΡΠΎΡΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. ΠΡΠΎΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² Π½Π°ΡΡΠ΄Ρ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π»ΠΈΡΠ΅ΡΠ°Π»Π°.
char a1[] = {'C', '+', '+'}; // ΡΠΏΠΈΡΠΎΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π΅Π·
// Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°
char Π°2[] = {'C', '+', '+', '\0'}; // ΡΠΏΠΈΡΠΎΡΠ½Π°Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΡΠ²Π½ΡΠΌ
// Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ
char a3[] = "Π‘++"; // Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ
// Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
const char a4[6] = "Daniel"; // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Ρ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ
// ΡΠΈΠΌΠ²ΠΎΠ»Π°!
ΠΠ°ΡΡΠΈΠ² a1 ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ 3; ΠΌΠ°ΡΡΠΈΠ²Ρ Π°2 ΠΈ a3 β ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ 4. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° a4 ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎ. Π₯ΠΎΡΡ Π»ΠΈΡΠ΅ΡΠ°Π» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡΡ ΡΠ²Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΠ°ΡΡΠΈΠ² a4 Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΡΠ΅ΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Ρ.Π΅. ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π»ΠΈΡΠ΅ΡΠ°Π»Π° ΠΈ ΠΎΠ΄ΠΈΠ½ Π΄Π»Ρ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°.
ΠΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π½ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π½ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ΠΠ΅Π»ΡΠ·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ°ΠΊ ΠΊΠΎΠΏΠΈΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°, Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π΄ΡΡΠ³ΠΎΠΌΡ.
int a[] = {0, 1, 2}; // ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· ΡΡΠ΅Ρ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π»
int a2[] = a; // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Π»ΡΠ·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΡΡΠΈΠ²
// Π΄ΡΡΠ³ΠΈΠΌ
Π°2 = a; // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠ°ΡΡΠΈΠ² Π΄ΡΡΠ³ΠΎΠΌΡ
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (compiler extension). ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ .
ΠΠΎΠ½ΡΡΠΈΠ΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΠ°ΠΊ ΠΈ Π²Π΅ΠΊΡΠΎΡΡ, ΠΌΠ°ΡΡΠΈΠ²Ρ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠΈΠΏΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΡΡΠΈΠ² β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ. ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ°ΡΡΠΈΠ² Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅ΠΉ.
int *ptrs[10]; // ptrs ΠΌΠ°ΡΡΠΈΠ² Π΄Π΅ΡΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° int
int &refs[10] = /* ? */; // ΠΎΡΠΈΠ±ΠΊΠ°: ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠ»ΠΎΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½
int (*Parray)[10] = &arr; // Parray ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π΄Π΅ΡΡΡΠΈ int
int (&arrRef)[10] = arr; // arrRef ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π΄Π΅ΡΡΡΠΈ ints
ΠΠ±ΡΡΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΠΈΠΏΠ° ΡΠΈΡΠ°ΡΡ ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ. Π§ΠΈΡΠ°Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ptrs ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.3.3): ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 10 ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ptrs Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠΈΠΏ int.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Parray ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΡΠΈΡΠ°ΡΡ ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»Π΅Π³ΡΠ΅ ΡΠΈΡΠ°ΡΡ ΠΈΠ·Π½ΡΡΡΠΈ Π½Π°ΡΡΠΆΡ, Π° Π½Π΅ ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ. Π’Π°ΠΊ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΡΠΈΠΏ Parray. ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΡΡΠ³Π»ΡΡ ΡΠΊΠΎΠ±ΠΎΠΊ Π²ΠΎΠΊΡΡΠ³ ΡΠ°ΡΡΠΈ *Parray, ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅ΠΉ, ΡΡΠΎ Parray β ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΠ»ΡΠ΄Ρ Π½Π°ΠΏΡΠ°Π²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Parray ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 10. ΠΠ»ΡΠ΄Ρ Π²Π»Π΅Π²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Parray β ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π΄Π΅ΡΡΡΠΈ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π». Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ°ΡΡΡ (&arrRef) ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ arrRef β ΡΡΠΎ ΡΡΡΠ»ΠΊΠ°, Π° ΡΠΈΠΏΠΎΠΌ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½Π° ΡΡΡΠ»Π°Π΅ΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 10, Ρ ΡΠ°Π½ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠ° int.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠΈΠΏΠ°.
int *(&arry)[10]=ptrs; // arry - ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π΄Π΅ΡΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ
Π§ΠΈΡΠ°Ρ ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·Π½ΡΡΡΠΈ Π½Π°ΡΡΠΆΡ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ arry β ΡΡΠΎ ΡΡΡΠ»ΠΊΠ°. ΠΠ»ΡΠ΄Ρ Π½Π°ΠΏΡΠ°Π²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ»Π°Π΅ΡΡΡ arry, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 10. ΠΠ»ΡΠ΄Ρ Π²Π»Π΅Π²ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΈΠΏΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΈΠΏ int. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, arry β ΡΡΠΎ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΌΠ°ΡΡΠΈΠ² Π΄Π΅ΡΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠ°ΡΠ°ΡΡΡΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, Π½Π°ΡΠ°Π² Π΅Π³ΠΎ ΡΡΠ΅Π½ΠΈΠ΅ Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ² Π΅Π³ΠΎ ΠΈΠ·Π½ΡΡΡΠΈ Π½Π°ΡΡΠΆΡ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π° 3.5.1Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3.27. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ txt_size() Π½Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° int. ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ?
unsigned buf_size = 1024;
(a) int ia[buf_size]; (b) int ia[4 * 7 - 14];
(c) int ia[txt_size()]; (d) char st[11] = "fundamental";
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3.28. ΠΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ ?
string sa[10];
int ia[10];
int main() {
string sa2[10];
int ia2[10];
}
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 3.29. ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΠΌΠ΅ΡΡΠΎ Π²Π΅ΠΊΡΠΎΡΠ°.
3.5.2. ΠΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ vector ΠΈ string, Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΈΠΉΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ for ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ([]) (subscript). ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΈΠ½Π΄Π΅ΠΊΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ 0. ΠΠ»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈΠ· Π΄Π΅ΡΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΎΡ 0 Π΄ΠΎ 9, Π° Π½Π΅ ΠΎΡ 1 Π΄ΠΎ 10.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π΅Π΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠΈΠΏ size_t. Π’ΠΈΠΏ size_t β ΡΡΠΎ ΠΌΠ°ΡΠΈΠ½ΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΡΠΉ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΏ, Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π»ΡΠ±ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ. Π’ΠΈΠΏ size_t ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ cstddef, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π‘++ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° stddef.h Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘.
ΠΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠ΅Π½ΠΎΠΊ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 3.3.3, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠ² ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ².
// ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΡΠ΅Π½ΠΎΠΊ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅ ΠΏΠΎ Π΄Π΅ΡΡΡΡ: 0--9,