ΠΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ Π²Π΅ΠΊΡΠΎΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ° Ρ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class X (* ... ~X(); *); X* p = new X [size]; delete[size] p;
8.5.9 ΠΠΈΠ΄ΠΈΠΌΠΎΡΡΡ ΠΠΌΠ΅Π½ Π§Π»Π΅Π½ΠΎΠ²
Π§Π»Π΅Π½Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Ρ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ class, ΡΠ²Π»ΡΡΡΡ Π·Π°ΠΊΡΡΡΡΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ, ΠΈΡ ΠΈΠΌΠ΅Π½Π° ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠ»Π΅Π½Π°ΠΌΠΈ (#8.5.2) ΠΈ Π΄ΡΡΠ·ΡΡΠΌΠΈ (ΡΠΌ. #8.5.10), Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠΎΡΡ ΠΏΠΎΡΠ»Π΅ ΠΌΠ΅ΡΠΊΠΈ Β«public:Β». Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌΠΈ. ΠΡΠΊΡΡΡΡΠΉ ΡΠ»Π΅Π½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π»ΡΠ±ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. Struct ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ, Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠΈΠ΅, ΡΠΌ. #8.5.12.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ struct ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΡΠΎΠΈΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ public, ΡΠΎ ΠΎΠ±ΡΠΈΠ΅ ΡΠ»Π΅Π½Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠ²Π»ΡΡΡΡ ΠΎΠ±ΡΠΈΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΠ°; Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ½ΠΈ ΡΠ»ΡΡΡΡΡ Π·Π°ΠΊΡΡΡΡΠΌΠΈ. ΠΡΠΊΡΡΡΡΠΉ ΡΠ»Π΅Π½ mem Π·Π°ΠΊΡΡΡΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° base ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠΈΠΈΡΠ°Π½ΠΈΡ Π²ΠΈΠ΄Π°
typedef-ΠΈΠΌΡ :: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ;
Π² ΠΊΠΎΡΠΎΡΠΎΠΌ typedef-ΠΈΠΌΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ, Π° ΠΈΠ΄Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΅ΡΡΡ ΠΈΠΌΡ ΡΠ»Π΅Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π’Π°ΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΠΎΡΡΡ Π² ΠΎΡΠΊΡΡΡΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π Π°ΡΡΠΌΠΎΡΠΈΠΌ
class base (* int a; public: int b, c; int bf(); *);
class derived : base (* int d; public: base::c; int e; int df(); *);
int ef(derived amp;);
ΠΠ½Π΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ef ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΠ΅Π½Π° c, e ΠΈ df. Π―Π²Π»ΡΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ derived, ΡΡΠ½ΠΊΡΠΈΡ df ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° b, c, bf, d, e ΠΈ df, Π½ΠΎ Π½Π΅ a. Π―Π²Π»ΡΡΡΡ ΡΠ»Π½ΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ base, ΡΡΠ½ΠΊΡΠΈΡ bf ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π½Ρ a, b, c ΠΈ bf.
8.5.10 ΠΡΡΠ·ΡΡ
ΠΡΡΠ³ ΠΊΠ»Π°ΡΡΠ° β ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅-ΡΠ»Π΅Π½, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° Π·Π°ΠΊΡΡΡΡΡ ΡΠ»Π΅Π½ΠΎΠ². ΠΡΡΠ³ Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΎΠ±Π»Π°ΡΡΠΈ Π²Π΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π²ΡΠ±ΠΎΡΠ° ΡΠ»Π΅Π½Π° (Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°). Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΈ Π΄ΡΡΠ·ΡΡΠΌΠΈ:
class private (* int a; friend void friend_set(private*, int); public: void member_set(int); *);
void friend_set (private* p, int i) (* p-Β»a = i; *)
void private::member_set (int i) (* a = i; *)
private obj; friend_set ( amp;obj,10); obj.member_set (10);
ΠΡΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ friend ΠΎΡΠ½ΠΎΡΡΠΈΡΡ ΠΊ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠΎ Π΄ΡΡΠ³ΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΡ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π§Π»Π΅Π½ ΠΊΠ»Π°ΡΡΠ° cl1 ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° cl2. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
class cl2 (* friend char* cl1::foo(int); // ... *);
ΠΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° cl1 ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ ΠΊΠ»Π°ΡΠ° cl2 Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ
class cl2 (* friend class cl1 ; // ... *);
Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ»Π΅Π½, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ (#10) Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°, ΡΠ»ΡΠ΅ΡΡΡ inline.
8.5.11 Π€ΡΠ½ΠΊΡΠΈΡ ΠΠΏΠ΅ΡΠ°ΡΠΈΡ
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Ρ Ρ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ°.
ΠΈΠΌΡ_ΡΡΠ½ΠΊΡΠΈΠΈ_ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: operator ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ: ΠΎΠ΄Π½Π° ΠΈΠ· new delete + β * / % ^ amp; ! ~ ! = Β« Β» += -= *= /= %= ^= amp;= != Β«β βΒ» Β«β= βΒ»= == != Β«= Β»= amp; amp; !! ++ β () []
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ β ΡΡΠΎ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ²Π°Π½ΠΈΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ operator new ΠΈ operator delete; ΡΠΌ. #7.2) Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠ»Π΅Π½ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ #7.16. 8.5.12 Π‘ΡΡΡΠΊΡΡΡΡ
Π‘ΡΡΡΠΊΡΡΡΠ° Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ, Π²ΡΠ΅ ΡΠ»Π΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠΈΠ΅. ΠΡΠΎ Π·Π½ΡΠΈΡ, ΡΡΠΎ
struct s (* ... *); ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ
class s (* public: ... *);
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π½Ρ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΡΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ). ΠΠ°Π·ΠΎΠ²ΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ struct ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ
struct s : d (* ... *);
ΡΠΊΠ²ΠΈΠ²ΠΎΠ»Π΅Π½ΡΠ½ΠΎ
class s : public b (* public: ... *);
8.5.13 ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ, Π²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ»Π΅Π½Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ 0, ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ². Π ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±Π΅ΠΊΡΠΎΠ² ΡΠ»Π΅Π½ΠΎΠ². ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»Π΅Π½Ρ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΡ). ΠΠ· ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΠΈ ΠΊΠ»Π°ΡΡ. ΠΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΈΠ»ΠΈ Π΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»Π΅Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°
union (* ΡΠΏΠΈΡΠΎΠΊ_ΡΠ»Π΅Π½ΠΎΠ² *);
Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π±Π΅Π·ΡΠΌΡΠ½Π½ΡΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ; ΠΎΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΌΠ΅Π½Π° ΡΠ»Π΅Π½ΠΎΠ² Π±Π΅Π·ΡΠΌΡΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄ΠΎΠ»Π½Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΈΠΌΠ΅Π½ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ; Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ, Π±Π΅Π· ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅Π½Π°ΠΌ (#8.5). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
union (* int a; char* p; *); a = 1; // ... p = Β«asdfΒ»;
ΠΠ΄Π΅ΡΡ a ΠΈ p ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (Π½Π΅-ΡΠ»Π½Ρ), Π½ΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π°Π΄ΡΠ΅Ρ.
8.5.14 ΠΠΎΠ»Ρ ΠΠΈΡ
ΠΠΏΠΈΡΠ°ΡΠ΅Π»Ρ_ΡΠ»Π΅Π½Π° Π²ΠΈΠ΄Π°
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ opt : ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π΅; Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° ΠΎΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»Ρ Π΄Π²Π΅ΡΠΎΡΠΈΠ΅ΠΌ. ΠΠΎΠ»Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΡΠ΅Π»ΡΠ΅; ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²ΠΎΠΉ ΡΠ»ΠΎΠ². ΠΠΎΠ»Π΅ , Π½Π΅ Π²Π»Π΅Π·Π°ΡΡΠ΅Π΅ Π² ΠΎΡΡΠ°Π²ΡΠ΅Π΅ΡΡ Π² ΡΠ΅Π»ΠΎΠΌ ΠΌΠ΅ΡΡΠΎ, ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ»ΠΎΠ²ΠΎ. ΠΠΎΠ»Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΈΡΠ΅ ΡΠ»ΠΎΠ²Π°. ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ ΠΎΠ½ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡΡΡ ΡΠΏΡΠ°Π²Π° Π½Π°Π»Π΅Π²ΠΎ, Π° Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ, ΡΠΌ. #2.6.
ΠΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΠΏΡΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅ ΠΏΡΠ΅Π΄ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ (ΡΠΎΡΠΌΠ°ΡΠΎΠ²). Π ΠΎΡΠΎΠ±ΡΡ ΡΠ»ΡΠ°ΡΡ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»Ρ Π΄Π»ΠΈΠ½Ρ 0 Π·Π°Π΄Π°ΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΏΠΎ Π³ΡΠ°Π½ΠΈΡΠ΅ ΡΠ»ΠΎΠ²Π°. ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π»ΡΠ±ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΡΠΎΠΌΠ΅ ΡΠ΅Π»ΡΡ . ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΄Π°ΠΆΠ΅ ΡΠ΅Π»ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ unsigned. ΠΠΎ ΡΡΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΠΏΠΎΠ»Ρ ΠΊΠ°ΠΊ unsigned. Π ΠΏΠΎΠ»ΡΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° amp;, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΏΠΎΠ»Ρ.
ΠΠΎΠ»Ρ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
8.5.15 ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΠ»Π°ΡΡΡ
ΠΠ»Π°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ Π²Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΠΎ, ΠΎΠ½Π°ΠΊΠΎ, Π»ΠΈΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠ΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
int x;
class enclose (* // ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠΈΠΉ int x; class inner (* // Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ int y; void f(int); *); int g(inner*); *);
inner a; void inner::f(int i) (* x = i; *) // ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ::x int enclose::g(inner* p) (* return p-Β»y; *) // ΠΎΡΠΈΠ±ΠΊΠ°
8.6 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°Π²Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°.
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ: = Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ = (* ΡΠΏΠΈΡΠΎΠΊ_ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² , opt *) ( ΡΠΏΠΈΡΠΎΠΊ_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ) ΡΠΏΠΈΡΠΎΠΊ_ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²: Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΎΠΊ_ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² , ΡΠΏΠΈΡΠΎΠΊ_ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² (* ΡΠΏΠΈΡΠΎΠΊ_ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² *)
ΠΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ°Π½Ρ Π² #12, ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²ΠΎΠ΄ΡΡΡΡ ΠΊ Π°Π΄ΡΠ΅ΡΠ°ΠΌ ΡΠ°Π½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΠ½ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π»ΡΠ±ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΡΠ½Π΅Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 0. ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΡΠ³ΠΈΡΡΡΠΎΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«ΠΏΡΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎΒ»*.
β * Π Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ β Β«garbageΒ», ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅ Π·Π°ΡΠ΅ΡΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ [ΠΏΠ°ΠΌΡΡΠΈ], Ρ.Π΅. Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ΅Π»Π°Ρ, ΡΠΎ 0, Π΅ΡΠ»ΠΈ char, ΡΠΎ '\0', Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π’, ΡΠΎ (Π’*) NULL. (ΠΏΡΠΈΠΌ. ΠΏΠ΅ΡΠ΅Π².)
ΠΠΎΠ³Π΄Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΠΊΠ°Π»ΡΡΡ (ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°), ΠΎΠ½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠ°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ; Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·Π²Π°Π½ΠΈΡ, ΡΡΠΎ ΠΈ ΠΏΡΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠΈ.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ () Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ, ΡΠΎ X a(); ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° X, Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ΅ΠΉ X.
8.6.1 Π‘ΠΏΠΈΡΠΎΠΊ ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²
ΠΠΎΠ³Π΄Π° ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ (ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ²), ΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΡΠΌΠΈ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ»Π΅Π½ΠΎΠ² ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ ΡΠ»Π΅Π½ΠΎΠ². ΠΡΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠ΄Π΅ΡΡ ΠΈΡ ΡΠΎΡΡΠ°Π²Π½ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅ΠΊΡΡ, ΡΠΎ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΡΠ»Π΅Π½Π°ΠΌ ΡΠΎΡΡΠ°Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ»Π΅Π½ΠΎΠ² Π² ΡΠΎΡΡΠ°Π²Π½ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΡΠΎ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅ΠΊΡ Π΄ΠΎΠΏΠΎΠ½ΡΠ΅ΡΡΡ Π½ΡΠ»ΡΠΌΠΈ.
Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠ»ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π»Π΅Π²ΠΎΠΉ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠΎ ΡΠ»Π΅Π΄ΡΡΠΈΠΉ Π·Π° Π½Π΅ΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ»Π΅Π½Ρ ΡΠΎΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°; Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ, ΡΠ΅ΠΌ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅Π½ΠΎΠ², ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΌ. ΠΡΠ»ΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΡΠΎΡ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π»Π΅Π²ΠΎΠΉ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ, ΡΠΎ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π±ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅ΡΠ°ΠΌ ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°; Π²ΡΠ΅ ΠΎΡΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΠ°ΡΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,
int x[] = (* 1, 3, 5 *);
ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ x ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΈΠΌΡΡΠΈΠΉ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π΅ Π±ΡΠ» ΡΠΊΠ°Π·Π°Π½ ΠΈ Π΄Π°Π½ΠΎ ΡΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡΠ°.
float y[4][3] = (* (* 1, 3, 5 *), (* 2, 4, 6 *), (* 3, 5, 7 *) *);
ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ½Π°Π±ΠΆΠ΅Π½Π½ΠΎΠΉ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ΠΈΠ½ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ: 1,3 ΠΈ 5 ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΡΠ΄ ΠΌΠ°ΡΡΠΈΠ²Π° y[0], Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, y[0][0], y[0][1] ΠΈ y[0][2]. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ y[1] ΠΈ y[2]. ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π·Π°ΠΊΠ°Π½ΡΠ²Π°Π΅ΡΡΡ ΡΠ°Π½ΡΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ y[3] ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ 0-ΡΠΌΠΈ. Π ΡΠΎΠ½ΠΎcΡΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
float y[4][3] = (* 1, 3, 5, 2, 4, 6, 3, 5, 7 *);
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ y Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π»Π΅Π²ΠΎΠΉ ΡΠΈΠ³ΡΡΠ½ΠΎΠΉ ΡΠΊΠΎΠ±ΠΊΠΈ, Π½ΠΎ Π½Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π½Π΅Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄Π»Ρ y[0], ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ y[1] ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠΈ Π΄Π»Ρ y[2]. Π’Π°ΠΊ ΠΆΠ΅