--, . R.8.2.1  T D, D * --cv opt D1 "... --cv T". --cv , . , const ci = 10, *pc = &ci, *const cpc = pc; int i *p, *const cp = &i; : ci ; pc ; cpc ; i ; p ; cp . ci, cpc cp . pc , , cp. : i = ci; *cp = ci; pc++; pc = cpc; pc = p; : ci = 1; // ci++; // *pc = 2; // cp = &ci; // cpc++; // p = pc; // , , const, , , const. volatile. $$R.5.17 $$R.8.4. ($$R.8.2.2) ($$R.9.6). R.8.2.2  T D, D & --cv opt D1 "...--cv T". void& . , void f(double& a) { a += 3.14; } // ... double d = 0; f(d); a , , f(d) d 3.14. int v[20]; // ... int& g(int i) { return v[i]; } // ... g(3) = 7; : g() ; g() = 7; 7 v. : struct link { link* next; }; link* first; void h(link*& p) // `p' { p->next = first; first = p; p = 0; } void k() { link* q = new link; h(q); } p link, h(q) q, 0, . $$R.8.4.3. , ($$R.9.6), . ($$R.8.4.3), , extern ($$R.7.1.1), ($$R.9.2) , ($$R.8.2.5), . $$R.3.1. R.8.2.3  T D, D -- :: * --cv opt D1 "... --cv -- T". , class X { public: void f(int); int a; }; int X::* pmi = &X::a; void (X::* pmf)(int) = &X::f; pmi pmf X T X void(int) . : X obj; // ... obj.*pmi = 7; // 7 obj int (obj.*pmf)(7); // - obj // 7 , ($$R.9.4), . $$R.5.5 $$R.5.3. R.8.2.4  T D, D D1 [ - opt ] " ... T". - ($$R.5.19), , 0. . - N, N 0 N-1. : ( void), , , , . " ...", , -, , . , , , , . - , - ($$R.8.4). , ($$R.8.4.1). float fa[17], *afp[17]; float float, static int x3d[3][5][7]; 3x5x7. , x3d , , . : x3d, x3d[i], x3d[i][j], x3d[i][j][k]. , , sizeof & ($$R.8.4.3), . , . ($$R.13.4.5), , E1[E2] *((E1) + (E2)). +, E1 , E2 , E1[E2] E2- E1. , , - . . E - n- ixjx...xk, (n-1)- jx...xk. *, (n-1)- . , int x[3][5]; 3x5 . x, . x[i], *(x+i), x , , x+i x, i , x, .. . , ( ), . , , . , ++ ( ), , , . R.8.2.5  T D, D D1 (-- ) --cv opt "...--cv -- T". --: -- opt ... opt -- , ... --: - -- , - -: - - = - - opt - - opt = -- (...), , , , . void . , void ( , void, void*, ). R.8.3  -: - opt -ctor - -: - - D1 ( -- ) --cv opt $$R.8.2.5 -. . int max( int a, int b, int c) { int m = (a > b) ? a : b; return (m > c) ? m : c; } int -, max(int a, int b, int c) - , { /* ... */ } - -. -ctor , . $$R.9.3.1 $$R.12.6. --cv : -, - -, . $$R.9.3.1. . , , , void print(int a, int) { printf("a = %d\n",a); } R.8.4  . : = - = { - , opt } ( - ) -: - - , - { - , opt } , , , . int f(int); int a = 2; int b = f(a); int c(b); const T*, .. T, T*, . T T const volatile , , int a; const int b = a; int c = b; const int* p0 = &a; const int* p1 = &b; int* p2 = &b; // : const // const int *const p3 = p2; int *const p4 = p1; // : const // const const int* p5 = p1; : , -, const. , . $$R.8.2.6. $$R.12.6.1. $$R.12.8. $$R.3.4 $$R.6.7. , ($$R.3.5), , 0, . . , , . , ( ). , , . , () , X a(); a X, , X. , , int a; struct X { static int a; static int b; }; int X::a = 1; int X::b = a; // X::b = X::a R.8.4.1  ($$R.9), ($$R.12.1), ($$R.11), ($$R.10) ($$R.10.2). , -, , , . . , . , , . , struct S { int a; char* b; int c; } S ss = { 1, "asdf" }; ss.a 1, ss.b - "asdf", ss.c - 0. , , , , ($$R.12.8). . - , , , , , , . , - , , ; , . , 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] . : float y[4][3] = { 1, 3, 5, 2, 4, 6, 3, 5, 7, }; ( ) . y , y[0] , , y[1] y[2]. float y[4][3] = { { 1 }, { 2 }, { 3 }, { 4 } }; y ( ), 0. $$R.12.6.1. , , , , union u { int a; char* b; }; u a = { 1 }; u b = a; u c = 1; // u d = { 0, "asdf" }; // u e = { "asdf" }; // , . , : char cv[4] = { 'a', 's', 'd', 'f', 0 }; // R.8.4.2  (, ) -: . , : char msg[] = "Syntax error on line %s\n"; , '\n' , '\0', sizeof(msg) 25. , , : ('\0'): char cv[4] = "asdf"; // R.8.4.3  , T&, .. " T" ($$R.8.2.2), T , T, , void f() { int i; int& r = i; // `r' `i' r = 1; // `i' 1 int* p = &r; // `p' `i' int& rr = r; // `rr' , `r', // .. `i' }; , . , , . ($$R.5.2.2) ($$R.6.6.3) . ($$R.8.2.5), , ($$R.9.2) , extern, , int& r1; // : extern int& r2; // T T , T ($$R.10), T ($$R.4.6), , . , , const, T , . , , double d = 1.0; double& rd = d; // rd `d' const double& rcd = d; // rcd `d' double& rd2 = 1; // : const double& rcd2 = 1;// rcd2 // `1' volatile T volatile T T, const T. const T const T, T -, T, volatile T. T ( const volatile) T. , , , ($$R.3.5). , B D , D ( , "D B"), . $$R.4.7. R.9  . - ($$R.9.1), .. . -: - - -- ($$R.7.1.6). ( ) . -: - { - opt } -: -- opt - opt -- - - opt --: class struct union - - . - . , -, , - . . , , ( , , . $$R.12.8). , , , , . $$R.13.4. , -- struct; ($$R.10) ($$R.11). , -- union; , ($$R.9.5). R.9.1  . , : struct X { int a; }; struct Y { int a; }; X a1; Y a2; int a3; , : a1 = a2; // : Y X a1 = a3; // : int X ($$R.13) f(), : int f(X); int f(Y); , , S: struct S { int a; }; struct S { int a; }; // , , , , , ($$R.3.2). , , , -- ($$R.7.1.6), : struct stat { // ... }; stat gstt; // `stat' // int stat(struct stat*); // `stat' void f() { struct stat* ps; // struct // stat // ... stat(ps); // stat() // ... } -- --, , , , : struct s { int a; }; void g() { struct s; // `s' s* p; // `s' struct s { char* p; }; // `s' } , , class vector; class matrix { // ... friend vector operator*(matrix&, vector&); }; class vector { // ... friend vector operator*(matrix&, vector&); }; friend ( ) $$R.11.4, operator $$R.13.4. , , , , , friend ($$R.11.4). -- ($$R.7.1.6). , , , , , : struct s { int a; } void g() { struct* s p = new s; // `s' p->a = 1; } . , class A * A; A , , , - class A. "" , . -typedef ($$R.7.1.3) -, . $$R.7.1.3. R.9.2  -: - - opt - : - opt -: - opt -- opt ; - ; opt - ; --: - -- , - -: - opt opt : - -: = 0 - , , , ($$R.7.2), , ($$R.11.4) ($$R.7.1.3, $$R.9.1). , - , , . $$R.11.3. -. - , .. - . , - , ($$R.13). , - ($$R.8.4). , . $$R.12.1. auto, extern register. - . -- -, - -, friend --. - ($$R.10.2). , . , C1 C1, C1. , . : struct tnode { char tword[20]; int count; tnode *left; tnode *right; }; , . : tnode s, *sp; s tnode sp tnode. s->count count , sp; s.left left s; s.right->tword[0] tword s, right. , -, , . , -, ($$R.11.1). , . ($$R.10.2) ($$R.10.1); . $$R.5.4. - ($$R.9.3), , ($$R.12.1). , , . R.9.3 - , ( friend $$R.11.4), - ($$R.5.2.4), : struct tnode { char tword[20]; int count; tnode *left; tnode *right; void set(char*, tnode* l, tnode *r); }; set - : void f(tnode n1, tnode n2) { n1.set("abc",&n2,0); n2.set("def",0,0); } , - . , - ( , $$R.9.4) . - , . - , ::, : void tnode::set(char* w, tnode* l, tnode* r) { count = strlen(w)+1; if (sizeof(tword)<=count) error("tnode string too long"); strcpy(tword,w); left = 1; right = r; } tnode::set , set tnode. tword, count, left right , n1.set("abc",&n2,0) tword n1.tword, n2.set("def",0,0) tword n2.tword. strlen, error strcpy - . ($$R.3.1) ; , , , . $$R.3.3. - . - . - ($$R.9.4) X, X, . R.9.3.1 this ($$R.9.3) - this , . - X this X *const, - const volatile; this const X *const volatile X *const . const volatile, this const volatile X *const, . $$R.18.3.3. : struct s { int a; int f() const; int g() { return a++; } int h() const { return a++; } // }; int s::f() const { return a; } a++ s::h , ( ), s::h(). -, const, .. this const, , *this const. - const (.. -, const) const, const, - const const, : void k(s& x, const s& y) { x.f(); x.g(); y.f(); y.g(); // } y.g() , .. y const, s::g() - - const, ( ) , . , - volatile (.. -, volatile) volatile. - const volatile. const volatile ($$R.12.1) ($$R.12.4). ($$R.12.1) ($$R.12.4) const volatile. R.9.3.2 - inline - ($$R.8.3) , (inline, $$R.7.1.2). - , inline . , . int b; struct x { char* f() { return b; } char* b; }; int b; struct x { char* f(); char* b; }; inline char* x::f() { return b; } // x::f() x::b, b. - , . R.9.8, $$R.9.7. R.9.4  , , static. , , , . . ($$R.3.3). , , . , . . $$R.18.3. - this, . ->. - . - . ($$R.9.8) . , , . mem c1 c1::mem ($$R.5.1), .. . . ->. , , . -> . mem , c1. run_chain, idle , process: class process { static int no_of_process; static process* run_chain; static process* running; static process* idle; // ... public: // ... int state(); static void reshedule(); // ... }; reshedule process : void f() { process::reshedule(); } , - , : void process::reshedule() { /* ... */ }; int process::no_of_process = 1; process* process::running = get_main(); process* process::run_chain = process::running; ($$R.11), , . , process::no_of_process int, &process::reshedule() - void(*)(). R.9.5  , , , . . - ( ), ($$R.10.2). . , ($$R.13.4.3). , . union { - } , ( ). , ; , ($$R.5.2.4). : void f() { union { int a; char* p; }; a = 1; // ... p = "Jennifer"; // ... } a p ( ), , . static. ($$R.11), -. , , , union { int aa; char* p; } obj, *ptr=&obj; aa = 1; // ptr->aa = 1; // aa , .. . , , $$R.8.4.1. R.9.6  -, , opt : - , . . . , - . . , - . , . , . , . . ($$R.3.6.1). , int (.. signed unsigned) . & , , . R.9.7  . . . . , , , . int x; int y; class enclose { public: int x; static int s; class inner { void f(int i) { x = i; // : enclose::x s = i; // : enclose ::s ::x = i; // : x y = i; // : y } void g(enclose* p, int i) { p->x = i; // : enclose ::x } }; }; inner* p = 0; // : `inner' - , ($$R.11). , -