Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
71
Добавлен:
26.05.2014
Размер:
67.41 Кб
Скачать

вШСТО уФТБХУФТБР. чЧЕДЕОЙЕ Ч СЪЩЛ уЙ++, пРЙУБОЙС Й лПОУФБОФЩ A.noneline { font-family: Arial, Serif; text-decoration: none; } FONT.arial { font-family: Arial, Serif; } TD.arial { font-family: Arial, Serif; } TH.arial { font-family: Arial, Serif; } PRE { font-family: Monospace; color: navy; } SAMP { font-family: Monospace; color: navy; } TT { font-family: Monospace; color: navy; } VAR { font-family: Monospace; color: navy; }

уЕТЧЕТ РПДДЕТЦЙЧБЕФУС

гЕОФТПН йОЖПТНБГЙПООЩИ фЕИОПМПЗЙК

(095) 932-9212, 932-9213, 939-0783

E-mail: info@citforum.ru уЕТЧЕТ йОЖПТНБГЙПООЩИ фЕИОПМПЗЙК УПДЕТЦЙФ НПТЕ(!) БОБМЙФЙЮЕУЛПК ЙОЖПТНБГЙЙ зМБЧБ 2 пРЙУБОЙС Й лПОУФБОФЩ уПЧЕТЫЕОУФЧП ДПУФЙЗБЕФУС ФПМШЛП Л НПНЕОФХ ЛТБИБ.

- у.о. рБТЛЙОУПО ч ЬФПК ЗМБЧЕ ПРЙУБОЩ ПУОПЧОЩЕ ФЙРЩ (char, int, float Й Ф.Д.) Й ПУОПЧОЩЕ УРПУПВЩ РПУФТПЕОЙС ЙЪ ОЙИ ОПЧЩИ ФЙРПЧ (ЖХОЛГЙК, ЧЕЛФПТПЧ, ХЛБЪБФЕМЕК Й Ф.Д.). йНС ЧЧПДЙФУС Ч РТПЗТБННЕ РПУТЕДУФЧПН ПРЙУБОЙС, ЛПФПТПЕ ЪБДБЕФ ЕЗП ФЙР Й, ЧПЪНПЦОП, ОБЮБМШОПЕ ЪОБЮЕОЙЕ. дБОЩ РПОСФЙС ПРЙУБОЙС, ПРТЕДЕМЕОЙС, ПВМБУФЙ ЧЙДЙНПУФЙ ЙНЕО, ЧТЕНЕОЙ ЦЙЪОЙ ПВЯЕЛФПЧ Й ФЙРПЧ. пРЙУЩЧБАФУС УРПУПВЩ ЪБРЙУЙ ЛПОУФБОФ Ч C++, Б ФБЛЦЕ УРПУПВЩ ПРТЕДЕМЕОЙС УЙНЧПМЙЮЕУЛЙИ ЛПОУФБОФ. рТЙНЕТЩ РТПУФП ДЕНПОУФТЙТХАФ ИБТБЛФЕТОЩЕ ЮЕТФЩ СЪЩЛБ. вПМЕЕ ТБЪЧЕТОХФЩК Й ТЕБМЙУФЙЮОЩК РТЙНЕТ РТЙЧПДЙФУС Ч УМЕДХАЭЕК ЗМБЧЕ ДМС ЪОБЛПНУФЧБ У ЧЩТБЦЕОЙСНЙ Й ПРЕТБФПТБНЙ СЪЩЛБ C++. нЕИБОЙЪНЩ ЪБДБОЙС ФЙРПЧ, ПРТЕДЕМСЕНЩИ РПМШЪПЧБФЕМЕН, У РТЙУПЕДЙОЕООЩНЙ ПРЕТБГЙСНЙ РТЕДУФБЧМЕОЩ Ч зМБЧБИ 4, 5 Й 6 Й ЪДЕУШ ОЕ ХРПНЙОБАФУС. 2.1 пРЙУБОЙС 2.1.1 пВМБУФШ чЙДЙНПУФЙ 2.1.2 пВЯЕЛФЩ Й бДТЕУБ (Lvalue) 2.1.3 чТЕНС цЙЪОЙ рТЕЦДЕ ЮЕН ЙНС (ЙДЕОФЙЖЙЛБФПТ) НПЦЕФ ВЩФШ ЙУРПМШЪПЧБОП Ч C++ РТПЗТБННЕ, ПО ДПМЦОП ВЩФШ ПРЙУБОП. ьФП ЪОБЮЙФ, ЮФП ОБДП ЪБДБФШ ЕЗП ФЙР, ЮФПВЩ УППВЭЙФШ ЛПНРЙМСФПТХ, Л ЛБЛПЗП ЧЙДБ ПВЯЕЛФБН ПФОПУЙФУС ЙНС. чПФ ОЕУЛПМШЛП РТЙНЕТПЧ, ЙММАУФТЙТХАЭЙИ ТБЪОППВТБЪЙЕ ПРЙУБОЙК: char ch; int count = 1; char* name = "Bjarne"; struct complex { float re, im; }; complex cvar; extern complex sqrt(complex); extern int error_number; typedef complex point; float real(complex* p) { return p->re; }; const double pi = 3.1415926535897932385; struct user;

лБЛ НПЦОП ЧЙДЕФШ ЙЪ ЬФЙИ РТЙНЕТПЧ, ПРЙУБОЙЕ НПЦЕФ ДЕМБФШ ВПМШЫЕ ЮЕН РТПУФП БУУПГЙЙТПЧБФШ ФЙР У ЙНЕОЕН. вПМШЫЙОУФЧП ПРЙУБОЙК СЧМСАФУС ФБЛЦЕ ПРТЕДЕМЕОЙСНЙ; ФП ЕУФШ ПОЙ ФБЛЦЕ ПРТЕДЕМСАФ ДМС ЙНЕОЙ УХЭОПУФШ, Л ЛПФПТПК ПОП ПФОПУЙФУС. дМС ch, count Й cvar ЬФПК УХЭОПУФША СЧМСЕФУС УППФЧЕФУФЧХАЭЙК ПВЯЕН РБНСФЙ, ЛПФПТЩК ДПМЦЕО ЙУРПМШЪПЧБФШУС ЛБЛ РЕТЕНЕООБС - ЬФБ РБНСФШ ВХДЕФ ЧЩДЕМЕОБ. дМС real ЬФП ЪБДБООБС ЖХОЛГЙС. дМС constant pi ЬФП ЪОБЮЕОЙЕ 3.1415926535897932385. дМС complex ЬФПК УХЭОПУФША СЧМСЕФУС ОПЧЩК ФЙР. дМС point ЬФП ФЙР complex, РПЬФПНХ point УФБОПЧЙФУС УЙОПОЙНПН complex. фПМШЛП ПРЙУБОЙС extern complex sqrt(complex); extern int error_number; struct user;

ОЕ СЧМСАФУС ПДОПЧТЕНЕООП ПРТЕДЕМЕОЙСНЙ. ьФП ПЪОБЮБЕФ, ЮФП ПВЯЕЛФ, Л ЛПФПТПНХ ПОЙ ПФОПУСФУС, ДПМЦЕО ВЩФШ ПРТЕДЕМЕО ЗДЕ-ФП ЕЭЕ. лПД (ФЕМП) ЖХОЛГЙЙ sqrt ДПМЦЕО ЪБДБЧБФШУС ОЕЛЙН ДТХЗЙН ПРЙУБОЙЕН, РБНСФШ ДМС РЕТЕНЕООПК error_number ФЙРБ int ДПМЦОБ ЧЩДЕМСФШУС ОЕЛЙН ДТХЗЙН ПРЙУБОЙЕН, Й ЛБЛПЕ-ФП ДТХЗПЕ ПРЙУБОЙЕ ФЙРБ user ДПМЦОП ПРТЕДЕМСФШ, ЮФП ПО ЙЪ УЕВС РТЕДУФБЧМСЕФ. ч C++ РТПЗТБННЕ ЧУЕЗДБ ДПМЦОП ВЩФШ ФПМШЛП ПДОП ПРТЕДЕМЕОЙЕ ЛБЦДПЗП ЙНЕОЙ, ОП ПРЙУБОЙК НПЦЕФ ВЩФШ НОПЗП, Й ЧУЕ ПРЙУБОЙС ДПМЦОЩ УПЗМБУПЧЩЧБФШУС У ФЙРПН ПВЯЕЛФБ, Л ЛПФПТПНХ ПОЙ ПФОПУСФУС, РПЬФПНХ Ч ЬФПН ЖТБЗНЕОФЕ ЕУФШ ДЧЕ ПЫЙВЛЙ: int count; int count; // ПЫЙВЛБ: РЕТЕПРТЕДЕМЕОЙЕ exnern int error_number; exnern int error_number; // ПЫЙВЛБ: ОЕУППФЧЕФУФЧЙЕ ФЙРПЧ

Б Ч ЬФПН - ОЙ ПДОПК (ПВ ЙУРПМШЪПЧБОЙЙ extern УН. #4.2): exnern int error_number; exnern int error_number;

оЕЛПФТЩЕ ПРЙУБОЙС ЪБДБАФ "ЪОБЮЕОЙЕ" ДМС УХЭОПУФЕК, ЛПФПТЩЕ ПОЙ ПРТЕДЕМСАФ: struct complex { float re, im; }; typedef complex point; float real(complex* p) { return p->re }; const double pi = 3.1415926535897932385;

дМС ФЙРПЧ, ЖХОЛГЙК Й ЛПОУФБОФ "ЪОБЮЕОЙЕ" ОЕЙЪНЕООП; ДМС ОЕЛПОУФБОФОЩИ ФЙРПЧ ДБООЩИ ОБЮБМШОПЕ ЪОБЮЕОЙЕ НПЦЕФ ЧРПУМЕДУФЧЙЙ ЙЪНЕОСФШУС: int count = 1; char* name = "Bjarne"; //... count = 2; name = "Marian";

йЪ ЧУЕИ ПРТЕДЕМЕОЙК ФПМШЛП

char ch;

ОЕ ЪБДБЕФ ЪОБЮЕОЙЕ. чУСЛПЕ ПРЙУБОЙЕ, ЪБДБАЭЕЕ ЪОБЮЕОЙЕ, СЧМСЕФУС ПРТЕДЕМЕОЙЕН. 2.1.1 пВМБУФШ чЙДЙНПУФЙ пРЙУБОЙЕ ЧЧПДЙФ ЙНС Ч ПВМБУФЙ ЧЙДЙНПУФЙ; ФП ЕУФШ, ЙНС НПЦЕФ ЙУРПМШЪПЧБФШУС ФПМШЛП Ч ПРТЕДЕМЕООПК ЮБУФЙ РТПЗТБННЩ. дМС ЙНЕОЙ, ПРЙУБООПЗП Ч ЖХОЛГЙЙ (ФБЛПЕ ЙНС ЮБУФП ОБЪЩЧБАФ МПЛБМШОЩН), ЬФБ ПВМБУФШ ЧЙДЙНПУФЙ РТПУФЙТБЕФУС ПФ ФПЮЛЙ ПРЙУБОЙС ДП ЛПОГБ ВМПЛБ, Ч ЛПФПТПН РПСЧЙМПУШ ПРЙУБОЙЕ; ДМС ЙНЕОЙ ОЕ Ч ЖХОЛГЙЙ Й ОЕ Ч ЛМБУУЕ (ОБЪЩЧБЕНПЗП ЮБУФП ЗМПВБМШОЩН ЙНЕОЕН) ПВМБУФШ ЧЙДЙНПУФЙ РТПУФЙТБЕФУС ПФ ФПЮЛЙ ПРЙУБОЙС ДП ЛПОГБ ЖБКМБ, Ч ЛПФПТПН РПСЧЙМПУШ ПРЙУБОЙЕ. пРЙУБОЙЕ ЙНЕОЙ Ч ВМПЛЕ НПЦЕФ УЛТЩЧБФШ (РТСФБФШ) ПРЙУБОЙЕ ЧП ЧОХФТЕООЕН ВМПЛЕ ЙМЙ ЗМПВБМШОПЕ ЙНС. ьФП ЪОБЮЙФ, ЮФП НПЦОП РЕТЕПРТЕДЕМСФШ ЙНС ЧОХФТЙ ВМПЛБ ДМС УУЩМЛЙ ОБ ДТХЗПК ПВЯЕЛФ. рПУМЕ ЧЩИПДБ ЙЪ ВМПЛБ ЙНС ЧОПЧШ ПВТЕФБЕФ УЧПЕ РТЕЦОЕЕ ЪОБЮЕОЙЕ. оБРТЙНЕТ: int x; // ЗМПВБМШОПЕ x f() { int x; // МПЛБМШОПЕ x РТСЮЕФ ЗМПВБМШОПЕ x x = 1; // РТЙУЧПЙФШ МПЛБМШОПНХ x { int x; // РТСЮЕФ РЕТЧПЕ МПЛБМШОПЕ x x = 2; // РТЙУЧПЙФШ ЧФПТПНХ МПЛБМШОПНХ x } x = 3; // РТЙУЧПЙФШ РЕТЧПНХ МПЛБМШОПНХ x } int* p = &x; // ЧЪСФШ БДТЕУ ЗМПВБМШОПЗП x

уЛТЩФЙЕ ЙНЕО ОЕЙЪВЕЦОП РТЙ ОБРЙУБОЙЙ ВПМШЫЙИ РТПЗТБНН. пДОБЛП ЮЙФБАЭЙК ЮЕМПЧЕЛ МЕЗЛП НПЦЕФ ОЕ ЪБНЕФЙФШ, ЮФП ЙНС УЛТЩФП, Й ОЕЛПФПТЩЕ ПЫЙВЛЙ, ЧПЪОЙЛБАЭЙЕ ЧУМЕДУФЧЙЕ ЬФПЗП, ПЮЕОШ ФТХДОП ПВОБТХЦЙФШ, ЗМБЧОЩН ПВТБЪПН РПФПНХ, ЮФП ПОЙ ТЕДЛЙЕ. ъОБЮЙФ УЛТЩФЙЕ ЙНЕО УМЕДХЕФ НЙОЙНЙЪЙТПЧБФШ. йУРПМШЪПЧБОЙЕ ДМС ЗМПВБМШОЩИ РЕТЕНЕООЩИ ЙНЕО ЧТПДЕ i ЙМЙ x ОБРТБЫЙЧБЕФУС ОБ ОЕРТЙСФОПУФЙ.

у РПНПЭША РТЙНЕОЕОЙС ПРЕТБГЙЙ ТБЪТЕЫЕОЙС ПВМБУФЙ ЧЙДЙНПУФЙ :: НПЦОП ЙУРПМШЪПЧБФШ УЛТЩФПЕ ЗМПВБМШОПЕ ЙНС. оБРТЙНЕТ: int x; f() { int x = 1; // УЛТЩЧБЕФ ЗМПВБМШОПЕ x ::x = 2; // РТЙУЧБЙЧБЕФ ЗМПВБМШОПНХ x }

оП ЧПЪНПЦОПУФЙ ЙУРПМШЪПЧБФШ УЛТЩФПЕ МПЛБМШОПЕ ЙНС ОЕФ.

пВМБУФШ ЧЙДЙНПУФЙ ЙНЕОЙ ОБЮЙОБЕФУС Ч ФПЮЛЕ ПРЙУБОЙС. ьФП ПЪОБЮБЕФ, ЮФП ЙНС НПЦОП ЙУРПМШЪПЧБФШ ДБЦЕ ДМС ЪБДБОЙС ЕЗП УПВУФЧЕООПЗП ЪОБЮЕОЙС. оБРТЙНЕТ: int x; f() { int x = x; // ЙЪЧТБЭЕОЙЕ }

ьФП ОЕ СЧМСЕФУС ОЕДПРХУФЙНЩН, ИПФС Й ВЕУУНЩУМЕООП, Й ЛПНРЙМСФПТ РТЕДХРТЕДЙФ, ЮФП x "used before set" ("ЙУРПМШЪПЧБОП ДП ФПЗП, ЛБЛ ЪБДБОП"), ЕУМЙ ЧЩ РПРТПВХЕФЕ ФБЛ УДЕМБФШ. нПЦОП, ОБРТПФЙЧ, ОЕ РТЙНЕОСС ПРЕТБГЙА ::, ЙУРПМШЪПЧБФШ ПДОП ЙНС ДМС УУЩМЛЙ ОБ ДЧБ ТБЪМЙЮОЩИ ПВЯЕЛФБ Ч ВМПЛЕ. оБРТЙНЕТ: int x; f() // ЙЪЧТБЭЕОЙЕ { int y = x; // ЗМПВБМШОПЕ x int x = 22; y = x; // МПЛБМШОПЕ x }

рЕТЕНЕООБС y ЙОЙГЙБМЙЪЙТХЕФУС ЪОБЮЕОЙЕН ЗМПВБМШОПЗП x, 11, Б ЪБФЕН ЕНХ РТЙУЧБЙЧБЕФУС ЪОБЮЕОЙЕ МПЛБМШОПК РЕТЕНЕООПК x, 22.

йНЕОБ РБТБНЕФТПЧ ЖХОЛГЙЙ УЮЙФБАФУС ПРЙУБООЩНЙ Ч УБНПН ЧОЕЫОЕН ВМПЛЕ ЖХОЛГЙЙ, РПЬФПНХ f(int x) { int x; // ПЫЙВЛБ }

УПДЕТЦЙФ ПЫЙВЛХ, ФБЛ ЛБЛ x ПРТЕДЕМЕОП ДЧБЦДЩ Ч ПДОПК Й ФПК ЦЕ ПВМБУФЙ ЧЙДЙНПУФЙ. 2.1.2 пВЯЕЛФЩ Й бДТЕУБ (Lvalue) нПЦОП ОБЪОБЮБФШ Й ЙУРПМШЪПЧБФШ РЕТЕНЕООЩЕ, ОЕ ЙНЕАЭЙЕ ЙНЕО, Й НПЦОП ПУХЭЕУФЧМСФШ РТЙУЧБЙЧБОЙЕ ЧЩТБЦЕОЙСН УФТБООПЗП ЧЙДБ (ОБРТЙНЕТ, *p[a+10]=7). уМЕДПЧБФЕМШОП, ЕУФШ РПФТЕВОПУФШ Ч ЙНЕОЙ "ОЕЮФП Ч РБНСФЙ". чПФ УППФЧЕФУФЧХАЭБС ГЙФБФБ ЙЪ УРТБЧПЮОПЗП ТХЛПЧПДУФЧБ РП C++: "пВЯЕЛФ ЕУФШ ПВМБУФШ РБНСФЙ; lvalue ЕУФШ ЧЩТБЦЕОЙЕ, УУЩМБАЭЕЕУС ОБ ПВЯЕЛФ"(#У.5). уМПЧП "lvalue" РЕТЧПОБЮБМШОП ВЩМП РТЙДХНБОП ДМС ЪОБЮЕОЙС "ОЕЮФП, ЮФП НПЦЕФ УФПСФШ Ч МЕЧПК ЮБУФЙ РТЙУЧБЙЧБОЙС". пДОБЛП ОЕ ЧУСЛЙК БДТЕУ НПЦОП ЙУРПМШЪПЧБФШ Ч МЕЧПК ЮБУФЙ РТЙУЧБЙЧБОЙС; ВЩЧБАФ БДТЕУБ, УУЩМБАЭЙЕУС ОБ ЛПОУФБОФХ (УН. #2.4). 2.1.3 чТЕНС цЙЪОЙ еУМЙ РТПЗТБННЙУФ ОЕ ХЛБЪБМ ЙОПЗП, ФП ПВЯЕЛФ УПЪДБЕФУС, ЛПЗДБ ЧУФТЕЮБЕФУС ЕЗП ПРЙУБОЙЕ, Й ХОЙЮФПЦБЕФУС, ЛПЗДБ ЕЗП ЙНС ЧЩИПДЙФ ЙЪ ПВМБУФЙ ЧЙДЙНПУФЙ, пВЯЕЛФЩ У ЗМПВБМШОЩНЙ ЙНЕОБНЙ УПЪДБАФУС Й ЙОЙГЙБМЙЪЙТХАФУС ПДЙО ТБЪ (ФПМШЛП) Й "ЦЙЧХФ" ДП ЪБЧЕТЫЕОЙС РТПЗТБННЩ. пВЯЕЛФЩ, ПРТЕДЕМЕООЩЕ ПРЙУБОЙЕН У ЛМАЮЕЧЩН УМПЧПН static, ЧЕДХФ УЕВС ФБЛ ЦЕ. оБРТЙНЕТ *1: int a = 1; void f() { int b = 1; // ЙОЙГЙБМЙЪЙТХЕФУС РТЙ ЛБЦДПН ЧЩЪПЧЕ f() static int c = 1; // ЙОЙГЙБМЙЪЙТХЕФУС ФПМШЛП ПДЙО ТБЪ cout type { case 's': cout string_value; break; case 'i': cout int_value; break; default: cerr

Соседние файлы в папке Введение в язык С++ - Б. Страустрап