<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>OpenSCADAWiki - RomanSavochenko/CShortAll</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll</link>
<description>History/revisions of OpenSCADAWiki/RomanSavochenko/CShortAll</description>
<lastBuildDate>Sun, 05 Feb 2012 04:57:07 +0200</lastBuildDate>
<image>
<title>OpenSCADAWiki - Recent comments</title>
<link>http://wiki.oscada.org/</link>
<url>http://wiki.oscada.org/files/wacko4.gif</url>
<width>108</width>
<height>50</height>
</image>
<language>en-us</language>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>WackoWiki R4.3</generator>
<item>
<title>2009-04-17 11:48:03</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2009-04-17+11%3A48%3A03</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a name=".romansavochenko.cshortall" href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2009-04-17+11%3A48%3A03">2009-04-17 11:48:03&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll">2009-04-27 16:40:47&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">&lt;strong>Примечание:&lt;/strong> Документ создаётся автором с 1998г. До настоящего момента документ создавался в среде LaTeX. На текущий момент выполняется публикация документа в среде Wiki с последующим оформлением в среде dockbook. LaTeX версию документа можно взять &lt;a href="ftp://ftp.oscada.org.ua/books/C++ShortAll.pdf" target="_blank" title="PDF Document (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/pdf.gif" alt="PDF Document" />здесь&lt;/a> и исходник &lt;a href="ftp://ftp.oscada.org.ua/books/C++ShortAll.tex" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />здесь&lt;/a>. Документ оформляется в среде WIKI для привлечения к его развитию программистов использующий язык C и С++ в повседневной практике и желающих опубликовать свой опыт работы с данными языками. Разрешается вносить изменения в данный документ с целью исправления обнаруженных ошибок или с целью его дополнения.
&lt;/div>&lt;br />
&lt;b>Deletions:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;strong>Примечание:&lt;/strong> Документ создаётся автором с 1998г. До настоящего момента документ создавался в среде LaTeX. На текущий момент выполняется публикация документа в среде Wiki с последующим оформлением в среде dockbook. LaTeX версию документа можно взять &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.pdf" target="_blank" title="PDF Document (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/pdf.gif" alt="PDF Document" />здесь&lt;/a> и исходник &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.tex" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />здесь&lt;/a>. Документ оформляется в среде WIKI для привлечения к его развитию программистов использующий язык C и С++ в повседневной практике и желающих опубликовать свой опыт работы с данными языками. Разрешается вносить изменения в данный документ с целью исправления обнаруженных ошибок или с целью его дополнения.
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2009-04-17 11:42:38</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2009-04-17+11%3A42%3A38</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2009-04-17+11%3A42%3A38">2009-04-17 11:42:38&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2009-04-17+11%3A48%3A03">2009-04-17 11:48:03&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">&lt;strong>Примечание:&lt;/strong> Документ создаётся автором с 1998г. До настоящего момента документ создавался в среде LaTeX. На текущий момент выполняется публикация документа в среде Wiki с последующим оформлением в среде dockbook. LaTeX версию документа можно взять &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.pdf" target="_blank" title="PDF Document (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/pdf.gif" alt="PDF Document" />здесь&lt;/a> и исходник &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.tex" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />здесь&lt;/a>. Документ оформляется в среде WIKI для привлечения к его развитию программистов использующий язык C и С++ в повседневной практике и желающих опубликовать свой опыт работы с данными языками. Разрешается вносить изменения в данный документ с целью исправления обнаруженных ошибок или с целью его дополнения.
&lt;/div>&lt;br />
&lt;b>Deletions:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;strong>Примечание:&lt;/strong> Документ создаётся автором с 1998г. До настоящего момента документ создавался в среде LaTeX. На текущий момент выполняется публикация документа в среде Wiki с последующим оформлением в среде dockbook. LaTeX версию документа можно взять &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.pdf" target="_blank" title="PDF Document (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/pdf.gif" alt="PDF Document" />здесь&lt;/a> и исходник &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.tex" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />здесь&lt;/a>. Документ оформляется в среде WIKI для привлечения к его развитию программистов использующий язык C и С++ в повседневной практике и желающих опубликовать свой опыт работы с данными языками. Зарегистрированным пользователям разрешается вносить изменения в данный документ с целью исправления обнаруженных ошибок или с целью его дополнения.
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2007-01-12 17:13:44</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2007-01-12+17%3A13%3A44</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2007-01-12+17%3A13%3A44">2007-01-12 17:13:44&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2009-04-17+11%3A42%3A38">2009-04-17 11:42:38&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">&lt;strong>Примечание:&lt;/strong> Документ создаётся автором с 1998г. До настоящего момента документ создавался в среде LaTeX. На текущий момент выполняется публикация документа в среде Wiki с последующим оформлением в среде dockbook. LaTeX версию документа можно взять &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.pdf" target="_blank" title="PDF Document (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/pdf.gif" alt="PDF Document" />здесь&lt;/a> и исходник &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.tex" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />здесь&lt;/a>. Документ оформляется в среде WIKI для привлечения к его развитию программистов использующий язык C и С++ в повседневной практике и желающих опубликовать свой опыт работы с данными языками. Зарегистрированным пользователям разрешается вносить изменения в данный документ с целью исправления обнаруженных ошибок или с целью его дополнения.
&lt;/div>&lt;br />
&lt;b>Deletions:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;strong>Примечание:&lt;/strong> Документ создаётся автором с 1998г. До настоящего момента документ создавался в среде LaTeX. На текущий момент выполняется публикация документа в среде Wiki с последующим оформлением в среде dockbook. LaTeX версию документа можно взять &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.pdf" target="_blank" title="PDF Document (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/pdf.gif" alt="PDF Document" />здесь&lt;/a> и исходник &lt;a href="ftp://diyaorg.dp.ua/books/C++ShortAll.tex" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />здесь&lt;/a>. Документ оформляется в среде WIKI для привлечения к его развитию программистов использующий язык C и С++ в повседневной практике и желающих опубликовать свой опыт работы с данными языками. Разрешается вносить изменения в данный документ с целью исправления обнаруженных ошибок или с целью его дополнения.&lt;br />
&lt;span class="cite">Внимание.&lt;/span> Документ доступен только для чтения. Если вы желаете его дополнить воспользуйтесь ссылкой: &lt;a href="http://www.freesource.info/wiki/Stat'i/KratkoOboVsjom/Clang" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />http://www.freesource.info/wiki/Stat'i/KratkoOboVsjom/Clang&lt;/a>
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2006-05-30 18:07:38</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2006-05-30+18%3A07%3A38</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-30+18%3A07%3A38">2006-05-30 18:07:38&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2007-01-12+17%3A13%3A44">2007-01-12 17:13:44&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">&lt;!--notypo-->{{Include file="!/part1"}}&lt;!--/notypo-->&lt;br />
&lt;!--notypo-->{{Include file="!/part2"}}&lt;!--/notypo-->
&lt;/div>&lt;br />
&lt;b>Deletions:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;a name="h119-1">&lt;/a>&lt;h2>1 Язык C/C++&lt;/h2>&lt;a name="h119-2">&lt;/a>&lt;h3>1.1 Ключевые слова С/С++&lt;/h3>
Таблица 1. &lt;strong>Ключевые слова С/С++&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell"> &lt;/td>&lt;td class="usercell"> &lt;/td>&lt;td class="usercell"> &lt;/td>&lt;td  class="usercell"> &lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="4">&lt;div style="float:center; text-align:center">&lt;strong>Ключевые слова для С/С++&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">auto&lt;/td>&lt;td class="usercell">break&lt;/td>&lt;td class="usercell">case&lt;/td>&lt;td  class="usercell">char&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">const&lt;/td>&lt;td class="usercell">continue&lt;/td>&lt;td class="usercell">default&lt;/td>&lt;td  class="usercell">do&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">double&lt;/td>&lt;td class="usercell">else&lt;/td>&lt;td class="usercell">enum&lt;/td>&lt;td  class="usercell">extern&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">float&lt;/td>&lt;td class="usercell">for&lt;/td>&lt;td class="usercell">goto&lt;/td>&lt;td  class="usercell">if&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">int&lt;/td>&lt;td class="usercell">long&lt;/td>&lt;td class="usercell">register&lt;/td>&lt;td  class="usercell">return&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">short&lt;/td>&lt;td class="usercell">signed&lt;/td>&lt;td class="usercell">sizeof&lt;/td>&lt;td  class="usercell">static&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">struct&lt;/td>&lt;td class="usercell">switch&lt;/td>&lt;td class="usercell">typedef&lt;/td>&lt;td  class="usercell">union&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">unsigned&lt;/td>&lt;td class="usercell">void&lt;/td>&lt;td class="usercell">volatile&lt;/td>&lt;td  class="usercell">while&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="4">&lt;div style="float:center; text-align:center">&lt;strong>Ключевые слова только для С++&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">asm&lt;/td>&lt;td class="usercell">bool&lt;/td>&lt;td class="usercell">catch&lt;/td>&lt;td  class="usercell">class&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">const_cast&lt;/td>&lt;td class="usercell">delete&lt;/td>&lt;td class="usercell">dynamic_cast&lt;/td>&lt;td  class="usercell">explicit&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">false&lt;/td>&lt;td class="usercell">friend&lt;/td>&lt;td class="usercell">inline&lt;/td>&lt;td  class="usercell">mutable&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">namespace&lt;/td>&lt;td class="usercell">new&lt;/td>&lt;td class="usercell">operator&lt;/td>&lt;td  class="usercell">private&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">protected&lt;/td>&lt;td class="usercell">public&lt;/td>&lt;td class="usercell">reintepret_cast&lt;/td>&lt;td  class="usercell">static_cast&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">template&lt;/td>&lt;td class="usercell">this&lt;/td>&lt;td class="usercell">throw&lt;/td>&lt;td  class="usercell">true&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">try&lt;/td>&lt;td class="usercell">typeid&lt;/td>&lt;td class="usercell">typename&lt;/td>&lt;td  class="usercell">using&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">virtual&lt;/td>&lt;td class="usercell" colspan="3">wchar_t &lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-3">&lt;/a>&lt;h3>1.2 Постоянные&lt;/h3>
Таблица 2. &lt;strong>Постоянные языка С/С++&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell"> &lt;/td>&lt;td  class="usercell"> &lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Целые константы&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Десятичные&lt;/td>&lt;td  class="usercell">цифры 0-9;(12, 111, 956)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Восьмеричные&lt;/td>&lt;td  class="usercell">цифры 0-7;(012=10, 011=73, 076=62)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Шестнадцатеричные&lt;/td>&lt;td  class="usercell">цифры 0-9,буквы A-F или a-f(0x12=18, 0x2f=47, 0XA3=163)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Длинные целые константы&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Десятичная&lt;/td>&lt;td  class="usercell">12l=12, 956L=956;&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Восьмеричные&lt;/td>&lt;td  class="usercell">012l=10, 076L=62;&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Шестнадцатеричные&lt;/td>&lt;td  class="usercell">0x12l=18, 0XA3L=163.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Беззнаковые целые константы&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Десятичная&lt;/td>&lt;td  class="usercell">12u=12, 956U=956;&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Восьмеричные&lt;/td>&lt;td  class="usercell">012u=10, 076U=62;&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">Шестнадцатеричные&lt;/td>&lt;td  class="usercell">0x12u=18, 0XA3U=163.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Константы с плавающей точкой&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">Всегда представляются типами float, double и long double: 345. = 345; 2.1e5 = 210000; .123E3fL = 123; 4037e-5l = .04037&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Символьные константы&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">Состоит из одного символа кода ASCII, заключеного в апострофы: 'A'; 'a'; '7'; '$'.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">Многобайтовые символы: L'ab'.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">Специальные символы:&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\a&lt;/td>&lt;td  class="usercell">звонок&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\b&lt;/td>&lt;td  class="usercell">возврат на один символ назад&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\f&lt;/td>&lt;td  class="usercell">перевод страницы&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\n&lt;/td>&lt;td  class="usercell">новая строка&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\r&lt;/td>&lt;td  class="usercell">перевод каретки&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\t&lt;/td>&lt;td  class="usercell">горизонтальная табуляция&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\v&lt;/td>&lt;td  class="usercell">вертикальная табуляция&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\'&lt;/td>&lt;td  class="usercell">апостроф&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\"&lt;/td>&lt;td  class="usercell">двойные кавычки&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\\&lt;/td>&lt;td  class="usercell">обратная дробная черта&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\?&lt;/td>&lt;td  class="usercell">вопросительный знак&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\23&lt;/td>&lt;td  class="usercell">символ задан десятичным числом&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\0x23&lt;/td>&lt;td  class="usercell">символ задан шестнадцатеричным числом&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">\023&lt;/td>&lt;td  class="usercell">символ задан восьмеричным числом&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Строковые константы (литералы)&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">Представляет последовательность символов кода ASCII, заключённой в кавычки: "строка".&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-4">&lt;/a>&lt;h3>1.3 Переменные&lt;/h3>&lt;a name="h119-5">&lt;/a>&lt;h4>1.3.1 Основные типы переменных&lt;/h4>
Таблица 3. &lt;strong>Основные типы переменных языка С/С++&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Тип (байт_сист)&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Диапазон значений&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">bool (1)&lt;/td>&lt;td  class="usercell">false=0; true=1&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">char (1)&lt;/td>&lt;td  class="usercell">-128...127&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">int (2_16)&lt;/td>&lt;td  class="usercell">-32.768...32.767&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">int (4_32)&lt;/td>&lt;td  class="usercell">-2&lt;sup>31&lt;/sup> ...2&lt;sup>31&lt;/sup>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">short &lt;/td>&lt;td  class="usercell">-32.768...32.767&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">long (4_32)&lt;/td>&lt;td  class="usercell">-2&lt;sup>31&lt;/sup> ...2&lt;sup>31&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">long (8_64)&lt;/td>&lt;td  class="usercell">-2&lt;sup>63&lt;/sup> ...2&lt;sup>63&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">long long (8)&lt;/td>&lt;td  class="usercell">-2&lt;sup>63&lt;/sup> ...2&lt;sup>63&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">unsigned char (1)&lt;/td>&lt;td  class="usercell">0 ...255&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">unsigned (2_16)&lt;/td>&lt;td  class="usercell">0 ...65535&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">unsigned (4_32)&lt;/td>&lt;td  class="usercell">0 ...2&lt;sup>32&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">unsigned short (2)&lt;/td>&lt;td  class="usercell">0 ...65535&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">unsigned long (4_32)&lt;/td>&lt;td  class="usercell">0 ...2&lt;sup>32&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">unsigned long (8_64)&lt;/td>&lt;td  class="usercell">0 ...2&lt;sup>64&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">unsigned long long (8)&lt;/td>&lt;td  class="usercell">0 ...2&lt;sup>64&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">enum (2_16)&lt;/td>&lt;td  class="usercell">32.768...32.767&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">enum (4_32)&lt;/td>&lt;td  class="usercell">-2&lt;sup>31&lt;/sup> ...2&lt;sup>31&lt;/sup>&lt;/td>&lt;/tr> 
&lt;tr class="userrow">&lt;td class="usercell">float (4)&lt;/td>&lt;td  class="usercell">3.4*10&lt;sup>38&lt;/sup> (7 знаков)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">double (8)&lt;/td>&lt;td  class="usercell">3.4*10&lt;sup>308&lt;/sup> (15 знаков)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">long double (12)&lt;/td>&lt;td  class="usercell">3.4*10&lt;sup>4932&lt;/sup> (19 знаков)&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-6">&lt;/a>&lt;h4>1.3.2 Перечислимый тип (enum)&lt;/h4>
Определяет тип enum и-или enum переменную. Если фигурные скобки заданы то ключевое слово enum объявляет тип enum, состоящий из набора именованных целочисленных констант. Переменная типа enum хранит одно из значений, определенных типом enum. Таким образом, enum переменная всегда имеет тип int. Enum может использоваться, для объявления констант, которые могут использовать имена без объявления переменных для них, как показано в следующем примере: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
enum&amp;nbsp;DAYS&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;saturday,&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;sunday&amp;nbsp;=&amp;nbsp;10,&lt;br />&amp;nbsp;&amp;nbsp;monday,&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;tuesday,&lt;br />&amp;nbsp;&amp;nbsp;wednesday,&lt;br />&amp;nbsp;&amp;nbsp;thursday,&lt;br />&amp;nbsp;&amp;nbsp;friday&lt;br />}&amp;nbsp;today;&amp;nbsp;&lt;br />enum&amp;nbsp;DAYS&amp;nbsp;yesterday&amp;nbsp;=&amp;nbsp;monday;&lt;br />DAYS&amp;nbsp;yesterday&amp;nbsp;=&amp;nbsp;monday;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;C++&lt;br />int&amp;nbsp;tomorrow&amp;nbsp;=&amp;nbsp;wednesday;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-7">&lt;/a>&lt;h4>1.3.3 Структура (struct)&lt;/h4>
Объявляет тип структуры и-или переменную структуры. Если заданы фигурные скобки то определяется структурный тип. Безымянные разрядные поля могут использоваться для выравнивания. &lt;br />
Если фигурные скобки не заданы то ключевое слово struct используется для определения переменной структуры. В языке C++ добавлена возможность использования в структуре ключевых слов public, private, protect: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
struct&amp;nbsp;my_str;&amp;nbsp;&amp;nbsp;//my_str&amp;nbsp;-&amp;nbsp;как&amp;nbsp;прототип,&amp;nbsp;определена&amp;nbsp;позже&amp;nbsp;&lt;br />struct&amp;nbsp;POINT&amp;nbsp;&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;x;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;y;&lt;br />}&amp;nbsp;here&amp;nbsp;=&amp;nbsp;{&amp;nbsp;20,&amp;nbsp;40&amp;nbsp;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />struct&amp;nbsp;POINT&amp;nbsp;there,&amp;nbsp;*ther1;&lt;br />ther1-&amp;gt;x&amp;nbsp;=&amp;nbsp;2;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />struct&amp;nbsp;CELL&amp;nbsp;&amp;nbsp;{&amp;nbsp;//Выбор&amp;nbsp;количества&amp;nbsp;битов&amp;nbsp;для&amp;nbsp;элементов&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;character&amp;nbsp;&amp;nbsp;:&amp;nbsp;8;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;00000000&amp;nbsp;????????&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;foreground&amp;nbsp;:&amp;nbsp;3;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;00000???&amp;nbsp;00000000&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;intensity&amp;nbsp;&amp;nbsp;:&amp;nbsp;1;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;0000?000&amp;nbsp;00000000&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;blink&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;1;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;000?0000&amp;nbsp;00000000&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;:1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;заполнитель&lt;br />}&amp;nbsp;screen[25][80];&amp;nbsp;&lt;br />POINT&amp;nbsp;example(POINT&amp;nbsp;there)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />{&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;there.x&amp;nbsp;=&amp;nbsp;3;&lt;br />&amp;nbsp;&amp;nbsp;there.y&amp;nbsp;=&amp;nbsp;5;&lt;br />};&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-8">&lt;/a>&lt;h4>1.3.4 Тип объединение (union)&lt;/h4>
Объявляет тип - объединение, и-или переменную объединения. Если фигурные скобки заданы то, union объявляет тип объединения, состоящий из последовательности переменных, значения (известных как элементы объединения) которых могут иметь различные типы. Переменная типа union может содержать один элемент любого типа, определенного объединением. Размером объединения является размер самого большого типа в объединении. Переменная может быть определена, указанием ее имени после заключительной фигурной скобки. Если фигурные скобки не даны, то ключевое слово union используется, для определения переменной объединения. Например: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
union&amp;nbsp;UNKNOWN&amp;nbsp;&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;char&amp;nbsp;&amp;nbsp;&amp;nbsp;ch;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i;&lt;br />&amp;nbsp;&amp;nbsp;long&amp;nbsp;&amp;nbsp;&amp;nbsp;l;&lt;br />&amp;nbsp;&amp;nbsp;float&amp;nbsp;&amp;nbsp;f;&lt;br />&amp;nbsp;&amp;nbsp;double&amp;nbsp;d;&amp;nbsp;&lt;br />}&amp;nbsp;var1;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Variable&amp;nbsp;of&amp;nbsp;type&amp;nbsp;UNKNOWN&lt;br />union&amp;nbsp;UNKNOWN&amp;nbsp;var2;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Variable&amp;nbsp;of&amp;nbsp;type&amp;nbsp;UNKNOWN&lt;br />var1.i&amp;nbsp;=&amp;nbsp;6;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Use&amp;nbsp;variable&amp;nbsp;as&amp;nbsp;integer&lt;br />var2.d&amp;nbsp;=&amp;nbsp;5.327;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Use&amp;nbsp;variable&amp;nbsp;as&amp;nbsp;double&lt;br />C++&amp;nbsp;Поддерживает&amp;nbsp;анонимные&amp;nbsp;объединения:&amp;nbsp;&lt;br />union&amp;nbsp;&lt;br />{&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;my_data;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;float&amp;nbsp;this_data;&amp;nbsp;&amp;nbsp;&lt;br />};&lt;br />my_data=3&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-9">&lt;/a>&lt;h4>1.3.5 Пустой тип (void)&lt;/h4>
Если этот тип используется как тип возврата из функции то функция не возвращает значений. Если используется как список параметров функции, то входные параметры у функции отсутствуют. Если используется указатель на тип void то его при использовании необходимо приводить к конкретному типу.&lt;a name="h119-10">&lt;/a>&lt;h4>1.3.6 Сокращенный тип (typedef)&lt;/h4>
Описание typedef используется для замены сложных типов данных или создания своих специфических типов данных:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
typedef&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;long&amp;nbsp;int&amp;nbsp;ULINT;&lt;br />ULINT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;my_const;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-11">&lt;/a>&lt;h4>1.3.7 Тип класс (class)&lt;/h4>&lt;a name="h119-12">&lt;/a>&lt;h5>Общие понятия&lt;/h5>
В С++ добавлен класс - расширение понятия структуры. Память при определении класса не выделяется. Класс имеет имя (тег) и состоит из полей, представляющих его члены. В С++ допускается использование вложенных классов. Ключевое слово public определяет те члены класса, к которым имеется прямой доступ. Ключевое слово private используется для сокрытия определенных деталей класса, которые доступны только функциям членам класса и дружественным функциям. Все члены класса по умолчанию считаются приватными. Ключевое слово protected используется для открытия доступа только членам этого класса и членам производных от него классов. Функции класса могут определятся как внутри(увеличивается объем программы и скорость выполнения) так и вне(уменьшается объем программы и скорость выполнения) его тела. При создании в программе объекта экземпляра, его членам присваиваются некоторые начальные значения эту операцию выполняет специальная функция - конструктор имя которой совпадает с именем класса. Для освобождения памяти и других операций при закрытии класса используется деструктор имя которого совпадает с именем класса и с добавлением впереди символа "&amp;#126;".&lt;br />
Для присваивания переменной одного класса переменной другого класса можно в классе использовать оператор: operator char *() в котором описывается процедура преобразования одной переменной в другую что позволит в дальнейшем упростить обмен: title=big_book.&lt;br />
Одинаковые классы допускают копирования содержимого из одного класса в другой. &lt;br />
Конструкторы с одним параметром определённого типа могут использоваться для неявного преобразования типов (от типа параметра к типу класса). Для исключения этого нужно использовать директиву &lt;strong>explicit&lt;/strong>.&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;book&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;title[256];&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;author[64];&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book(char&amp;nbsp;*title="A",&amp;nbsp;char&amp;nbsp;*autor="B",&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;*publisher=&amp;nbsp;"C")&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(book::title,&amp;nbsp;title);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(book::author,&amp;nbsp;author);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(book::publisher,&amp;nbsp;publisher);&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;~book(void);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;*get_price(*publisher)&amp;nbsp;{*publisher};&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;show_title(void);&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;private:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;publisher[256];&lt;br />};&lt;br />book&amp;nbsp;diary;&lt;br />book::~book(void)&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"Уничтожение&amp;nbsp;экземпляра"&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;title&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'\n';&amp;nbsp;&amp;nbsp;};&lt;br />&amp;nbsp;&amp;nbsp;void&amp;nbsp;book::show_title(void)&amp;nbsp;{cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;title&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'\n';&amp;nbsp;};&lt;br />&amp;nbsp;&amp;nbsp;book&amp;nbsp;tips("Jamsa's&amp;nbsp;1001&amp;nbsp;C/C++",&amp;nbsp;"Jamsa",&amp;nbsp;"Jamsa&amp;nbsp;Press");&lt;br />}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-13">&lt;/a>&lt;h5>Дружественные классы и члены&lt;/h5>
Дружественные классы - friend указывает на класс который может использовать private члены текущего класса. Есть возможность узкого указания на член класса friend имеющего доступ к private членам текущего класса. Кроме того есть возможность создавать взаимные friend - классы. Дружественная функция может не принадлежать ни какому классу т.е быть автономной. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;book&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;title[256];&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;author[64];&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;friend&amp;nbsp;class&amp;nbsp;Reader::show_reader(void);&lt;br />&amp;nbsp;&amp;nbsp;private:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;publisher[256];&lt;br />};&lt;br />class&amp;nbsp;Reader&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;public:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Reader&amp;nbsp;(char&amp;nbsp;*name)&amp;nbsp;{strcpy(Reader::name,&amp;nbsp;name);&amp;nbsp;};&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;show_reader(class&amp;nbsp;book&amp;nbsp;book)&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{cout&amp;lt;&amp;lt;"Читатель"&amp;lt;&amp;lt;name&amp;lt;&amp;lt;'&amp;nbsp;'&amp;lt;&amp;lt;&amp;nbsp;"Книга"&amp;lt;&amp;lt;book.title;&amp;nbsp;};&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;book&amp;nbsp;tips[23];&lt;br />&amp;nbsp;&amp;nbsp;private:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;name[64];&lt;br />};&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-14">&lt;/a>&lt;h5>Наследование&lt;/h5>
Наследование это когда производный класс наследует свойства родительского класса. Наследование обеспечивает возможность рассмотрения порождённого объекта как базового (но не наоборот). Наследование может быть множественным. В производном классе допускается переопределение функций базового. Для обращения к перегруженной функции базового класса можно записать d.TBase::getData();, где TBase - имя базового класса. Наследования бывают: &lt;br />
&lt;ul>&lt;li> public  -- Открытое наследование.
&lt;div class="indent">&lt;em>class circle: public point {};&lt;/em>&lt;br />
При этом члены базового класса: &lt;br />
&lt;/div>&lt;ul>&lt;li> public  -- доступны любым нестатическим функциям-членам и функциям не являющимся членами;
&lt;/li>&lt;li> protected  -- доступны любым нестатическим функциям-членам и дружественным функциям;
&lt;/li>&lt;li> private  -- невидимы в производном классе;
&lt;/li>&lt;/ul>&lt;/li>&lt;li> private  -- Закрытое наследование. 
&lt;div class="indent">&lt;em>class circle: private point {};&lt;/em>&lt;br />
При этом члены базового класса: &lt;br />
&lt;/div>&lt;ul>&lt;li> public  -- доступны любым нестатическим функциям-членам и дружественным функциям (делает public члены базового класса - private в производном);
&lt;/li>&lt;li> protected  -- доступны любым нестатическим функциям-членам и дружественным функциям (делает protected члены базового класса - private в производном);
&lt;/li>&lt;li> private  -- невидимы в производном классе;
&lt;/li>&lt;/ul>&lt;/li>&lt;li> protected  -- Защищённое наследование.
&lt;div class="indent">&lt;em>class circle: protected point {};&lt;/em>&lt;br />
При этом члены базового класса: &lt;br />
&lt;/div>&lt;ul>&lt;li> public  -- доступны любым нестатическим функциям-членам и дружественным функциям (делает public члены базового класса - protected в производном);
&lt;/li>&lt;li> protected  -- доступны любым нестатическим функциям-членам и дружественным функциям;
&lt;/li>&lt;li> private  -- невидимы в производном классе;
&lt;/li>&lt;/ul>&lt;/li>&lt;li> virtual  -- используется для решения проблемы подобъектов-дубликатов (использование базового класса более раза).&lt;/li>&lt;/ul>
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;Cover&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;static&amp;nbsp;int&amp;nbsp;count;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Cover(char&amp;nbsp;*title)&amp;nbsp;{&amp;nbsp;strcpy(Cover::title,&amp;nbsp;title)&amp;nbsp;;};&lt;br />&amp;nbsp;&amp;nbsp;protected:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;title[256];&lt;br />};&amp;nbsp;&amp;nbsp;&lt;br />class&amp;nbsp;book&amp;nbsp;&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book&amp;nbsp;(char&amp;nbsp;*title)&amp;nbsp;{srcpy(book::title,&amp;nbsp;title);&amp;nbsp;};&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;show_title(void)&amp;nbsp;{cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;title&amp;nbsp;&amp;lt;&amp;lt;endl;&amp;nbsp;};&lt;br />&amp;nbsp;&amp;nbsp;protected:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;float&amp;nbsp;cost;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;show_cost(void)&amp;nbsp;{cout&amp;lt;&amp;lt;cost&amp;lt;&amp;lt;endl;&amp;nbsp;};&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;private:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;title[64];&lt;br />};&lt;br />class&amp;nbsp;LibraryCard&amp;nbsp;:&amp;nbsp;public&amp;nbsp;Cover,&amp;nbsp;public&amp;nbsp;book&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;public:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LibraryCard(char&amp;nbsp;*title,&amp;nbsp;char&amp;nbsp;*author,&amp;nbsp;char&amp;nbsp;*publisher):&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;book(title)&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(LibraryCard::author,&amp;nbsp;author);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcpy(LibraryCard::publisher,&amp;nbsp;publisher);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cost&amp;nbsp;=&amp;nbsp;39.95;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br />&amp;nbsp;&amp;nbsp;private:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;author[64];&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;publisher[64];&lt;br />};&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-15">&lt;/a>&lt;h5>Полиморфизм&lt;/h5>
В классах поддерживается позднее(динамическое) связывание посредством механизма виртуальных функций. Динамическое связывание(определение адресов вызываемых в программе функций) происходит во время выполнения программы. В программах могут использоваться объектные переменные, или объектные указатели, значения которых - указатели на объекты-экземпляры того или иного класса. В языке С++ разрешается использовать объектный указатель базового класса для указания объекта производного класса. В языке С++ полиморфизм обеспечивается использованием механизма виртуальных функций. Для обращения к членам базового и производного класса имеющим одинаковые имена, используется определение виртуальной функции - virtual, что заставляет обращаться к члену последнего активизированного класса. Для корректного удаления объектов из памяти можно создавать виртуальный деструктор который будет вызываться перед вызовом деструктора базового класса. Чистая виртуальная функция (приравнивается 0) является аналогом прототипа, который объявляется в базовом классе а описывается в производном классе. Класс в котором хотя бы одна виртуальная функция приравнена 0 - является абстрактной. Абстрактным также является класс у которого деструктор преравнен к 0, но всёже определён (используется для исключения прямого создания объекта данного класса). Конкретным является класс в котором все чисто виртуальные функции базового класса переопределены: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;Base&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;base_mess(void)&amp;nbsp;{cout&amp;lt;&amp;lt;"Base\n";&amp;nbsp;};&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;virtual&amp;nbsp;void&amp;nbsp;show_mess(void)&amp;nbsp;{&amp;nbsp;cout&amp;lt;&amp;lt;"Base";};&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;virtual&amp;nbsp;void&amp;nbsp;show_reserve(void)&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />};&lt;br />class&amp;nbsp;Der:&amp;nbsp;public&amp;nbsp;Base&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;der_mess(void){&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;virtual&amp;nbsp;void&amp;nbsp;show_mess(void)&amp;nbsp;{&amp;nbsp;cout&amp;lt;&amp;lt;"Der";};&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;virtual&amp;nbsp;void&amp;nbsp;show_reserve(void){&amp;nbsp;cout&amp;lt;&amp;lt;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;";};&amp;nbsp;&amp;nbsp;&lt;br />};&lt;br />void&amp;nbsp;main(void)&amp;nbsp;&lt;br />{&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;Base&amp;nbsp;*base_pointer&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Base;&lt;br />&amp;nbsp;&amp;nbsp;base_pointer-&amp;gt;base_mess();&lt;br />&amp;nbsp;&amp;nbsp;base_pointer-&amp;gt;show_mess();&lt;br />&amp;nbsp;&amp;nbsp;base_pointer&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Der;&lt;br />&amp;nbsp;&amp;nbsp;base_pointer-&amp;gt;der_mess();&lt;br />&amp;nbsp;&amp;nbsp;base_pointer-&amp;gt;show_mess();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-16">&lt;/a>&lt;h5>Инициализаторы&lt;/h5>
Для инициализации членов данных из конструктора можно использовать инициализаторы. Которые являются единственным способом инициализации константных членов класса: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;Time&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Time();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;int&amp;nbsp;time;&lt;br />};&lt;br />Time::Time()&amp;nbsp;:&amp;nbsp;time(10)&lt;br />{...};&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-17">&lt;/a>&lt;h5>Композиция&lt;/h5>
Классы допускают композицию т.е включение одного объекта в другой. Включенные объекты уничтожаются после уничтожения содержащего их объекта. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;Time&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Time();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;int&amp;nbsp;time;&lt;br />};&lt;br />class&amp;nbsp;Date&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Date();&lt;br />&amp;nbsp;&amp;nbsp;private&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;Time&amp;nbsp;time;&lt;br />}&lt;br />Date::Date&amp;nbsp;:&amp;nbsp;time()&lt;br />{...};&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-18">&lt;/a>&lt;h5>Ссылка на себя&lt;/h5>
В классах есть возможность ссылаться на себя. Эта функция обеспечивается ключевым словом &amp;lt;this&amp;gt; которое содержит адрес текущего объекта. Может использоваться сцепления путём возврата адреса или ссылки объекта его членами функциями.&lt;a name="h119-19">&lt;/a>&lt;h5>Proxy классы&lt;/h5>
Proxy классами называются классы которые призваны скрывать private члены классов закрытой реализации библиотеки. Создаются они путем создания указателя на скрываемый класс в private поле proxy класса: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;Sequry&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;setValue(int&amp;nbsp;x);&lt;br />&amp;nbsp;&amp;nbsp;private:&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;value;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />};&lt;br />class&amp;nbsp;Proxy&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setValue(int&amp;nbsp;x)&amp;nbsp;{ptr-&amp;gt;setValue(x);};&lt;br />&amp;nbsp;&amp;nbsp;private&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sequry&amp;nbsp;*ptr;&lt;br />}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-20">&lt;/a>&lt;h3>1.4 Синтаксис&lt;/h3>&lt;a name="h119-21">&lt;/a>&lt;h4>1.4.1 Полезные обороты&lt;/h4>
&lt;ul>&lt;li> Приведение типов: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
long&amp;nbsp;с&amp;nbsp;=&amp;nbsp;(long)a;&amp;nbsp;-&amp;nbsp;традиционная&amp;nbsp;запись;&amp;nbsp;&lt;br />long&amp;nbsp;с&amp;nbsp;=&amp;nbsp;long(a);&amp;nbsp;-&amp;nbsp;функциональная&amp;nbsp;запись;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Декларация нескольких переменных одного типа: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;x,&amp;nbsp;&amp;nbsp;//&amp;nbsp;x&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y,&amp;nbsp;&amp;nbsp;//&amp;nbsp;y&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z;&amp;nbsp;&amp;nbsp;//&amp;nbsp;z&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Варианты использования параметров функций: 
&lt;ul>&lt;li> для меняющихся аргументов необходимо использовать ссылки или указатели (ссылки на массив); 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>int test(int *ptr, int &amp;alias, int[] &amp;mass );&lt;/em>&lt;br />
&lt;/div>&lt;ul>&lt;li> для неизменяемых аргументов использовать прямую передачу по значению ; 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>int test(int value);&lt;/em>&lt;br />
&lt;/div>&lt;ul>&lt;li> для больших неизменяемых аргументов использовать константные ссылки или указатели на константные данные; 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>int test(const int &amp;value, const int *ptr);&lt;/em>&lt;br />
&lt;/div>&lt;/li>&lt;li> Использование ключевого слова const (запрет модификации): 
&lt;ul>&lt;li> неконстантный указатель на неконстантные данные;
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>void test(char *str);&lt;/em>&lt;br />
&lt;/div>&lt;ul>&lt;li> неконстантный указатель на константные данные;
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>void test(const char *str);&lt;/em>&lt;br />
&lt;/div>&lt;ul>&lt;li> константный указатель на неконстантные данные;
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>int * const ptr = &amp;x;&lt;/em>&lt;br />
&lt;/div>&lt;ul>&lt;li> константный указатель на константные данные;
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>const int * const ptr = &amp;x;&lt;/em>&lt;br />
&lt;/div>&lt;ul>&lt;li> константный класс - не позволяет запускать неконстантные функции члены, кроме конструктора и деструктора;
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>const Time moon(12,0,0);&lt;/em>&lt;br />
&lt;/div>&lt;ul>&lt;li> константная функция - недопускется ничего (кроме mutable членов) модифицировать в константных функциях, а также вызывать неконстантные функции; 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;em>int getValue() const;&lt;/em>&lt;br />
&lt;/div>&lt;/li>&lt;li> Предотвращение многократного включения заголовочных файлов: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#ifndef&amp;nbsp;TEST_H&lt;br />#define&amp;nbsp;TEST_H&lt;br />&amp;lt;code&amp;gt;&lt;br />#endif&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Комментирование/исключение больших кусков кода: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#if&amp;nbsp;0&lt;br />&amp;lt;code&amp;gt;&lt;br />#endif&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Использование значений параметров функций по умолчанию: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
void&amp;nbsp;show_values(int&amp;nbsp;one=1,&amp;nbsp;int&amp;nbsp;two=2,&amp;nbsp;int&amp;nbsp;three=3);&lt;br />show_value();&lt;br />show_value(23);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Объявление переменных по месту: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
for&amp;nbsp;(int&amp;nbsp;count&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;count&amp;nbsp;&amp;lt;&amp;nbsp;10;count++)&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Функции переменного числа параметров: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
void&amp;nbsp;text(parm&amp;nbsp;x,char&amp;nbsp;*fmt,&amp;nbsp;...)&lt;br />&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;char&amp;nbsp;str[100];&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;va_start&amp;nbsp;(argptr,fmt);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;vsprintf(str,fmt,argptr);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;va_end(argptr);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(str);&lt;br />&amp;nbsp;}&lt;br />&amp;nbsp;text(54,"hello&amp;nbsp;%s","world");&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Указание способа(языка) для которого должна компилироваться функция:
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
extern&amp;nbsp;"C"&amp;nbsp;func();&amp;nbsp;&amp;nbsp;//&amp;nbsp;В&amp;nbsp;стиле&amp;nbsp;"C"&lt;br />&amp;nbsp;extern&amp;nbsp;"C++"&amp;nbsp;func():&amp;nbsp;//&amp;nbsp;В&amp;nbsp;стиле&amp;nbsp;"C++"&lt;br />&amp;nbsp;extern&amp;nbsp;"C++"&amp;nbsp;&lt;br />&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;int&amp;nbsp;func(void);&lt;br />&amp;nbsp;}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>&lt;a name="h119-22">&lt;/a>&lt;h4>1.4.2 Указатели&lt;/h4>
Особенностью языка С/С++ является возможность доступа к переменной не только по имени но и с использованием механизма указателей. Для этого в языке предусмотрены символы: "&amp;" и "*". &lt;br />
Символ "*" используется для индикации переменной (*ptr), которая расположена в памяти по адресу на который указывает одноимённая переменная без звёздочки. Символ "&amp;" используется как для определения адреса ячейки памяти переменной, так и для определения адреса указателя на переменную.&lt;br />
&lt;ul>&lt;li> Назначение адреса указателя:
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;*ptr&amp;nbsp;=&amp;nbsp;(int&amp;nbsp;*)0x0010;&amp;nbsp;&amp;nbsp;&amp;nbsp;//при&amp;nbsp;инициализации&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;ptr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;(int&amp;nbsp;*)0x0010;&amp;nbsp;&amp;nbsp;&amp;nbsp;//в&amp;nbsp;программе&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Присвоение значения непосредственно переменной на которую указывает указатель:
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
*ptr&amp;nbsp;=&amp;nbsp;300&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Родовой указатель в С/С++ основан на использовании указателя типа (void *). Ключевое слово void говорит об отсутствии данных о размере объекта в памяти. Во всех случаях использования указателя описанного как void*, необходимо выполнять операцию явного приведения типа указателя:
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
unsigned&amp;nbsp;long&amp;nbsp;block&amp;nbsp;=&amp;nbsp;0xffeeddccL;&amp;nbsp;&lt;br />&amp;nbsp;void&amp;nbsp;*ptr&amp;nbsp;=&amp;nbsp;&amp;amp;block;&lt;br />&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;=&amp;nbsp;*(unsigned&amp;nbsp;char&amp;nbsp;*)ptr;&amp;nbsp;&lt;br />&amp;nbsp;long&amp;nbsp;int&amp;nbsp;four_bytes&amp;nbsp;=&amp;nbsp;*(long&amp;nbsp;int&amp;nbsp;*)ptr;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Определение адреса указателя: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;*ptr;&amp;nbsp;&lt;br />&amp;nbsp;k&amp;nbsp;=&amp;nbsp;&amp;amp;ptr;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Указатель на указатель: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;data&amp;nbsp;=&amp;nbsp;5;&lt;br />&amp;nbsp;int&amp;nbsp;*ptr&amp;nbsp;=&amp;nbsp;&amp;amp;data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;ptr[0]==5;&amp;nbsp;&lt;br />&amp;nbsp;int&amp;nbsp;**ptr1&amp;nbsp;=&amp;nbsp;&amp;amp;ptr;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;ptr1[0][0]==5;&amp;nbsp;&lt;br />&amp;nbsp;int&amp;nbsp;***ptr2&amp;nbsp;=&amp;nbsp;&amp;amp;ptr1;&amp;nbsp;//&amp;nbsp;ptr2[0][0][0]==5;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Возврат указателя функцией:
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
bool&amp;nbsp;*cimpare(int,&amp;nbsp;int);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Указатель на функцию: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
bool&amp;nbsp;(*&amp;nbsp;compare)(int,&amp;nbsp;int);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Указатели на члены класса (.* и -&amp;gt;*) 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
class&amp;nbsp;Test&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;public:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void&amp;nbsp;funct()&amp;nbsp;{&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"Функция\n";&amp;nbsp;}&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int&amp;nbsp;value;&lt;br />};&lt;br />Test&amp;nbsp;t;&lt;br />Test&amp;nbsp;*tPtr&amp;nbsp;=&amp;nbsp;&amp;amp;t;&lt;br />void&amp;nbsp;(Test::*memPtr)()&amp;nbsp;=&amp;nbsp;&amp;amp;Test::funct;&lt;br />int&amp;nbsp;&amp;nbsp;Test::*vPtr&amp;nbsp;=&amp;nbsp;&amp;amp;Test::value;&lt;br />(tPtr-&amp;gt;*memPtr)();&amp;nbsp;//косвенный&amp;nbsp;вызов&amp;nbsp;функции&lt;br />cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;(*tPtr).*vPtr&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;endl;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>&lt;a name="h119-23">&lt;/a>&lt;h4>1.4.3 Ссылки (C++)&lt;/h4>
Ссылка являются псевдонимом (алиасом) от переменной на которую она ссылается. При изменении ссылаемой переменной изменяется ссылка. В основном ссылки используются при описании параметров функций и указывают что переменная может меняться.&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;&amp;amp;test(int&amp;nbsp;&amp;amp;x);&lt;br />&amp;nbsp;int&amp;nbsp;data&amp;nbsp;=&amp;nbsp;5;&lt;br />&amp;nbsp;int&amp;nbsp;&amp;amp;al_data&amp;nbsp;=&amp;nbsp;data;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;al_data&amp;nbsp;==&amp;nbsp;5;&amp;nbsp;&lt;br />&amp;nbsp;al_data&amp;nbsp;=&amp;nbsp;10;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;data&amp;nbsp;==&amp;nbsp;10;&amp;nbsp;&lt;br />&amp;nbsp;data&amp;nbsp;=&amp;nbsp;7;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;al_data&amp;nbsp;==&amp;nbsp;7;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-24">&lt;/a>&lt;h4>1.4.4 Массивы&lt;/h4>
Как и в других языках, С/С++ поддерживает массивы которые тесно переплетаются с указателями. Элементы массива имеют один и тот же тип и расположены в памяти друг за другом. Имя массива также можно воспринимать как указатель на начало массива. &lt;br />
В отличие от других языков в С/С++ отсутствует специальный строковый тип. Вместо него строковые литералы представляются как одномерный массив элементов типа char оканчивающегося символом "0".&lt;br />
&lt;ul>&lt;li> Явное указание числа элементов массива и списка начальных значений: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
char&amp;nbsp;array[]&amp;nbsp;&amp;nbsp;=&amp;nbsp;{'A','B','C','D',0};&lt;br />&amp;nbsp;char&amp;nbsp;array[]&amp;nbsp;&amp;nbsp;=&amp;nbsp;"ABCD";&lt;br />&amp;nbsp;char&amp;nbsp;array[5]&amp;nbsp;=&amp;nbsp;{'A','B','C','D',0};&lt;br />&amp;nbsp;char&amp;nbsp;*string&amp;nbsp;&amp;nbsp;=&amp;nbsp;"ABCD";&lt;br />&amp;nbsp;string&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;"ABCD";&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Обращение к элементам массива с помощью указателя:  
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
*(array+i);&amp;nbsp;&lt;br />&amp;nbsp;array[i][j];&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;*(array[i]+j);&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;*(*(array+i)+j);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Многомерные массивы: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
matrix[2]&amp;nbsp;==&amp;nbsp;&amp;amp;matrix[2][10];&amp;nbsp;&lt;br />&amp;nbsp;long&amp;nbsp;(*&amp;nbsp;matrix1)[3][2][4];&lt;br />&amp;nbsp;matrix1&amp;nbsp;=&amp;nbsp;new&amp;nbsp;long[3][2][4];&lt;br />&amp;nbsp;char&amp;nbsp;*messages[20]&amp;nbsp;==&amp;nbsp;char&amp;nbsp;messages[20][80]);&lt;br />&amp;nbsp;char&amp;nbsp;string[][80]=&lt;br />&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;"Первая&amp;nbsp;строка",&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;"Вторая&amp;nbsp;строка",&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;"Следующая&amp;nbsp;строка"&lt;br />&amp;nbsp;};&amp;nbsp;&lt;br />&amp;nbsp;int&amp;nbsp;m[][3]&amp;nbsp;=&amp;nbsp;{&amp;nbsp;{00},&amp;nbsp;{10,&amp;nbsp;11},&amp;nbsp;{20,&amp;nbsp;21,&amp;nbsp;22,}&amp;nbsp;};&amp;nbsp;&lt;br />&amp;nbsp;char&amp;nbsp;*Names[]=&amp;nbsp;{&amp;nbsp;"Aleksey",&amp;nbsp;"Vladislav",&amp;nbsp;"Vitaly"&amp;nbsp;};&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Массив указателей на функцию: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;&amp;nbsp;(*&amp;nbsp;fcmp[5])(int)&amp;nbsp;=&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;{cmp_name,&amp;nbsp;cmp_title,&amp;nbsp;cmp_year,&amp;nbsp;cmp_price,&amp;nbsp;cmp_totaly};&lt;br />&amp;nbsp;void&amp;nbsp;(*&amp;nbsp;func[3])(int);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//определение&lt;br />&amp;nbsp;(*&amp;nbsp;func[choice])(choice);&amp;nbsp;//вызов&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>&lt;a name="h119-25">&lt;/a>&lt;h4>1.4.5 Перегрузка функций&lt;/h4>
В языке C++ разрешается иметь множество функций с одним и тем же именем, но отличающиеся типами параметров или их количеством: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;sum(int&amp;nbsp;*array,&amp;nbsp;int&amp;nbsp;element)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br />&amp;nbsp;float&amp;nbsp;sum(float&amp;nbsp;*array,&amp;nbsp;int&amp;nbsp;element)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-26">&lt;/a>&lt;h4>1.4.6 Перегрузка операций&lt;/h4>
Перегрузкой операция является процедура расширения функций существующих операция для новых типов x(объектов). Операции допускающие перегрузку указанны в табл.4 . При перегрузке операций их старшинство и ассоциативность не изменяется. &lt;br />
&lt;ul>&lt;li> Унарная операция (префиксная).
&lt;/li>&lt;/ul>&lt;div class="indent"> &lt;em>Операция:&lt;/em> !S &lt;br />
 &lt;em>Вызывает:&lt;/em> S.operator!() или operator!(S) &lt;br />
 &lt;em>Объявляется:&lt;/em> bool operator!() const; или friend bool operator!(const String &amp;);&lt;br />
&lt;/div>&lt;ul>&lt;li> Унарная операция (постфиксная).
&lt;/li>&lt;/ul>&lt;div class="indent"> &lt;em>Операция:&lt;/em> d1++&lt;br />
 &lt;em>Вызывает:&lt;/em> d1.operator&lt;small>(0) или operator&lt;/small>(d1,0)&lt;br />
 &lt;em>Объявляется:&lt;/em> Date::operator&lt;small>(int); или friend Date::operator&lt;/small>(Date &amp;,int);&lt;br />
&lt;/div>&lt;ul>&lt;li> Бинарная операция.
&lt;/li>&lt;/ul>&lt;div class="indent"> &lt;em>Операция:&lt;/em> y+=z &lt;br />
 &lt;em>Вызывает:&lt;/em> y.operator+=(z) или operator+=(y,z) &lt;br />
 &lt;em>Объявляется:&lt;/em> const String &amp;operator+=(const String &amp;); или friend const String &amp;operator+=(String &amp;, const String &amp;); &lt;br />
&lt;/div>&lt;ul>&lt;li> Вызов функции.
&lt;/li>&lt;/ul>&lt;div class="indent"> &lt;em>Операция:&lt;/em> string(2,2);&lt;br />
 &lt;em>Вызывает:&lt;/em> string.operator()(2,2);&lt;br />
 &lt;em>Объявляется:&lt;/em> String operator()(int,int);&lt;br />
&lt;/div>&lt;ul>&lt;li> Приведение типов.
&lt;/li>&lt;/ul>&lt;div class="indent"> &lt;em>Операция:&lt;/em> (char *)S;&lt;br />
 &lt;em>Вызывает:&lt;/em> S.operator char*()&lt;br />
 &lt;em>Объявляется:&lt;/em> String operator char*(); или String(char *); (конструктор неявного преобразования). &lt;br />
&lt;/div>&lt;ul>&lt;li> операция "new".
&lt;/li>&lt;/ul>&lt;div class="indent"> &lt;em>Операция:&lt;/em> Class1 *cls = new Class1; или Class1 *cls = new ("class") Class1;&lt;br />
 &lt;em>Вызывает:&lt;/em> Class1 *cls = Class2.operator new(sizeof(Class1)); или Class1 *cls = Class2.operator new("class", sizeof(Class1));&lt;br />
 &lt;em>Объявляется:&lt;/em> void* Class2::operator new(size_t size); или void* Class2::operator new(string modul, size_t size);&lt;br />
&lt;/div>&lt;ul>&lt;li> операция "delete". 
&lt;/li>&lt;/ul>&lt;div class="indent"> &lt;em>Операция:&lt;/em> delete cls;&lt;br />
 &lt;em>Вызывает:&lt;/em> Class2.operator delete(cls);&lt;br />
 &lt;em>Объявляется:&lt;/em> void* Class2::operator delete(void *addr); &lt;/div>
Таблица 4. &lt;strong>Операции допускающие перегрузку&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">+&lt;/td>&lt;td class="usercell">-&lt;/td>&lt;td class="usercell">*&lt;/td>&lt;td class="usercell">/&lt;/td>&lt;td class="usercell">%&lt;/td>&lt;td class="usercell">^&lt;/td>&lt;td class="usercell">&amp;&lt;/td>&lt;td  class="usercell">&amp;#124;&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#126;&lt;/td>&lt;td class="usercell">!&lt;/td>&lt;td class="usercell">=&lt;/td>&lt;td class="usercell">&amp;#60;&lt;/td>&lt;td class="usercell">&amp;#62;&lt;/td>&lt;td class="usercell">+=&lt;/td>&lt;td class="usercell">-=&lt;/td>&lt;td  class="usercell">*=&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">/=&lt;/td>&lt;td class="usercell">%=&lt;/td>&lt;td class="usercell">^=&lt;/td>&lt;td class="usercell">&amp;=&lt;/td>&lt;td class="usercell">&amp;#124;=&lt;/td>&lt;td class="usercell">&amp;#60;&amp;#60;&lt;/td>&lt;td class="usercell">&amp;#62;&amp;#62;&lt;/td>&lt;td  class="usercell">&amp;#62;&amp;#62;=&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#60;&amp;#60;=&lt;/td>&lt;td class="usercell">==&lt;/td>&lt;td class="usercell">!=&lt;/td>&lt;td class="usercell">&amp;#60;=&lt;/td>&lt;td class="usercell">&amp;#62;=&lt;/td>&lt;td class="usercell">&amp;&amp;&lt;/td>&lt;td class="usercell">&amp;#124;&amp;#124;&lt;/td>&lt;td  class="usercell">++&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#45;&amp;#45;&lt;/td>&lt;td class="usercell">-&amp;#62;*&lt;/td>&lt;td class="usercell">,&lt;/td>&lt;td class="usercell">-&amp;#62;&lt;/td>&lt;td class="usercell">[]&lt;/td>&lt;td class="usercell">()&lt;/td>&lt;td class="usercell">new&lt;/td>&lt;td  class="usercell">delete&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">new[]&lt;/td>&lt;td class="usercell" colspan="7">delete[]&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-27">&lt;/a>&lt;h4>1.4.7 Шаблоны&lt;/h4>
Шаблоны определяются с помощью ключевого слова &lt;strong>template&lt;/strong> и предназначены для определения функций и классов способных работать с различными типами входных и выходных параметров. Шаблоны и наследование связаны следующим образом:&lt;br />
&lt;ul>&lt;li> шаблон класса может быть производным от шаблонного класса;
&lt;/li>&lt;li> шаблон класса может являться производным от нешаблонного класса;
&lt;/li>&lt;li> шаблон класса может быть производным от шаблона класса;
&lt;/li>&lt;li> нешаблонный класс может быть производным от шаблона класса.&lt;/li>&lt;/ul>
Шаблонные классы: &lt;br />
&lt;ul>&lt;li> Объявление: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
template&amp;nbsp;&amp;lt;class&amp;nbsp;Templ&amp;gt;&lt;br />&amp;nbsp;class&amp;nbsp;Tree&amp;nbsp;&lt;br />&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;public:&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tree(&amp;nbsp;const&amp;nbsp;Templ&amp;amp;&amp;nbsp;n&amp;nbsp;);&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;insertN(const&amp;nbsp;Templ&amp;nbsp;&amp;amp;);&lt;br />&amp;nbsp;}&amp;nbsp;&lt;br />&amp;nbsp;template&amp;nbsp;&amp;lt;class&amp;nbsp;Templ&amp;gt;&lt;br />&amp;nbsp;Tree&amp;lt;Templ&amp;gt;::Tree(const&amp;nbsp;Templ&amp;amp;&amp;nbsp;n)&amp;nbsp;{&amp;nbsp;};&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Использование:  
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
Tree&amp;lt;int&amp;gt;&amp;nbsp;NewTree(23);&amp;nbsp;&lt;br />&amp;nbsp;Tree&amp;lt;float&amp;gt;&amp;nbsp;NewTree(56.8);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>
Шаблонные функции: &lt;br />
&lt;ul>&lt;li> Объявление: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
template&amp;nbsp;&amp;lt;class&amp;nbsp;T&amp;gt;&amp;nbsp;//&amp;nbsp;или&amp;nbsp;template&amp;nbsp;&amp;lt;typname&amp;nbsp;T&amp;gt;;&lt;br />&amp;nbsp;T&amp;nbsp;max(T&amp;nbsp;val1,&amp;nbsp;T&amp;nbsp;val2,&amp;nbsp;T&amp;nbsp;val3)&lt;br />&amp;nbsp;{&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;T&amp;nbsp;max&amp;nbsp;=&amp;nbsp;val1;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;if(val2&amp;nbsp;&amp;gt;&amp;nbsp;max)&amp;nbsp;max=val2;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;if(val3&amp;nbsp;&amp;gt;&amp;nbsp;max)&amp;nbsp;max=val3;&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;max;&lt;br />&amp;nbsp;}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Использование: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;rez&amp;nbsp;=&amp;nbsp;max(1,10,3);&lt;br />&amp;nbsp;float&amp;nbsp;rez&amp;nbsp;=&amp;nbsp;max(0.5,9.99,6.78);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>
Шаблоны и друзья: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
friend&amp;nbsp;void&amp;nbsp;f1();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//друг&amp;nbsp;любого&amp;nbsp;класса&lt;br />&amp;nbsp;friend&amp;nbsp;void&amp;nbsp;f2(x&amp;lt;T&amp;gt;&amp;nbsp;&amp;amp;);&amp;nbsp;//друг&amp;nbsp;конкретного&amp;nbsp;класса&lt;br />&amp;nbsp;friend&amp;nbsp;void&amp;nbsp;A::f4();&amp;nbsp;//друг&amp;nbsp;любого&amp;nbsp;класса&lt;br />&amp;nbsp;friend&amp;nbsp;void&amp;nbsp;C&amp;lt;T&amp;gt;::f5(x&amp;lt;T&amp;gt;&amp;nbsp;&amp;amp;);&amp;nbsp;//друг&amp;nbsp;конкретного&amp;nbsp;класса&lt;br />&amp;nbsp;friend&amp;nbsp;class&amp;nbsp;Y;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//класс&amp;nbsp;Y&amp;nbsp;дружественен&amp;nbsp;любому&amp;nbsp;классу&lt;br />&amp;nbsp;friend&amp;nbsp;class&amp;nbsp;Z&amp;lt;T&amp;gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;//класс&amp;nbsp;Y&amp;nbsp;дружественен&amp;nbsp;конкретному&amp;nbsp;классу&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-28">&lt;/a>&lt;h4>1.4.8 Обработка исключительных ситуаций&lt;/h4>
В языке C++, добавлен мощный аппарат обработки исключительных ситуаций. Этот аппарат позволяет отлавливать как все типы исключений, так и конкретно взятый тип исключений. Так если записать catch(...), то будут отлавливаться все типы исключений. Кроме того обработка исключительных ситуаций оказываться вынесенной из "основной линии" выполнения программы. Для генерации повторных исключений в catch опускаться использование (throw) без параметров. Если происходит глубоковложенное исключение, то выполняется "раскрутка" стека для возвращения до ближайшего catch Обработка исключительных ситуаций описывается следующим образом: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
try&amp;nbsp;&amp;nbsp;//начало&amp;nbsp;блока&amp;nbsp;испытания&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;if()&amp;nbsp;throw&amp;nbsp;MyType();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Принудительная&amp;nbsp;генерация&amp;nbsp;&lt;br />}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;&amp;nbsp;(точка&amp;nbsp;генерации)&lt;br />catch(MyType&amp;nbsp;&amp;amp;Mt)&amp;nbsp;{...};&amp;nbsp;//&amp;nbsp;Отлов&amp;nbsp;и&amp;nbsp;обработка&amp;nbsp;исключений&amp;nbsp;My&amp;nbsp;Type&lt;br />catch(...){...};&amp;nbsp;//&amp;nbsp;Отлов&amp;nbsp;и&amp;nbsp;обработка&amp;nbsp;всех&amp;nbsp;остальных&amp;nbsp;исключений&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Для ограничения круга генерируемых исключений функцией, можно указать спецификацию исключений для функции: &lt;br />
 &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;g(double&amp;nbsp;h)&amp;nbsp;throw(a,b,c)&amp;nbsp;//может&amp;nbsp;генер.&amp;nbsp;a,b,c&amp;nbsp;и&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//unexpected&lt;br />&amp;nbsp;int&amp;nbsp;g(double&amp;nbsp;h)&amp;nbsp;throw()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//не&amp;nbsp;может&amp;nbsp;генерировать&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//(кроме&amp;nbsp;unexpected)&lt;br />&amp;nbsp;int&amp;nbsp;g(double&amp;nbsp;h)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//может&amp;nbsp;генерировать&amp;nbsp;все&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Стандартные обработчики исключений:&lt;br />
&lt;ul>&lt;li> bad_alloc (exception)  -- ошибка выделения памяти с помощью new;
&lt;/li>&lt;li> bad_cast (exception)  -- генерируется dynamic_cast;
&lt;/li>&lt;li> bad_exception (exception)  -- неожиданое исключение генерируется в случае неожиданного исключения при включении std::bad_exception в throw-список функции; 
&lt;/li>&lt;li> bad_typeid (exception)  -- генерируется typeid; 
&lt;/li>&lt;li> invalid_argument (exception)  -- функции передан недопустимый аргумент;
&lt;/li>&lt;li> logic_error (exception)  -- исключения в логических операциях;
&lt;/li>&lt;li> length_error (exception)  -- длина более максимально допустимой;
&lt;/li>&lt;li> out_of_range (exception)  -- аргумент вне допустимого диапазона;
&lt;/li>&lt;li> runtime_error (exception)  -- Ошибка в программе;
&lt;/li>&lt;li> overflow_error (runtime_error)  -- математическая ошибка переполнения сверху; 
&lt;/li>&lt;li> underflow_error (runtime_error)  -- математическая ошибка переполнения снизу; &lt;/li>&lt;/ul>
Чтоб избежать утечек памяти, обусловленных забыванием вызова delete после new, можно использовать шаблон auto_ptr, который будет автоматически разрушаться. &lt;br />
На базе класса exception, можно генерировать собственные исключения.&lt;a name="h119-29">&lt;/a>&lt;h3>1.5 Операции&lt;/h3>
Таблица 5. &lt;strong>Операции языка С/С++&lt;/strong> &lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Символ&lt;/strong>&lt;/div>&lt;/td>&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Описание&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Направл.&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;em>Самый высокий приоритет&lt;/em>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">::(унарн)&lt;/td>&lt;td class="usercell">Область видимости&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">::(бинар)&lt;/td>&lt;td class="usercell">Область видимости&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">()&lt;/td>&lt;td class="usercell">Вызов функции&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">[]&lt;/td>&lt;td class="usercell">Выделение элемента массива&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">-&amp;#62;&lt;/td>&lt;td class="usercell">Выделение элемента структуры адресуемой указателем&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">.&lt;/td>&lt;td class="usercell">Выделение элемента структуры или объединения&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">-&amp;#62;*&lt;/td>&lt;td class="usercell">Обращение по адресу объекта к адресу функции объекта&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">.*&lt;/td>&lt;td class="usercell">Обращение через объект к адресу функции объекта&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">++&lt;/td>&lt;td class="usercell">Пост-приращение&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">--&lt;/td>&lt;td class="usercell">Пост-декремент&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">+&lt;/td>&lt;td class="usercell">Унарный плюс&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">-&lt;/td>&lt;td class="usercell">Унарный минус&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">!&lt;/td>&lt;td class="usercell">Логическое отрицание&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">~&lt;/td>&lt;td class="usercell">Побитовое отрицание&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">(тип)&lt;/td>&lt;td class="usercell">Приведение типов: (float)i&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*&lt;/td>&lt;td class="usercell">Обращение по адресу переменной&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;&lt;/td>&lt;td class="usercell">Определение адреса переменной&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">sizeof&lt;/td>&lt;td class="usercell">Определение размера, в байтах&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*&lt;/td>&lt;td class="usercell">Умножение&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">/&lt;/td>&lt;td class="usercell">Деление&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">%&lt;/td>&lt;td class="usercell">Остаток от деления&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">+&lt;/td>&lt;td class="usercell">Сумма&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">-&lt;/td>&lt;td class="usercell">Разность&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#60;&amp;#60;&lt;/td>&lt;td class="usercell">Сдвиг влево&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#62;&amp;#62;&lt;/td>&lt;td class="usercell">Сдвиг вправо&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#60;&lt;/td>&lt;td class="usercell">Меньше&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#60;=&lt;/td>&lt;td class="usercell">Меньше и равно&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#62;&lt;/td>&lt;td class="usercell">Больше&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#62;=&lt;/td>&lt;td class="usercell">Больше и равно&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">==&lt;/td>&lt;td class="usercell">Равно&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">!=&lt;/td>&lt;td class="usercell">Неравно&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;&lt;/td>&lt;td class="usercell">Поразрядный "И"&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">^&lt;/td>&lt;td class="usercell">Поразрядный "исключающий ИЛИ"&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#124;&lt;/td>&lt;td class="usercell">Поразрядный "ИЛИ"&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;&amp;&lt;/td>&lt;td class="usercell">Логический "И"&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#124;&amp;#124;&lt;/td>&lt;td class="usercell">Логический "ИЛИ"&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">?:&lt;/td>&lt;td class="usercell">Условная операция(int i=(val&amp;gt;=0)?val:-val;)&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">=&lt;/td>&lt;td class="usercell">Присваивание&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">+=, -=, *=, /=, %=, &amp;#124;=, &amp;=, &amp;lt;=, &amp;gt;=&lt;/td>&lt;td class="usercell">Составное присваивание&lt;/td>&lt;td  class="usercell">справа&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">,&lt;/td>&lt;td class="usercell">Операция последования (последовательность выполнения)&lt;/td>&lt;td  class="usercell">слева&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-30">&lt;/a>&lt;h3>1.6 Операторы&lt;/h3>&lt;a name="h119-31">&lt;/a>&lt;h4>1.6.1  C&lt;/h4>
&lt;strong>break&lt;/strong>&lt;br />
Прекращает выполнение ближайшего внешнего оператора: do, for, switch или while. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
for(;;)&amp;nbsp;{&amp;nbsp;printf("TEST");&amp;nbsp;break;&amp;nbsp;}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;strong>case&lt;/strong>&lt;br />
Оценивает &amp;lt;выражение&amp;gt; и выполняет любое утверждение, связанное с &amp;lt;постоянной-выражением&amp;gt;. Если не имеется никакого соответствия с постоянным выражением, то выполняется связанное с заданным по умолчанию ключевым словом. Если заданное по умолчанию ключевое слово не используется, управление переходит к утверждению после блока переключателя.&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
switch(i)&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;case&amp;nbsp;1:&amp;nbsp;printf&amp;nbsp;"Val&amp;nbsp;1";&amp;nbsp;break;&lt;br />&amp;nbsp;&amp;nbsp;case&amp;nbsp;2:&amp;nbsp;printf&amp;nbsp;"Val&amp;nbsp;2";&amp;nbsp;break;&lt;br />&amp;nbsp;&amp;nbsp;default:&amp;nbsp;printf&amp;nbsp;"Other";&lt;br />}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;strong>continue&lt;/strong>&lt;br />
Передает управление в начало оператора цикла do, for, или while вызывая следующую итерацию.&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
for(i=0;i&amp;lt;2;i++){printf("test");&amp;nbsp;continue;&amp;nbsp;exit(1);}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>default&lt;/strong>&lt;br />
Используется в switch для выполнения действий неудовлетворяющим ни одному условию. &lt;br />
 &lt;br />
&lt;strong>do&lt;/strong>&lt;br />
&lt;em>do оператор while(выражение);&lt;/em>&lt;br />
Выполняет &amp;lt;оператор&amp;gt;, пока &amp;lt;выражение&amp;gt; истинно. Условие проверяется в конце цикла.&lt;br />
 &lt;br />
&lt;strong>else&lt;/strong>&lt;br />
&lt;em>if (выражение) выражение1; [else выражение2;]&lt;/em>&lt;br />
Выполняет &amp;lt;выражение2&amp;gt; если &amp;lt;выражение&amp;gt; не истинно.&lt;br />
 &lt;br />
**for((&lt;br />
&lt;em>for(init-expr; cond-expr; increment) оператор;&lt;/em>&lt;br />
Выполняет &amp;lt;оператор&amp;gt;, пока инициализированное число &amp;lt;init-expr&amp;gt;, над которым производится операция &amp;lt;increment&amp;gt;, удовлетворяет условному выражению &amp;lt;cond-expr&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>goto&lt;/strong>&lt;br />
Оператор безусловного перехода. Управления передается на оператор с меткой &amp;lt;имя:&amp;gt;.&lt;br />
&lt;strong>if&lt;/strong>&lt;br />
&lt;em>if (выражение) выражение1; [else выражение2;]&lt;/em>&lt;br />
Выполняет &amp;lt;выражение1&amp;gt;, если &amp;lt;выражение&amp;gt; истинно (отлично от нуля). Если else присутствует, и &amp;lt;выражение&amp;gt; - ложно (нуль), выполняется &amp;lt;выражение2&amp;gt;. После выполнения &amp;lt;выражение1&amp;gt; или &amp;lt;выражение2 &amp;gt;, управление переходит к следующему оператору.&lt;br />
 &lt;br />
&lt;strong>longjmp&lt;/strong>&lt;br />
&lt;em>void longjmp(jmp_buf env, int value);&lt;/em>&lt;br />
Передает управление по адресу &amp;lt;env&amp;gt; с порядковым номером &amp;lt;value&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>return&lt;/strong>&lt;br />
Прекращает выполнение текущей функции и возвращает управление вызывающей программе, с возможностью передачи значения выражения. &lt;br />
 &lt;br />
&lt;strong>setjmp&lt;/strong>&lt;br />
&lt;em>int setjmp(jmp_buf env);&lt;/em>&lt;br />
Запоминает в &amp;lt;env&amp;gt; адрес текущего места в программе для дальнейшего возврата к нему посредством longjmp. Функция возвращает порядковый номер сохраненного адреса начиная с "0".&lt;br />
 &lt;br />
&lt;strong>switch&lt;/strong>&lt;br />
Сравнивает &amp;lt;выражение&amp;gt; с константами во всех вариантах case и выполняет оператор связанный с &amp;lt;постоянной-выражением&amp;gt;. Если отсутствует соответствия с постоянных с выражениями то выполняется утверждение, связанное с ключевым словом default. Если ключевое слово default не используется то управление переходит к утверждению после блока переключателя. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
switch(выражение){&amp;nbsp;&lt;br />&amp;nbsp;case&amp;nbsp;константа1:&amp;nbsp;выражение1;&amp;nbsp;[break;]&amp;nbsp;&lt;br />&amp;nbsp;case&amp;nbsp;константа(n):&amp;nbsp;выражение(n);&amp;nbsp;[break;]&amp;nbsp;&lt;br />&amp;nbsp;[default:&amp;nbsp;выражение(n+1);]&amp;nbsp;&lt;br />}&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>while&lt;/strong>&lt;br />
&lt;em>while(выражение) оператор;&lt;/em>&lt;br />
Выполняет &amp;lt;оператор&amp;gt;, пока &amp;lt;выражение&amp;gt; истинно. &lt;br />
 &lt;a name="h119-32">&lt;/a>&lt;h4>1.6.2  C++&lt;/h4>
&lt;strong>explicit&lt;/strong>&lt;br />
Ставится перед конструктором объекта и предотвращает использование конструктора для неявного преобразования типов. &lt;br />
 &lt;br />
&lt;strong>namespace&lt;/strong>&lt;br />
Назначение области действия имён: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
namespace&amp;nbsp;Example&amp;nbsp;{&amp;nbsp;int&amp;nbsp;myvar;&amp;nbsp;}&amp;nbsp;&lt;br />&amp;nbsp;k&amp;nbsp;=&amp;nbsp;Example::myvar;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>this&lt;/strong>&lt;br />
Содержит указатель на собственный объект класса (т.е на себя); &lt;br />
 &lt;br />
&lt;strong>typeid&lt;/strong>&lt;br />
Возвращает ссылку на объект type_info. Объект type_info - это поддерживаемый системой объект, представляющий тип. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
const&amp;nbsp;char&amp;nbsp;*dataType&amp;nbsp;=&amp;nbsp;typeid(T).name();&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>typename&lt;/strong>&lt;br />
Указывает, что следующий за ним идентификатор обозначает тип. Обычно используется внутри шаблонов. &lt;br />
 &lt;br />
&lt;strong>using&lt;/strong>&lt;br />
Делает глубоковложенную команду, со специальной областью видимости, видимой по умолчанию: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
using&amp;nbsp;std::cout;&amp;nbsp;&lt;br />&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"test";&amp;nbsp;&lt;br />&amp;nbsp;using&amp;nbsp;namespace&amp;nbsp;math;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-33">&lt;/a>&lt;h5>Операторы преобразования типов&lt;/h5>
&lt;strong>static_cast&lt;/strong>&lt;br />
Выполняет стандартные преобразования (статическое): &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;x&amp;nbsp;=&amp;nbsp;static_cast&amp;lt;int&amp;gt;(d);&amp;nbsp;&lt;br />&amp;nbsp;string&amp;nbsp;s&amp;nbsp;=&amp;nbsp;static_cast&amp;lt;string&amp;gt;("ch_string");&amp;nbsp;&lt;br />&amp;nbsp;derivedPtr&amp;nbsp;=&amp;nbsp;static_cast&amp;lt;DerivedClass&amp;nbsp;*&amp;gt;(basePtr);&amp;nbsp;(преобразование&amp;nbsp;потомка&amp;nbsp;к&amp;nbsp;базовому&amp;nbsp;классу)&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>dynamic_cast&lt;/strong>&lt;br />
Выполняет динамическое приведение, иными словами, в процессе выполнения с проверкой возможности приведения. Можно использовать для программной проверки типа наследника из базового класса. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
cylinderPtr&amp;nbsp;=&amp;nbsp;dynamic_cast&amp;lt;const&amp;nbsp;Cylinder&amp;nbsp;*&amp;gt;(shapePtr);&amp;nbsp;&lt;br />&amp;nbsp;if(cylinderPtr&amp;nbsp;!=&amp;nbsp;NULL)&amp;nbsp;shapePtr-&amp;gt;area();&amp;nbsp;//Цилиндр&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>const_cast&lt;/strong>&lt;br />
Используется для снятия константности или volatile путём приведения: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
const_cast&amp;lt;const&amp;nbsp;CastTest&amp;nbsp;*&amp;gt;(this)-&amp;gt;number-;&amp;nbsp;(при&amp;nbsp;вызове&amp;nbsp;из&amp;nbsp;константной&amp;nbsp;функции)&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>reinterpret_cast&lt;/strong>&lt;br />
Для нестандартных преобразований: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
count&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;*reintepret_cast&amp;lt;char&amp;nbsp;*&amp;gt;(ptr)&amp;nbsp;«&amp;nbsp;endl;&amp;nbsp;(преобразует&amp;nbsp;(int&amp;nbsp;*)&amp;nbsp;в&amp;nbsp;(char&amp;nbsp;*)&amp;nbsp;и&amp;nbsp;разименовует)&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-34">&lt;/a>&lt;h5>Ключевые слова-операторы&lt;/h5>
Стандарт языка C++ предоставляет ключевые слова-операторы, которые могут использоваться вместо нескольких операторов C++ (табл.6).&lt;br />
Таблица 6. &lt;strong>Ключевые слова-операторы языка С++&lt;/strong> &lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Оператор&lt;/strong>&lt;/div>&lt;/td>&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Слово-оператор&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Описание&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;strong>Логические операторы-ключевые слова&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;&amp;&lt;/td>&lt;td class="usercell">and&lt;/td>&lt;td  class="usercell">логическое И (AND)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#124;&amp;#124;&lt;/td>&lt;td class="usercell">or&lt;/td>&lt;td  class="usercell">логическое ИЛИ (OR)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">!&lt;/td>&lt;td class="usercell">not&lt;/td>&lt;td  class="usercell">логическое НЕ (NOT)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;strong>Оператор "не равно"-ключевое слово&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">!=&lt;/td>&lt;td class="usercell">not_eq&lt;/td>&lt;td  class="usercell">не равно&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;strong>Побитовые операторы-ключевые слова&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;&lt;/td>&lt;td class="usercell">bitand&lt;/td>&lt;td  class="usercell">побитовое И (AND)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#124;&lt;/td>&lt;td class="usercell">bitor&lt;/td>&lt;td  class="usercell">побитовое включающее ИЛИ (OR)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">^&lt;/td>&lt;td class="usercell">xor&lt;/td>&lt;td  class="usercell">побитовое исключающее ИЛИ (OR)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#126;&lt;/td>&lt;td class="usercell">compl&lt;/td>&lt;td  class="usercell">побитовое инвертирование разрядов&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;strong>Побитовые операторы присваивания-ключевые слова&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;=&lt;/td>&lt;td class="usercell">and_eq&lt;/td>&lt;td  class="usercell">побитовое И (AND) и присваивание&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#124;=&lt;/td>&lt;td class="usercell">or_eq&lt;/td>&lt;td  class="usercell">побитовое включающее ИЛИ (OR) и присваивание&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">^=&lt;/td>&lt;td class="usercell">xor_eq&lt;/td>&lt;td  class="usercell">побитовое исключающее ИЛИ (OR) и присваивание&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-35">&lt;/a>&lt;h3>1.7 Спецификаторы класса памяти&lt;/h3>
&lt;strong>auto&lt;/strong>&lt;br />
Указывающий на то, что переменная имеет локальную (автоматическую) протяженность. Разрушается при выходе из функции.&lt;br />
 &lt;br />
&lt;strong>register&lt;/strong>&lt;br />
Определяет, что переменная должна быть, если возможно, сохранена в машинном регистре.&lt;br />
 &lt;br />
&lt;strong>extern&lt;/strong>&lt;br />
Определяет переменную которая должна быть видна в других объектных модулях.&lt;br />
 &lt;br />
&lt;strong>mutable&lt;/strong>&lt;br />
Определяет в классе переменную которую можно модифицировать даже из константной функции. &lt;br />
 &lt;br />
&lt;strong>static&lt;/strong>&lt;br />
Объявляет переменную которая будет являться одной для всех экземпляров функции и которая инициализируется при запуске программы. Статические функции объектов определяются в одном экземпляре и становятся видимыми за пределы класса владельца. Кроме того статическая функция член не может являться константной и имеют доступ только к статическим полям. Static в глобальном отношении может использоваться для ограничения области действия переменной пределами одного файла. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
static&amp;nbsp;int&amp;nbsp;getCount();&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-36">&lt;/a>&lt;h3>1.8 Препроцессор&lt;/h3>
Препроцессор это часть языка С. Препроцессор считывает исходный код, отвечает на размещенные в нем директивы и производит модифицированную версию этого исходного кода, которая передаётся компилятору. Подстановки препроцессором выполняются рекурсивно, т.е выполняется многопроходная обработка.&lt;br />
&lt;ul>&lt;li> Определение/удаление макроса. Макрос может быть определён без значения и может использоваться в качестве проверяемого флага. 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#define&amp;nbsp;VAL_T&amp;nbsp;345&lt;br />&amp;nbsp;#undef&amp;nbsp;VAL_T&lt;br />&amp;nbsp;#define&amp;nbsp;VAL_T&amp;nbsp;234&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Для перевода на другую строку используется  ";\" : 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#define&amp;nbsp;FILLSCREAN(color)&amp;nbsp;_AX&amp;nbsp;=&amp;nbsp;0x0600;\&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_CX&amp;nbsp;=&amp;nbsp;0x0000;\&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_DX&amp;nbsp;=&amp;nbsp;0x184f;\&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_BH&amp;nbsp;=&amp;nbsp;color;\&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;geninterrupt(0x10);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Использование параметров:
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#define&amp;nbsp;min(a,b)&amp;nbsp;((a)&amp;nbsp;&amp;lt;&amp;nbsp;(b)&amp;nbsp;?&amp;nbsp;(a)&amp;nbsp;:&amp;nbsp;(b))&lt;br />&amp;nbsp;result&amp;nbsp;=&amp;nbsp;min(44,uplimit);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br />&amp;nbsp;//&amp;nbsp;result&amp;nbsp;=&amp;nbsp;((44)&amp;nbsp;&amp;lt;&amp;nbsp;(uplimit)&amp;nbsp;?&amp;nbsp;(44)&amp;nbsp;:&amp;nbsp;(uplimit));&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Для объединения формальных параметров используются символы ##: 
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#define&amp;nbsp;var(&amp;nbsp;i&amp;nbsp;,&amp;nbsp;j&amp;nbsp;)&amp;nbsp;(&amp;nbsp;i##j&amp;nbsp;)&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;var(&amp;nbsp;x&amp;nbsp;,&amp;nbsp;6&amp;nbsp;)&amp;nbsp;=&amp;nbsp;x6&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;/div>&lt;ul>&lt;li> Для преобразования фактического параметра в строку используется символ # который помещается перед формальным макропараметром:
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#define&amp;nbsp;TRACE(flag)&amp;nbsp;printf(#flag&amp;nbsp;"=%d\n",&amp;nbsp;flag)&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>
 &lt;br />
&lt;ul>&lt;li> Вариантный макрос (...):
&lt;/li>&lt;/ul>&lt;div class="indent">&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#define&amp;nbsp;err(...)&amp;nbsp;fprintf(stderr,__VA_ARGS__)&lt;br />&amp;nbsp;err("%s&amp;nbsp;%d\n","The&amp;nbsp;error&amp;nbsp;code&amp;nbsp;",48);&amp;nbsp;&lt;br />&amp;nbsp;//&amp;nbsp;fprintf(stderr,"%s&amp;nbsp;%d\n","The&amp;nbsp;error&amp;nbsp;code&amp;nbsp;",48);&lt;br />&amp;nbsp;#define&amp;nbsp;errout(a,b,...)&amp;nbsp;\&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,"File&amp;nbsp;%s&amp;nbsp;&amp;nbsp;Line&amp;nbsp;%d\n",a,b);&amp;nbsp;\&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fprintf(stderr,__VA_ARGS__)&lt;br />&amp;nbsp;errout(__FILE__,__LINE__,"Unexpected&amp;nbsp;termination\n");&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/div>&lt;a name="h119-37">&lt;/a>&lt;h4>1.8.1 Директивы Препроцессора&lt;/h4>
&lt;strong>_Pragma&lt;/strong>&lt;br />
&lt;em>_Pragma("GCC poison printf")&lt;/em>&lt;br />
Оператор для вызова прагмы из тела макроса (табл.7). &lt;br />
 &lt;br />
&lt;strong>#define&lt;/strong>&lt;br />
&lt;em>#define ident ident1;&lt;/em>&lt;br />
Заменяет все последующие определения &amp;lt;ident&amp;gt; на лексему &amp;lt;ident1&amp;gt; (совокупность лексем). &lt;br />
 &lt;br />
&lt;strong>#elif, #if&lt;/strong>&lt;br />
&lt;em>#if expresion&lt;/em>&lt;br />
&lt;em>#elif expresion1&lt;/em>&lt;br />
&lt;em>#endif&lt;/em>&lt;br />
Проверяет выражение &amp;lt;expresion&amp;gt;, связанное с директивами #if, или #elif , если выражение истинно (отличный от нуля), то выполняются следующие строки до директив условия или конца условий. Директива #elif является объединением директив #else и #if. Если имеется #else, то нижестоящие строки выполняются когда выражение в #if или #elif имеет нулевое значение. Нельзя использовать в качестве условия оператор sizeof, составные типы, float или enum типы. &lt;br />
 &lt;br />
&lt;strong>defined&lt;/strong>&lt;br />
&lt;em>#if defined(VAR)&lt;/em>&lt;br />
&lt;em>#elif !defined(NVAR)&lt;/em>&lt;br />
&lt;em>#endif&lt;/em>&lt;br />
Оператор проверки определённости, используется в паре с #if. &lt;br />
 &lt;br />
&lt;strong>#else&lt;/strong>&lt;br />
Нижестоящие строки выполняются если выражение в #if, #ifdef, #ifndef или #elif имеет нулевое значение.&lt;br />
 &lt;br />
&lt;strong>#endif&lt;/strong>&lt;br />
Указывает на конец условия. &lt;br />
 &lt;br />
&lt;strong>#error&lt;/strong>&lt;br />
&lt;em>#error сообщение&lt;/em>&lt;br />
Генерация сообщения ошибки на stderr и завершения процесса компиляции. &lt;br />
 &lt;br />
&lt;strong>#ifdef&lt;/strong>&lt;br />
&lt;em>#ifdef &amp;lt;identifier&amp;gt;&lt;/em>&lt;br />
Выполняет последующие строки до #endif, если &amp;lt;identifier&amp;gt; был ранее определен. &lt;br />
 &lt;br />
&lt;strong>#ifndef&lt;/strong>&lt;br />
&lt;em>#ifndef &amp;lt;identifier&amp;gt;&lt;/em>&lt;br />
Выполняет последующие строки до #endif, если &amp;lt;identifier&amp;gt; не был ранее определён. &lt;br />
 &lt;br />
&lt;strong>#include&lt;/strong>&lt;br />
&lt;em>#include &amp;lt;filename&amp;gt;&lt;/em>&lt;br />
Вставляет содержимое файла &amp;lt;filename&amp;gt; в текущий файл. Если путь к имени файла включен в двойные кавычки ,то поиск осуществляется внутри текущего каталога. &lt;br />
 &lt;br />
&lt;strong>#include_next&lt;/strong>&lt;br />
&lt;em>#include_next &amp;lt;filename&amp;gt;&lt;/em>&lt;br />
&lt;span class="cite">?&lt;/span>&lt;br />
 &lt;br />
&lt;strong>#line&lt;/strong>&lt;br />
&lt;em>#line n file&lt;/em>&lt;br />
Изменяет внутренний номер строки компилятора на &amp;lt;n&amp;gt;, а также изменяет внутреннее имя файла на &amp;lt;file&amp;gt;. Текущий номер строки и имя файла доступны через константы препроцессора &amp;#95;&amp;#95;LINE&amp;#95;&amp;#95; и &amp;#95;&amp;#95;FILE&amp;#95;&amp;#95;. &lt;br />
 &lt;br />
&lt;strong>#pragma&lt;/strong>&lt;br />
&lt;em>#pragma directives&lt;/em>&lt;br />
Инструктирует компилятор, о выполнение машинно-специфических возможностей, определенных параметром &amp;lt;directives&amp;gt; (таблица [*]). &lt;br />
 &lt;br />
&lt;strong>#undef&lt;/strong>&lt;br />
&lt;em>#undef identifier&lt;/em>&lt;br />
Удаляет текущее определение &amp;lt;identifier&amp;gt;, который был предварительно определен директивой #define. &lt;br />
 &lt;br />
&lt;strong>#warning&lt;/strong>&lt;br />
&lt;em>#warning сообщение&lt;/em>&lt;br />
Генерация сообщения предупреждения на stderr и продолжение компиляции. &lt;br />
Таблица 7. &lt;strong>Параметры директивы pragma, препроцессора&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Имя&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Назначение&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">pack&lt;/td>&lt;td  class="usercell">Определяет, как компилятор выравнивает данные при сохранении в памяти. Может также использоваться с, вталкиванием и выталкиванием параметров.&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
#pragma&amp;nbsp;pack(n)&amp;nbsp;&lt;br />#pragma&amp;nbsp;pack(push,&amp;nbsp;n)&amp;nbsp;&lt;br />#pragma&amp;nbsp;pack(pop)&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;/td>&lt;/tr>
&lt;/table>
Таблица 8. &lt;strong>Предопределённые символьные константы&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Имя&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Назначение&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;BASE_FILE&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Полный путь к каталогу исходного файла.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;CHAR_UNSIGNED&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Указывает на то, что символьный тип является безнаковым.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;cplusplus&lt;/td>&lt;td  class="usercell">Указывает на то, что исходный код является программой на языке С++.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;DATE&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Дата компиляции исходного файла (строка).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;FILE&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Имя исходного файла (строка).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;func&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Имя текущей функции.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;FUNCTION&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Имя текущей функции.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;PRETTY_FUNCTION&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Полное имя текущей функции. Для C++ включает имена классов.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;INCLUDE_LEVEL&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell"> Глубина включения (include) файла.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;LINE&amp;#95;&lt;/td>&lt;td  class="usercell">Номер текущей строки исходного текста (целое число).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;NO_INLINE&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Указывает на отсутствие inline-функций.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;OBJC&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Программа на языке Objective-C.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;OPTIMIZE&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Указывает на то, что назначен уровень оптимизации.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;OPTIMIZE_SIZE&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Оптимизация размера программы.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;STDC&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Компилятор соответствует правилам стандарта языка C.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;TIME&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Время компиляции исходного файла (строка).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;#95;&amp;#95;VERSION&amp;#95;&amp;#95;&lt;/td>&lt;td  class="usercell">Полный номер версии.&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-38">&lt;/a>&lt;h3>1.9 Стандартные заголовочные файлы&lt;/h3>
&lt;strong>assert.h | cassert (ANSI)&lt;/strong>&lt;br />
Содержит макросы и информацию, для дополнительной диагностики, помогающей при отладке программы. &lt;br />
 &lt;br />
&lt;strong>bios.h (DOS)&lt;/strong>&lt;br />
BIOS сервисные функции (INT 10). &lt;br />
 &lt;br />
&lt;strong>conio.h (DOS)&lt;/strong>&lt;br />
Подпрограммы Ввода - вывода. &lt;br />
 &lt;br />
&lt;strong>ctipe.h | cctype (ANSI)&lt;/strong>&lt;br />
Символьная классификация. &lt;br />
 &lt;br />
&lt;strong>dirent.h (ANSI)&lt;/strong>&lt;br />
Управление каталогами. &lt;br />
 &lt;br />
&lt;strong>dos.h (DOS)&lt;/strong>&lt;br />
MS-DOS функции (INT 21). &lt;br />
 &lt;br />
&lt;strong>env.h (POSIX)&lt;/strong>&lt;br />
Содержит прототипы для окружений строковых функций. &lt;br />
 &lt;br />
&lt;strong>errno.h (ANSI)&lt;/strong>&lt;br />
Переменные, и утилиты обработки ошибок. &lt;br />
 &lt;br />
&lt;strong>fcntl.h (POSIX)&lt;/strong>&lt;br />
Флажки, используемые в функциях open и sopen. &lt;br />
 &lt;br />
&lt;strong>float.h | cfloat (ANSI)&lt;/strong>&lt;br />
Содержит предельные размеры переменных с плавающей точкой для данной системы. &lt;br />
 &lt;br />
&lt;strong>graph.h (DOS)&lt;/strong>&lt;br />
Программы для работы с графикой низкого уровня. &lt;br />
 &lt;br />
&lt;strong>io.h (DOS)&lt;/strong>&lt;br />
Низкоуровневый ввод-вывод. &lt;br />
 &lt;br />
&lt;strong>limits.h | climits (ANSI)&lt;/strong>&lt;br />
Содержит общие ограничения системы. &lt;br />
 &lt;br />
&lt;strong>locale.h (ANSI)&lt;/strong>&lt;br />
Содержит информацию для выполнения локализации ПО. &lt;br />
 &lt;br />
&lt;strong>malloc.h (ANSI)&lt;/strong>&lt;br />
Содержит прототипы функций распределения памяти. &lt;br />
 &lt;br />
&lt;strong>math.h | cmath (ANSI)&lt;/strong>&lt;br />
Содержит прототипы математических библиотечных функций. &lt;br />
 &lt;br />
&lt;strong>memory.h&lt;/strong>&lt;br />
Подпрограммы манипуляции с буферами. &lt;br />
 &lt;br />
&lt;strong>serach.h&lt;/strong>&lt;br />
Функции поиска и сортировки. &lt;br />
 &lt;br />
&lt;strong>setjmp.h (ANSI)&lt;/strong>&lt;br />
Прототипы Функций setjmp и longjmp (безусловного перехода) &lt;br />
 &lt;br />
&lt;strong>sygnal.h (ANSI)&lt;/strong>&lt;br />
Прототипы функций для работы с сигналами и описание самих сигналов. &lt;br />
 &lt;br />
&lt;strong>stdarg.h (ANSI)&lt;/strong>&lt;br />
Содержит макрокоманды для работы с функциями имеющими список параметров переменной длины. &lt;br />
 &lt;br />
&lt;strong>stdio.h | cstdio (ANSI)&lt;/strong>&lt;br />
Содержит прототипы стандартных библиотечных функций ввода-вывода и используемую ими информацию. &lt;br />
 &lt;br />
&lt;strong>stdlib.h | cstdlib (ANSI)&lt;/strong>&lt;br />
Содержит прототипы функций для преобразования чисел в текст, текста в числа, для выделения памяти, генерации случайных чисел и других полезных операций. &lt;br />
 &lt;br />
&lt;strong>string.h | cstring (ANSI)&lt;/strong>&lt;br />
Содержит прототипы функций для обработки строк стиля C. &lt;br />
 &lt;br />
&lt;strong>strstream.h | strstream (ANSI)&lt;/strong>&lt;br />
Для формирования строк через поток. &lt;br />
 &lt;br />
&lt;strong>time.h | ctime (ANSI)&lt;/strong>&lt;br />
Содержит прототипы функций для работы со временем и датами. &lt;br />
 &lt;br />
&lt;strong>unistd.h (POSIX)&lt;/strong>&lt;br />
Символьные константы POSIX.&lt;br />
&lt;strong>iostream&lt;/strong>&lt;br />
Содержит прототипы функций стандартного ввода и вывода. &lt;br />
 &lt;br />
&lt;strong>iomanip&lt;/strong>&lt;br />
Содержит прототипы функций для операций с потоками, дающие возможность форматировать потоки данных. &lt;br />
 &lt;br />
&lt;strong>fstream&lt;/strong>&lt;br />
Содержит прототипы функций для операций с файловым вводом-выводом. &lt;br />
 &lt;br />
&lt;strong>utility&lt;/strong>&lt;br />
Содержит классы и функции, используемые многими заголовочными файлами стандартной библиотеки. &lt;br />
 &lt;br />
&lt;strong>vector, list, deque, queue, stack, map, set, bitset (STL)&lt;/strong>&lt;br />
Содержат классы которые реализуют контейнеры стандартной библиотеки. &lt;br />
 &lt;br />
&lt;strong>functional&lt;/strong>&lt;br />
Содержит классы и функции, используемые алгоритмами стандартной библиотеки. &lt;br />
 &lt;br />
&lt;strong>memory&lt;/strong>&lt;br />
Содержит классы и функции, используемые стандартной библиотекой для выделения памяти контейнерам стандартной библиотеки. &lt;br />
 &lt;br />
&lt;strong>iterator&lt;/strong>&lt;br />
Содержит классы для доступа к данным в контейнерах стандартной библиотеки. &lt;br />
 &lt;br />
&lt;strong>algorithm&lt;/strong>&lt;br />
Содержит функции для манипулирования данными в контейнерах стандартной библиотеки. &lt;br />
 &lt;br />
&lt;strong>exception, stdexcept&lt;/strong>&lt;br />
Содержат классы использующиеся для обработки исключительных ситуаций. &lt;br />
 &lt;br />
&lt;strong>string&lt;/strong>&lt;br />
Определения класса string из стандартной библиотеки. &lt;br />
 &lt;br />
&lt;strong>sstream&lt;/strong>&lt;br />
Прототипы функций выполняющих ввод из строк в память и наоборот. &lt;br />
 &lt;br />
&lt;strong>locale&lt;/strong>&lt;br />
Содержит классы и функции, используемые потоковой обработкой различных языков. &lt;br />
 &lt;br />
&lt;strong>limits&lt;/strong>&lt;br />
Содержит классы для определения интервалов значений численного типа данных для данной платформы. &lt;br />
 &lt;br />
&lt;strong>typeinfo&lt;/strong>&lt;br />
Содержит классы для идентификации времени выполнения. &lt;a name="h119-39">&lt;/a>&lt;h2>2 Основные функции языка С/С++ (стандарт ANSI, POSIX)&lt;/h2>&lt;a name="h119-40">&lt;/a>&lt;h3>2.1 Математические функции (math.h|cmath)&lt;/h3>
&lt;strong>ceil, ceilf, ceill (POSIX)&lt;/strong>&lt;br />
&lt;em>double ceil(double x);&lt;/em>&lt;br />
&lt;em>float ceilf(float x);&lt;/em>&lt;br />
&lt;em>long double ceill(long double x);&lt;/em>&lt;br />
Функции округления до наименьшего целого, не меньшего, чем аргумент. &lt;br />
 &lt;br />
&lt;strong>cos (POSIX)&lt;/strong>&lt;br />
&lt;em>double cos(double x);&lt;/em>&lt;br />
Возвращает значение косинуса x, где x - это значение в радианах. &lt;br />
 &lt;br />
&lt;strong>exp (POSIX)&lt;/strong>&lt;br />
&lt;em>double exp(double x);&lt;/em>&lt;br />
Возвращает значение числа 'e' возведенного в степень x. &lt;br />
 &lt;br />
&lt;strong>fabs, fabsf, fabsl (POSIX)&lt;/strong>&lt;br />
&lt;em>double fabs(double x);&lt;/em>&lt;br />
&lt;em>float fabsf(float x);&lt;/em>&lt;br />
&lt;em>long double fabsl(long double x);&lt;/em>&lt;br />
Абсолютное значение числа с плавающей точкой. &lt;br />
 &lt;br />
&lt;strong>floor, floorf, floorl (POSIX)&lt;/strong>&lt;br />
&lt;em>double floor(double x);&lt;/em>&lt;br />
&lt;em>float floorf(float x);&lt;/em>&lt;br />
&lt;em>long double floorl(long double x);&lt;/em>&lt;br />
Наибольшее целое значение, но не большее x. &lt;br />
 &lt;br />
&lt;strong>fmod (POSIX)&lt;/strong>&lt;br />
&lt;em>double fmod(double x, double y);&lt;/em>&lt;br />
Функция получения остатка от деления (с плавающей точкой). &lt;br />
 &lt;br />
&lt;strong>log (POSIX)&lt;/strong>&lt;br />
&lt;em>double log(double x);&lt;/em>&lt;br />
Возвращает натуральный логарифм x. &lt;br />
 &lt;br />
&lt;strong>log10 (POSIX)&lt;/strong>&lt;br />
&lt;em>double log10(double x);&lt;/em>&lt;br />
Возвращает десятичный логарифм x. &lt;br />
 &lt;br />
&lt;strong>matherr (ANSI)&lt;/strong>&lt;br />
&lt;em>int matherr(struct expection *error_info);&lt;/em>&lt;br />
Пользовательская функция обработки ошибок математических операций. Описание ошибки передается в указателе на структуру &amp;lt;error_info&amp;gt; &lt;br />
&lt;strong>pow (POSIX)&lt;/strong>&lt;br />
&lt;em>double pow(double x, double y);&lt;/em>&lt;br />
Возвращает значение x в степени y. &lt;br />
 &lt;br />
&lt;strong>rand, srand &amp;lt;stdlib.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int rand(void);&lt;/em>&lt;br />
&lt;em>void srand(unsigned int seed);&lt;/em>&lt;br />
rand() - возвращает псевдослучайное число в диапазоне от нуля до RAND_MAX. &lt;br />
srand() - устанавливает свой аргумент как основу (seed) для новой последовательности псевдослучайных целых чисел, возвращаемых функцией rand(). &lt;br />
 &lt;br />
&lt;strong>sin (POSIX)&lt;/strong>&lt;br />
&lt;em>double sin(double x);&lt;/em>&lt;br />
Возвращает значение синуса аргумента x, где x указан в радианах. &lt;br />
 &lt;br />
&lt;strong>sqrt (POSIX)&lt;/strong>&lt;br />
&lt;em>double sqrt(double x);&lt;/em>&lt;br />
Функция вычисления квадратного корня. &lt;br />
 &lt;br />
&lt;strong>tan (POSIX)&lt;/strong>&lt;br />
&lt;em>double tan(double x);&lt;/em>&lt;br />
Возвращает тангенс аргумента x, где x задан в радианах. &lt;a name="h119-41">&lt;/a>&lt;h3>2.2 Функции для работы с дисками, директориями и файлами&lt;/h3>&lt;a name="h119-42">&lt;/a>&lt;h4>2.2.1 Функции потокового ввода-вывода&lt;/h4>
&lt;strong>fopen, fdopen, freopen (ANSI POSIX) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>FILE *fopen(const char *path, const char *mode);&lt;/em>&lt;br />
&lt;em>FILE *fdopen(int fildes, const char *mode);&lt;/em>&lt;br />
&lt;em>FILE *freopen(const char *path, const char *mode, FILE *stream);&lt;/em>&lt;br />
fopen - открывает файл с именем path и связывает его с потоком. &lt;br />
fdopen - связывает поток с существующим описателем файла &amp;lt;fildes&amp;gt;. &lt;br />
freopen - открывает файл с именем path и связывает его с потоком stream. Исходный поток (если такой существовал) закрывается. &lt;br />
 &lt;br />
&lt;strong>fclose (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fclose( FILE *stream);&lt;/em>&lt;br />
Закрывает поток &amp;lt;stream&amp;gt;. &lt;br />
&lt;strong>feof (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int feof(FILE *stream);&lt;/em>&lt;br />
Возвращает не ноль если достигнут конец файла (EOF) потока &amp;lt;stream&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>fgetc,getchar (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fgetc(FILE *stream);&lt;/em>&lt;br />
&lt;em>int getchar(void);&lt;/em>&lt;br />
Считывает очередной символ из потока &amp;lt;stream&amp;gt; или из stdin. &lt;br />
 &lt;br />
&lt;strong>fprintf (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fprintf(FILE *stream, const char *format, ...);&lt;/em>&lt;br />
Осуществляет форматированный вывод в поток &amp;lt;stream&amp;gt; (Табл.10). &lt;br />
&lt;strong>fread (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);&lt;/em>&lt;br />
Чтение блоков данных &amp;lt;nmemb&amp;gt; размером &amp;lt;size&amp;gt; каждый из потока &amp;lt;stream&amp;gt; в буфер &amp;lt;ptr&amp;gt;. Возвращается количество удачно прочитаных блоков.&lt;br />
 &lt;br />
&lt;strong>fflush (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fflush(FILE *stream);&lt;/em>&lt;br />
"Сбрасывает" буферы потока &amp;lt;stream&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>fwrite (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);&lt;/em>&lt;br />
Запись в поток &amp;lt;stream&amp;gt; блоков данных &amp;lt;nmemb&amp;gt; размером &amp;lt;size&amp;gt; каждый из буфера &amp;lt;ptr&amp;gt;. Возвращается количество удачно записанных блоков.&lt;br />
&lt;strong>perror (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void perror(const char *s);&lt;/em>&lt;br />
Выводит в стандартный поток ошибки сообщения, описывая ошибку, произошедшую при последнем системном вызове или вызове библиотечной функции. &lt;br />
Таблица 9. &lt;strong>Символы управления форматированием функций типа printf()&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Элемент&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Эффект&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">%[флаги][ширина][.точность][F | N | h | l]&amp;lt;тип&amp;gt;&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Флаги&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">0&lt;/td>&lt;td  class="usercell">Для чисел, ширина поля слева будет заполнена нулям.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">-&lt;/td>&lt;td  class="usercell">Производится выравнивание выводимого числа по левому краю в пределах выделенного поля. Правая сторона выделенного поля дополняется пробелами.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">+&lt;/td>&lt;td  class="usercell">Выводится знак числа символом '-' или '+'&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*&lt;/td>&lt;td  class="usercell">Обозначает пропуск при вводе поля, определенного данной спецификацией. Введенное значение не присваивается ни какой переменной.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;lt;Пробел&amp;gt;&lt;/td>&lt;td  class="usercell">Выводится пробел перед положительным числом и знак '-' перед отрицательным.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell"> # &lt;/td>&lt;td  class="usercell">Выводится идентификатор системы счисления для целых:&lt;br />
&lt;ul>&lt;li> 0 перед числом в восьмеричной с/c;
&lt;/li>&lt;li> 0х или 0Х в шеснадцатеричной с/c; 
&lt;/li>&lt;li> ничего для чисел в десятичной с/c.&lt;/li>&lt;/ul>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Ширина (воздействует только на вывод)&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">n&lt;/td>&lt;td  class="usercell">Определяет минимальную ширину поля в &amp;lt;n&amp;gt; символах. Если после преобразозования ширины недостаточно, то выводится столько символов сколько есть, с дополнением пробелами.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">0n&lt;/td>&lt;td  class="usercell">Все тоже, но позиции слева для целого числа дополняются нулям.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*&lt;/td>&lt;td  class="usercell">Число выводимых символов определяется значением соответствующей переменной.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Точность (воздействует только на вывод)&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;lt;ничего&amp;gt;&lt;/td>&lt;td  class="usercell">Точность по умолчанию.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">.0&lt;/td>&lt;td  class="usercell">Для d, i, o, u, x - точность по умолчанию. Для e, E, f - десятичная точка отсутствует.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">.n&lt;/td>&lt;td  class="usercell">Для e, E, f не более &amp;lt;n&amp;gt; знаков после точки.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*&lt;/td>&lt;td  class="usercell">Следующий аргумент из списка аргументов - точность.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Модификатор (воздействует там, где применимо)&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">h&lt;/td>&lt;td  class="usercell">Перед d, i, o, u, x, X аргумент является - short int.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">l&lt;/td>&lt;td  class="usercell">Перед d, i, o, u, x, X аргумент является - long int. Перед e, E, f, g, G аргумент является - double (только для scanf).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">L&lt;/td>&lt;td  class="usercell">Длиное двойной точности.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">F&lt;/td>&lt;td  class="usercell">Указатель (FAR).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">N&lt;/td>&lt;td  class="usercell">Указатель (NEAR).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Поле образец - %[*][ширина] [образец]&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">Определяет множество символов, из которых может состоять вводимая строка. Если в образце стоит символ '^', то вводится будут все символы кроме перечисленных: [a-z],[A-F0-9]; [^0-9]&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Тип переменной: char&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">c&lt;/td>&lt;td  class="usercell">При вводе, читается и передается переменной один байт. При выводе - байт переменной преобразуется к типу char и записуется в выходной поток.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Тип переменной: int&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">d&lt;/td>&lt;td  class="usercell">Десятичное int со знаком.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">i&lt;/td>&lt;td  class="usercell">Десятичное int со знаком.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">o&lt;/td>&lt;td  class="usercell">Восьмеричное int без знака.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">u&lt;/td>&lt;td  class="usercell">Десятичное int без знака.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">x&lt;/td>&lt;td  class="usercell">Шеcтнадцатеричное int без знака (0 - f).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">X&lt;/td>&lt;td  class="usercell">Шестнадцатеричное int без знака (0 - F).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">n&lt;/td>&lt;td  class="usercell">Указатель NEAR (только смещение).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p&lt;/td>&lt;td  class="usercell">Указатель FAR (сегмент[селектор]:смещение).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Тип переменной: float&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">f&lt;/td>&lt;td  class="usercell">Значение со знаком в форме [-]dddd.dddd .&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">e&lt;/td>&lt;td  class="usercell">Значение со знаком в форме [-]d.dddde[+ &amp;#124; -]ddd .&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">E&lt;/td>&lt;td  class="usercell">Значение со знаком в форме [-]d.ddddE[+ &amp;#124; -]ddd .&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">g&lt;/td>&lt;td  class="usercell">Значение со знаком в формате 'e' или 'f' в зависимости от значения и специфицированной точности.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">G&lt;/td>&lt;td  class="usercell">Значение со знаком в формате 'E' или 'F' в зависимости от значения и специфицированной точности.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Тип переменной: char * &lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">s&lt;/td>&lt;td  class="usercell">При вводе принимает символы без преобразования до тех пор, пока не встретится '\n' или пока не достигнута специфицированная точночть. При выводе выдаёт в поток все символы до тех пор пока не встретится '\0' или не достигнута специфицированная точность.&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-43">&lt;/a>&lt;h4>2.2.2 Работа с директориями&lt;/h4>
&lt;strong>chdir, fchdir (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int chdir(const char *path);&lt;/em>&lt;br />
&lt;em>int fchdir(int fd);&lt;/em>&lt;br />
Установка текущей директории &amp;lt;path&amp;gt;, &amp;lt;fd&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>ftw, nftw &amp;lt;ftw.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int ftw(const char *dir, int (*fn)(const char *file, const struct stat *sb, int flag), int depth);&lt;/em>&lt;br />
&lt;em>int nftw(const char *dir, int (*fn)(const char *file, const struct stat *sb, int flag, struct FTW *s), int depth, int flags);&lt;/em>&lt;br />
Перемещается по дереву каталогов, начиная с указанного каталога &amp;lt;dir&amp;gt;. Для каждого найденного элемента дерева вызываются: &amp;lt;fn()&amp;gt; с указанием полного имени этого элемента, указатель на структуру элемента &amp;lt;stat&amp;gt; и целое число. Функция nftw() выполняет то же самое, что и ftw(), только имеет еще один параметр, flags, то есть вызывает свои функции еще с одним параметром. &lt;br />
 &lt;br />
&lt;strong>getcwd (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *getcwd(char *buf, size_t size);&lt;/em>&lt;br />
Копирует абсолютный путь к текущему рабочему каталогу в массив &amp;lt;buf&amp;gt;, имеющий длину &amp;lt;size&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>mkdir (POSIX) &amp;lt;sys/stat.h, sys/types.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int mkdir(const char *pathname, mode_t mode);&lt;/em>&lt;br />
Создаёт каталог &amp;lt;pathname&amp;gt; с режимом &amp;lt;mode&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>opendir, closedir (POSIX) &amp;lt;sys/types.h, dirent.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>DIR *opendir(const char *name);&lt;/em>&lt;br />
&lt;em>int closedir(DIR *dir);&lt;/em>&lt;br />
Открывает/закрывает поток каталога, соответствующий каталогу &amp;lt;name&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>readdir (POSIX) &amp;lt;sys/types.h, dirent.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>struct dirent *readdir(DIR *dir);&lt;/em>&lt;br />
Возвращает указатель &amp;lt;dir&amp;gt; на следующую запись каталога. &lt;br />
 &lt;br />
&lt;strong>rmdir (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int rmdir(const char *pathname);&lt;/em>&lt;br />
Удаляет каталог &amp;lt;pathname&amp;gt;. &lt;a name="h119-44">&lt;/a>&lt;h4>2.2.3 Доступ к файлам&lt;/h4>
&lt;strong>access (POSIX) &amp;lt;unistd&amp;gt;&lt;/strong>&lt;br />
&lt;em>int access(const char *pathname, int mode);&lt;/em>&lt;br />
Проверка, имеет ли процесс &amp;lt;pathname&amp;gt; права &amp;lt;mode&amp;gt; на чтение(R_OK), запись(W_OK), выполнение(X_OK) или существование файла(F_OK). &lt;br />
 &lt;br />
&lt;strong>close (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int close(int fd);&lt;/em>&lt;br />
Закрывает открытый описатель файла &amp;lt;fd&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>creat (POSIX) &amp;lt;sys/types.h, sys/stat.h, fcntl.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int creat(const char *pathname, mode_t mode);&lt;/em>&lt;br />
Создаёт файл &amp;lt;pathname&amp;gt; и возвращает его описатель. &lt;br />
 &lt;br />
&lt;strong>dup, dup2 (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int dup(int oldfd);&lt;/em>&lt;br />
&lt;em>int dup2(int oldfd, int newfd);&lt;/em>&lt;br />
dup - предоставляет новому описателю наименьший свободный номер. dup2 - делает &amp;lt;newfd&amp;gt; копией &amp;lt;oldfd&amp;gt; (если это необходимо), закрывая newfd. &lt;br />
 &lt;br />
&lt;strong>fcntl (POSIX) &amp;lt;unistd.h, fcntl.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fcntl(int fd, int cmd);&lt;/em>&lt;br />
&lt;em>int fcntl(int fd, int cmd, long arg);&lt;/em>&lt;br />
&lt;em>int fcntl(int fd, int cmd, struct flock * lock);&lt;/em>&lt;br />
Выполняет различные операции над файловым описателем fd. &lt;br />
 &lt;br />
&lt;strong>flock (BSD) &amp;lt;sys/file.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int flock(int fd, int operation);&lt;/em>&lt;br />
Устанавливает или снимает &amp;lt;operation&amp;gt; "мягкую" блокировку открытого файла &amp;lt;fd&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>fsync, fdatasync (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fsync(int fd);&lt;/em>&lt;br />
&lt;em>int fdatasync(int fd);&lt;/em>&lt;br />
fsync - копирует все части файла, находящиеся в памяти, на устройство &amp;lt;fd&amp;gt;. fdatasync - тоже что и fsync, но без метаданных. &lt;br />
 &lt;br />
&lt;strong>fileno (ANSI) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fileno(FILE *stream);&lt;/em>&lt;br />
Возвращает описатель &amp;lt;stream&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>lseek (POSIX) &amp;lt;sys/types.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>off_t lseek(int fildes, off_t offset, int whence);&lt;/em>&lt;br />
Устанавливает позицию чтения/записи информации в файле. &lt;br />
 &lt;br />
&lt;strong>mknod (BSD) &amp;lt;sys/types.h, sys/stat.h, fcntl.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int mknod(const char *pathname, mode_t mode, dev_t dev);&lt;/em>&lt;br />
Создаёт файл (обычный файл, файл устройства или именованный канал) &amp;lt;pathname&amp;gt;, с правами доступа &amp;lt;mode&amp;gt; и дополнительной информацией &amp;lt;dev&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>open (POSIX) «sys/types.h, sys/stat.h, fcntl.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int open(const char *pathname, int flags);&lt;/em>&lt;br />
&lt;em>int open(const char *pathname, int flags, mode_t mode);&lt;/em>&lt;br />
Открывает файл &amp;lt;pathname&amp;gt; и возвращает описатель файла. &lt;br />
 &lt;br />
&lt;strong>read, readv (POSIX) &amp;lt;unistd.h, sys/uio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>ssize_t read(int fd, void *buf, size_t count);&lt;/em>&lt;br />
&lt;em>int readv(int fd, const struct iovec * vector, int count);&lt;/em>&lt;br />
Записывает &amp;lt;count&amp;gt; байтов файлового описателя &amp;lt;fd&amp;gt; в буфер &amp;lt;buf&amp;gt; или вектор &amp;lt;vector&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>readlink (BSD) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int readlink(const char *path, char *buf, size_t bufsiz);&lt;/em>&lt;br />
Помещает содержимое символьной ссылки &amp;lt;path&amp;gt; в буфер &amp;lt;buf&amp;gt; длиной &amp;lt;bufsiz&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>remove (ANSI,POSIX) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int remove(const char *pathname);&lt;/em>&lt;br />
Удаляет имя файла и, возможно, сам файл. &lt;br />
 &lt;br />
&lt;strong>rename (ANSI) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int rename(const char *oldpath, const char *newpath);&lt;/em>&lt;br />
Изменяет имя или расположение файла &amp;lt;oldpath&amp;gt; на &amp;lt;newpath&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>select (POSIX) &amp;lt;sys/time.h, sys/types.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);&lt;/em>&lt;br />
&lt;em>int pselect(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, const struct timespec *timeout, sigset_t *sigmask);&lt;/em>&lt;br />
Ждут изменения статуса нескольких файловых описателей в течении &amp;lt;timeout&amp;gt;. n - на единицу больше самого большого номера описателей из всех наборов. Для манипуляции набором существуют 4 макроса: &lt;br />
&lt;ul>&lt;li> FD_ZERO - очищающий набор; 
&lt;/li>&lt;li> FD_SET - Добавляет заданный описатель к набору; 
&lt;/li>&lt;li> FD_CLR - Удаляет описатель из из набора; 
&lt;/li>&lt;li> FD_ISSET - Проверяет, является ли описатель частью набора; &lt;/li>&lt;/ul>
 &lt;br />
&lt;strong>sendfile (*) &amp;lt;sys/sendfile.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);&lt;/em>&lt;br />
Производит чтение данных из &amp;lt;in_fd&amp;gt; по смещению &amp;lt;offset&amp;gt; длиной &amp;lt;count&amp;gt; и запись их в &amp;lt;out_fd&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>write, writev (POSIX) &amp;lt;unistd.h, sys/uio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>ssize_t write(int fd, const void *buf, size_t count);&lt;/em>&lt;br />
&lt;em>int writev(int fd, const struct iovec * vector, int count);&lt;/em>&lt;br />
Записывает &amp;lt;count. байтов из буфера &amp;lt;buf&amp;gt; или вектора &amp;lt;vector&amp;gt; в файл &amp;lt;fd&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>unlink (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int unlink(const char *pathname);&lt;/em>&lt;br />
Удаляет имя файла из файловой системы. Если это имя было последней ссылкой на файл и нет ни одного процесса, которые бы открыли этот файл, то файл удаляется. &lt;br />
 &lt;br />
Таблица 10. &lt;strong>Стандартные потоки ввода-вывода&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;strong>Имя&lt;/strong>&lt;/td>&lt;td  class="usercell">&lt;strong>Назначение&lt;/strong>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">stdin(0)&lt;/td>&lt;td  class="usercell">Стандартный вход;&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">stdout(1)&lt;/td>&lt;td  class="usercell">Стандартный выход (буфериз.);&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">stderr(2)&lt;/td>&lt;td  class="usercell">Стандартный выход ошибок (небуфериз.);&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-45">&lt;/a>&lt;h4>2.2.4 Функции работы с временными файлами&lt;/h4>
&lt;strong>mkstemp (BSD) &amp;lt;stdlib.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int mkstemp(char *template);&lt;/em>&lt;br />
Создает временный файл с уникальным именем определённым &amp;lt;template&amp;gt;. &amp;lt;template&amp;gt; должен иметь в конце символы "XXXXXX". Возвращает описатель fd созданного файла и заполняет XXXXXX, в template, сгенерированными символами. Нуждается в удалении! &lt;br />
 &lt;br />
&lt;strong>mktemp (POSIX) &amp;lt;stdlib.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *mktemp(char *template);&lt;/em>&lt;br />
Создает временный файл с уникальным именем определённым &amp;lt;template&amp;gt;. &amp;lt;template&amp;gt; должен иметь в конце символы "XXXXXX". Возвращает имя созданного файла. &lt;br />
 &lt;br />
&lt;strong>tmpfile (POSIX) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>FILE *tmpfile (void);&lt;/em>&lt;br />
Создает уникальное имя временного файла с помощью префикса пути P_tmpdir, определенного в &amp;lt;stdio.h&amp;gt;. Файл автоматически удаляется при его закрытии или в случае завершения основной программы. &lt;br />
 &lt;a name="h119-46">&lt;/a>&lt;h3>2.3 Функции поддержки переменного числа параметров &amp;lt;stdarg.h&amp;gt;&lt;/h3>
&lt;strong>va_arg (ANSI)&lt;/strong>&lt;br />
&lt;em>type va_arg(va_list arg_ptr, type);&lt;/em>&lt;br />
Значение параметра типа &amp;lt;type&amp;gt; выбирается из стека &amp;lt;arg_ptr&amp;gt;, по одному за каждое обращение к функции. Макрокоманда &amp;lt;va_arg&amp;gt; может использоваться любое число раз для отыскания параметров в списке. &lt;br />
 &lt;br />
&lt;strong>va_end (ANSI)&lt;/strong>&lt;br />
&lt;em>void va_end(va_list arg_ptr);&lt;/em>&lt;br />
Присваивает аргументу-указателю &amp;lt;arg_ptr&amp;gt; значение запрещающее его последующее использование (без повторной инициализации va_start). &lt;br />
 &lt;br />
&lt;strong>va_start (ANSI)&lt;/strong>&lt;br />
&lt;em>void va_start(va_list arg_ptr, prev_param);&lt;/em>&lt;br />
Назначает указателю &amp;lt;arg_ptr&amp;gt; адрес первого параметра в стеке входных параметров &amp;lt;prev_param&amp;gt;. &lt;a name="h119-47">&lt;/a>&lt;h3>2.4 Функции/переменные работы со временем и временными интервалами&lt;/h3>
&lt;strong>alarm (SVr4, SVID, POSIX, X/OPEN, BSD 4.3) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>unsigned int alarm(unsigned int seconds);&lt;/em>&lt;br />
Настраивающая таймер на подачу сигнала ALARM. &lt;br />
&lt;strong>asctime, ctime (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *asctime(const struct tm *timeptr);&lt;/em>&lt;br />
&lt;em>char *ctime(const time_t *timep);&lt;/em>&lt;br />
Преобразует время &amp;lt;timep&amp;gt;, &amp;lt;timeptr&amp;gt; в строку в формате "Wed Jun 30 21:49:08 1993". &lt;br />
&lt;strong>clock_gettime, clock_getres, clock_settime (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int clock_getres(clockid_t clock_id, struct timespec *res);&lt;/em>&lt;br />
&lt;em>int clock_gettime(clockid_t clock_id, struct timespec *tp);&lt;/em>&lt;br />
&lt;em>int clock_settime(clockid_t clock_id, const struct timespec *tp);&lt;/em>&lt;br />
Функции манипуляции системными часами &lt;em>&amp;lt;clock_id&amp;gt;&lt;/em>. В соответствии со стандартом POSIX должны поддерживаться часы: CLOCK_MONOTONIC, CLOCK_MONOTONIC_HR, CLOCK_REALTIME и CLOCK_REALTIME_HR.&lt;br />
 &lt;br />
&lt;strong>daylight (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>extern int daylight;&lt;/em>&lt;br />
Переход на летнее время. &lt;br />
&lt;strong>gmtime, localtime (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>struct tm *gmtime(const time_t *timep);&lt;/em>&lt;br />
&lt;em>struct tm *localtime(const time_t *timep);&lt;/em>&lt;br />
Преобразуют календарное время &amp;lt;timep&amp;gt; во время по Гринвичу и локальное; &lt;br />
&lt;strong>mktime (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>time_t mktime(struct tm *timeptr);&lt;/em>&lt;br />
Преобразует структуру локального представления &amp;lt;timeptr&amp;gt; времени в структуру календарного представления. &lt;br />
&lt;strong>setitimer, getitimer (POSIX.1-2001) &amp;lt;sys/time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue);&lt;/em>&lt;br />
&lt;em>int getitimer(int which, struct itimerval *value);&lt;/em>&lt;br />
Получить и установить значение value интервального таймера &amp;lt;which&amp;gt;. Старое значение таймера сохраняется в &amp;lt;ovalue&amp;gt;. Типы таймеров &amp;lt;which&amp;gt;:&lt;br />
&lt;ul>&lt;li> ITIMER_REAL - декремент в реальном времени(РВ) и вызывает SIGALARM; 
&lt;/li>&lt;li> ITIMER_VIRTUAL - декремент только при выполнении процесса и вызывает SIGVTALRM; 
&lt;/li>&lt;li> ITIMER_PROF - декремент при выполнении процесса и при выполнении системы на защите процесса, вызывает SIGPROF.&lt;/li>&lt;/ul>
&lt;strong>strftime (ANSI) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);&lt;/em>&lt;br />
Форматирует время &amp;lt;tm&amp;gt; в соответствии с указанным форматом &amp;lt;format&amp;gt; и помещает результат в символьный массив &amp;lt;s&amp;gt; размером &amp;lt;max&amp;gt;. &lt;br />
&lt;strong>time (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>time_t time(time_t *t);&lt;/em>&lt;br />
Возвращает/устанавливает текущее время &amp;lt;t&amp;gt; &lt;br />
&lt;strong>timer_create (POSIX) &amp;lt;time.h, signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int timer_create(clockid_t clockid, struct sigevent *restrict evp, timer_t *restrict timerid);&lt;/em>&lt;br />
Создание таймера используя часы &amp;lt;clockid&amp;gt; (CLOCK_REALTIME, CLOCK_MONOTONIC) в соответствии со структурой уведомления &amp;lt;evp&amp;gt;. В результате успешного создания таймера возвращается идентификатор &amp;lt;timerid&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>timer_delete (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int timer_delete(timer_t timerid);&lt;/em>&lt;br />
Удаление таймера ранее созданного функцией timer_create().&lt;br />
&lt;strong>timer_gettime (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int timer_gettime(timer_t timerid, struct itimerspec *value);&lt;/em>&lt;br />
Получение значения таймера, созданного функцией timer_create(), в &amp;lt;value&amp;gt;.&lt;br />
&lt;strong>timer_settime (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
//int timer_settime(timer_t timerid, int flags, const struct itimerspec *restrict value, struct itimerspec *restrict ovalue);&lt;br />
Установка таймера, созданного функцией timer_create(), в значение &amp;lt;value&amp;gt;, предварительно сохранив предыдущее значение в &amp;lt;ovalue&amp;gt;.&lt;br />
&lt;strong>times (POSIX) &amp;lt;sys/times.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>clock_t times(struct tms *buf);&lt;/em>&lt;br />
Возвращает текущие состояние счетчика тиков, а также информации о времени выполнения процесса и его порожденных процессов в &amp;lt;buf&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>timezone (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>long int timezone;&lt;/em>&lt;br />
Содержит разницу, в секундах, между локальным временем и по Гринвичу. &lt;br />
 &lt;br />
&lt;strong>tzname (POSIX) &amp;lt;time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>extern char *tzname[2];&lt;/em>&lt;br />
Имя текущей временной зоны.&lt;br />
 &lt;br />
&lt;strong>sleep, usleep, nanosleep (POSIX) &amp;lt;unistd.h, time.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>unsigned int sleep(unsigned int seconds);&lt;/em>&lt;br />
&lt;em>void usleep(unsigned long usec);&lt;/em>&lt;br />
&lt;em>int nanosleep(const struct timespec *req, struct timespec *rem);&lt;/em>&lt;br />
Функция задаёт интервал паузы: seconds - секунды, usec - микросекунды и req - наносекундах. В rem помещается реально прошедшее время. &lt;a name="h119-48">&lt;/a>&lt;h3>2.5 Функции проверки и преобразования символов &amp;lt;ctype.h, cctype&amp;gt;&lt;/h3>
&lt;strong>isalnum (ANSI)&lt;/strong>&lt;br />
&lt;em>int isalnum(int c);&lt;/em>&lt;br />
Проверяет символ на принадлежность к текстовым символам. &lt;br />
 &lt;br />
&lt;strong>isalpha (ANSI)&lt;/strong>&lt;br />
&lt;em>int isalpha(int c);&lt;/em>&lt;br />
Проверяет символ на принадлежность к алфавитным символам (в стандартном окружении "C"). &lt;br />
 &lt;br />
&lt;strong>isascii (ANSI)&lt;/strong>&lt;br />
&lt;em>int isascii(int c);&lt;/em>&lt;br />
Проверяет, является ли &amp;lt;c&amp;gt; 7-битным unsigned char, значение которого попадает в таблицу символов ASCII. &lt;br />
 &lt;br />
&lt;strong>iscntrl (ANSI)&lt;/strong>&lt;br />
&lt;em>int iscntrl(int c);&lt;/em>&lt;br />
Проверяет, является ли символ управляющим. &lt;br />
 &lt;br />
&lt;strong>isdigit (ANSI)&lt;/strong>&lt;br />
&lt;em>int isdigit(int c);&lt;/em>&lt;br />
Проверяет, является ли символ цифрой. &lt;br />
 &lt;br />
&lt;strong>isgraph (ANSI)&lt;/strong>&lt;br />
&lt;em>int isgraph(int c);&lt;/em>&lt;br />
Проверяет, является ли символ печатаемым (не пробел). &lt;br />
 &lt;br />
&lt;strong>islower (ANSI)&lt;/strong>&lt;br />
&lt;em>int islower(int c);&lt;/em>&lt;br />
Проверяет, является ли символ символом нижнего регистра. &lt;br />
 &lt;br />
&lt;strong>isprint (ANSI)&lt;/strong>&lt;br />
&lt;em>int isprint(int c);&lt;/em>&lt;br />
Проверяет, является ли символ печатаемым (включая пробел). &lt;br />
 &lt;br />
&lt;strong>ispunct (ANSI)&lt;/strong>&lt;br />
&lt;em>int ispunct(int c);&lt;/em>&lt;br />
Проверяет, является ли символ печатаемым (не должен быть пробелом или текстовым символом). &lt;br />
 &lt;br />
&lt;strong>isspace (ANSI)&lt;/strong>&lt;br />
&lt;em>int isspace(int c);&lt;/em>&lt;br />
Проверяет, являются ли символы неотображаемыми. &lt;br />
 &lt;br />
&lt;strong>isupper (ANSI)&lt;/strong>&lt;br />
&lt;em>int isupper(int c);&lt;/em>&lt;br />
Проверяет, расположен ли символ в верхнем регистре. &lt;br />
 &lt;br />
&lt;strong>isxdigit (ANSI)&lt;/strong>&lt;br />
&lt;em>int isxdigit(int c);&lt;/em>&lt;br />
Проверяет, принадлежит ли символ к шестнадцатеричному числу. &lt;br />
 &lt;br />
&lt;strong>toascii (ANSI)&lt;/strong>&lt;br />
&lt;em>int toascii(int c);&lt;/em>&lt;br />
Преобразует &amp;lt;c&amp;gt; в 7-битное значение unsigned char, т.е. превращает его в ASCII-символ посредством "сбрасывания" старшего бита. &lt;br />
 &lt;br />
&lt;strong>toupper, tolower (ANSI)&lt;/strong>&lt;br />
&lt;em>int toupper(int c);&lt;/em>&lt;br />
&lt;em>int tolower(int c);&lt;/em>&lt;br />
Преобразует символ &amp;lt;c&amp;gt; к верхнему или нижнему регистру. &lt;a name="h119-49">&lt;/a>&lt;h3>2.6 Функции работы со строками&lt;/h3>
&lt;strong>atof (POSIX) &amp;lt;stdlib.h, cstdlib&amp;gt;&lt;/strong>&lt;br />
&lt;em>double atof(const char *nptr);&lt;/em>&lt;br />
Преобразует строку &amp;lt;nptr&amp;gt; в вещественное число типа double. &lt;br />
 &lt;br />
&lt;strong>atoi, atol, atoll, atoq (POSIX) &amp;lt;stdlib.h, cstdlib&amp;gt;&lt;/strong>&lt;br />
&lt;em>int atoi(const char *nptr);&lt;/em>&lt;br />
&lt;em>long atol(const char *nptr);&lt;/em>&lt;br />
&lt;em>long long atoll(const char *nptr);&lt;/em>&lt;br />
&lt;em>long long atoq(const char *nptr);&lt;/em>&lt;br />
Преобразуют строку в целое число. &lt;br />
 &lt;br />
&lt;strong>bzero (BSD) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void bzero(void * s ,size_t n );&lt;/em>&lt;br />
Заполняет нулями байты строки. &lt;br />
 &lt;br />
&lt;strong>ecvt, fcvt, gcvt &amp;lt;stdlib.h, cstdlib&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *ecvt(double number, int ndigits, int *decpt, int *sign);&lt;/em>&lt;br />
&lt;em>char *fcvt(double number, int ndigits, int *decpt, int *sign);&lt;/em>&lt;br />
&lt;em>char *gcvt(double number, size_t ndigit, char *buf);&lt;/em>&lt;br />
Преобразует число с плавающей точкой в строку.&lt;br />
 &lt;br />
&lt;strong>strcat, strncat (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strcat(char *dest, const char *src);&lt;/em>&lt;br />
&lt;em>char *strncat(char *dest, const char *src, size_t n);&lt;/em>&lt;br />
Добавляет строку &amp;lt;str&amp;gt; (n символов для strncat) к строке &amp;lt;dest&amp;gt;, перезаписывая символ окончания в конце &amp;lt;dest&amp;gt; и добавляя к строке символ окончания. &lt;br />
 &lt;br />
&lt;strong>strchr,strrchr (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strchr(const char *s, int c);&lt;/em>&lt;br />
&lt;em>char *strrchr(const char *s, int c);&lt;/em>&lt;br />
Определение местонахождения символа в строке. &lt;br />
 &lt;br />
&lt;strong>strcmp, strncmp (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int strcmp(const char *s1, const char *s2);&lt;/em>&lt;br />
&lt;em>int strncmp(const char *s1, const char *s2, size_t n);&lt;/em>&lt;br />
Сравнивает две (n символов для strncmp) строки: s1 и s2. Возвращая целое число, которое меньше, больше нуля или равно ему, если s1 соответственно меньше, больше или равно s2. &lt;br />
 &lt;br />
&lt;strong>strcpy, strncpy (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strcpy(char *dest, const char *src);&lt;/em>&lt;br />
&lt;em>char *strncpy(char *dest, const char *src, size_t n);&lt;/em>&lt;br />
Копирует строку (n символов для strncpy), на которую указывает &amp;lt;src&amp;gt; (включая завершающий символ окончания), в массив, на который указывает &amp;lt;dest&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>strdup, strndup, strdupa, strndupa (BSD) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strdup(const char *s);&lt;/em>&lt;br />
&lt;em>char *strndup(const char *s, size_t n);&lt;/em>&lt;br />
&lt;em>char *strdupa(const char *s);&lt;/em>&lt;br />
&lt;em> char *strndupa(const char *s, size_t n);&lt;/em>&lt;br />
Дублируют строку; &lt;br />
 &lt;br />
&lt;strong>strerror (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strerror(int errnum);&lt;/em>&lt;br />
Возвращает строку с описанием кода ошибки, переданного в аргументе errnum. &lt;br />
 &lt;br />
&lt;strong>strlen (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>size_t strlen(const char *s);&lt;/em>&lt;br />
Вычисляет длину строки &amp;lt;s&amp;gt;. Завершающий символ окончания не учитывается. &lt;br />
 &lt;br />
&lt;strong>strpbrk (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strpbrk(const char *s, const char *accept);&lt;/em>&lt;br />
Ищет первое совпадение в строке &amp;lt;s&amp;gt; с любым символом из строки &amp;lt;accept&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>strspn, strcspn (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>size_t strspn(const char *s, const char *accept);&lt;/em>&lt;br />
&lt;em>size_t strcspn(const char *s, const char *reject);&lt;/em>&lt;br />
поиск набора символов в строке. &lt;br />
 &lt;br />
&lt;strong>strstr &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strstr(const char *haystack, const char *needle);&lt;/em>&lt;br />
Находит первую встретившуюся подстроку &amp;lt;needle&amp;gt; в строке &amp;lt;haystack&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>strtok, strtok_r (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *strtok(char *s, const char *delim);&lt;/em>&lt;br />
&lt;em>char *strtok_r(char *s, const char *delim, char **ptrptr);&lt;/em>&lt;br />
Разбивает строку &amp;lt;s&amp;gt; на "лексемы" логические куски, такие, как слова в строке текста - разделённые символами, содержащимися в &amp;lt;delim&amp;gt;. Последующие вызовы производить с &amp;lt;s&amp;gt; = NULL. &lt;br />
 &lt;br />
&lt;strong>strtod, strtof, strtold (ANSI) &amp;lt;stdlib.h, cstdlib&amp;gt;&lt;/strong>&lt;br />
&lt;em>double strtod(const char *nptr, char **endptr);&lt;/em>&lt;br />
&lt;em>float strtof(const char *nptr, char **endptr);&lt;/em>&lt;br />
&lt;em>long double strtold(const char *nptr, char **endptr);&lt;/em>&lt;br />
Конвертируют строки ASCII в число с плавающей запятой. &lt;br />
 &lt;br />
&lt;strong>strtoul, strtoull (POSIX) &amp;lt;stdlib.h, cstdlib&amp;gt;&lt;/strong>&lt;br />
&lt;em>unsigned long int strtoul(const char *nptr, char **endptr, int base);&lt;/em>&lt;br />
&lt;em>unsigned long long int strtoull(const char *nptr, char **endptr, int base);&lt;/em>&lt;br />
Конвертирует строку в беззнаковое целое число. &lt;br />
 &lt;br />
&lt;strong>strxfrm (BSD) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>size_t strxfrm(char *dest, const char *src, size_t n);&lt;/em>&lt;br />
Преобразует строку &amp;lt;src&amp;gt; в такую форму, что выполнение strcmp() над двумя такими строками, преобразованными посредством strxfrm(), будет таким же, как и выполнение strcoll над исходными строками. &lt;br />
 &lt;a name="h119-50">&lt;/a>&lt;h3>2.7 Потоковая обработка строк &amp;lt;string&amp;gt;&lt;/h3>
Для работы со строками в языке C++ предусмотрен шаблонный класс basic_string из которого определяется класс string:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
typedef&amp;nbsp;basic_string&amp;nbsp;&amp;lt;char&amp;gt;&amp;nbsp;string;&lt;br />typedef&amp;nbsp;basic_string&amp;nbsp;&amp;lt;wchar_t&amp;gt;&amp;nbsp;string;&amp;nbsp;\\для&amp;nbsp;UNICODE&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Примеры инициализации строк: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
string&amp;nbsp;s1("Hello");&amp;nbsp;&amp;nbsp;//Строка&amp;nbsp;"Hello"&lt;br />string&amp;nbsp;s2(8,x);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Восемь&amp;nbsp;символов&amp;nbsp;'x'&lt;br />string&amp;nbsp;month&amp;nbsp;=&amp;nbsp;"March";&amp;nbsp;//Строка&amp;nbsp;"March"&lt;br />s&amp;nbsp;=&amp;nbsp;'n'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//символ&amp;nbsp;'n'&lt;br />cin&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;s;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//вводить&amp;nbsp;в&amp;nbsp;&amp;lt;s&amp;gt;&lt;br />getline(cin,s);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//--//--&lt;br />str1.assign(str2);&lt;br />str1[2]&amp;nbsp;=&amp;nbsp;'r';&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Присвоить&amp;nbsp;'r'&lt;br />string&amp;nbsp;s1(s2+"test");&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Для потоковой обработки строк используются классы: &amp;lt;ostringstream&amp;gt; &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
outstring&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;S1&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;S2&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;S3&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;2&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;3.58;&lt;br />cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;outstring.str();&lt;br />instring&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;S1&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;S2&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;i;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-51">&lt;/a>&lt;h4>2.7.1 Функции&lt;/h4>
&lt;strong>operator==, !=, &amp;gt;, &amp;lt;, &amp;gt;=, &amp;lt;=&lt;/strong>&lt;br />
Операторы сравнения строк. &lt;br />
 &lt;br />
&lt;strong>assign&lt;/strong>&lt;br />
&lt;em>basic_string&amp; assign (const basic_string&amp; str, size_type pos = 0, size_type n = npos);&lt;/em>&lt;br />
&lt;em>basic_string&amp; assign (const charT* s, size_type n);&lt;/em>&lt;br />
&lt;em>basic_string&amp; assign (const charT* s);&lt;/em>&lt;br />
&lt;em>basic_string&amp; assign (size_type n, charT c);&lt;/em>&lt;br />
Создаёт новую строку из участка старой. &lt;br />
 &lt;br />
&lt;strong>append&lt;/strong>&lt;br />
&lt;em>basic_string&amp; append(const basic_string&amp; str, size_type pos = 0, size_type n = npos);&lt;/em>&lt;br />
&lt;em>basic_string&amp; append (const charT* s, size_type n);&lt;/em>&lt;br />
&lt;em>basic_string&amp; append (const charT* s);&lt;/em>&lt;br />
&lt;em>basic_string&amp; append (size_type n, charT c);&lt;/em>&lt;br />
&lt;em>basic_string&amp; append(InputIterator first, InputIterator last);&lt;/em>&lt;br />
Добавление к строке. &lt;br />
 &lt;br />
&lt;strong>at&lt;/strong>&lt;br />
&lt;em>reference at(size_type pos);&lt;/em>&lt;br />
&lt;em>const_reference at(size_type pos) const;&lt;/em>&lt;br />
Получить символ по с индексом &amp;lt;POS&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>begin, end&lt;/strong>&lt;br />
&lt;em>iterator begin ();&lt;/em>&lt;br />
&lt;em>iterator end ();&lt;/em>&lt;br />
Возвращает итератор; &lt;br />
 &lt;br />
&lt;strong>capacity&lt;/strong>&lt;br />
&lt;em>size_type capacity() const;&lt;/em>&lt;br />
Максимальный размер строки без увеличения памяти под строку. &lt;br />
 &lt;br />
&lt;strong>compare&lt;/strong>&lt;br />
&lt;em>int compare (const basic_string&amp; str, size_type pos = 0, size_type n = npos) const;&lt;/em>&lt;br />
&lt;em>int compare (const charT* s, size_type pos, size_type n) const;&lt;/em>&lt;br />
&lt;em>int compare (const charT* s, size_type pos = 0) const;&lt;/em>&lt;br />
Сравнение строк. &lt;br />
 &lt;br />
&lt;strong>copy&lt;/strong>&lt;br />
&lt;em>size_type copy (charT* s, size_type n, size_type pos = 0) const;&lt;/em>&lt;br />
Копировать строку в адрес определённый указателем. &lt;br />
 &lt;br />
&lt;strong>с_str&lt;/strong>&lt;br />
&lt;em>const charT* c_str() const;&lt;/em>&lt;br />
Возвращает указатель на строку с нулём в конце. &lt;br />
 &lt;br />
&lt;strong>data&lt;/strong>&lt;br />
&lt;em>charT* data()&lt;/em>&lt;br />
Возвращает указатель на строку без нуля в конце. &lt;br />
 &lt;br />
&lt;strong>empty&lt;/strong>&lt;br />
&lt;em>bool empty() const;&lt;/em>&lt;br />
Проверка строки на пустоту. &lt;br />
 &lt;br />
&lt;strong>erase&lt;/strong>&lt;br />
&lt;em>basic_string&amp; erase(size_type pos = 0, size_type n = npos);&lt;/em>&lt;br />
&lt;em>iterator erase(iterator p);&lt;/em>&lt;br />
&lt;em>iterator erase(iterator f, iterator l);&lt;/em>&lt;br />
Удаление всех символов начиная от указанной позиции. &lt;br />
 &lt;br />
&lt;strong>begin, end&lt;/strong>&lt;br />
&lt;em>iterator begin();&lt;/em>&lt;br />
&lt;em>iterator end();&lt;/em>&lt;br />
Получение начального/конечного итератора. &lt;br />
 &lt;br />
&lt;strong>find, rfind&lt;/strong>&lt;br />
&lt;em>size_type find(const basic_string&amp; str, size_type pos = 0) const;&lt;/em>&lt;br />
&lt;em>size_type rfind(const basic_string&amp; str, size_type pos = npos) const;&lt;/em>&lt;br />
Поиск сначала/конца строки. &lt;br />
 &lt;br />
&lt;strong>find_first_of, find_last_of&lt;/strong>&lt;br />
&lt;em>size_type find_first_of(const basic_string&amp; str, size_type pos = 0) const;&lt;/em>&lt;br />
&lt;em>size_type find_last_of (const basic_string&amp; str, size_type pos = npos) const;&lt;/em>&lt;br />
Поиск сначала/конца строки одного из перечисленных символов. &lt;br />
 &lt;br />
&lt;strong>find_first_not_of, find_last_not_of&lt;/strong>&lt;br />
&lt;em>size_type find_first_not_of(const basic_string&amp; str, size_type pos = 0) const;&lt;/em>&lt;br />
&lt;em>size_type find_last_not_of (const basic_string&amp; str, size_type pos = npos) const;&lt;/em>&lt;br />
Поиск сначала/конца первого символа отсутствующего в списке. &lt;br />
 &lt;br />
&lt;strong>insert&lt;/strong>&lt;br />
&lt;em>basic_string&amp; insert(size_type pos1, const basic_string&amp; str, size_type pos2 = 0, size_type n = npos);&lt;/em>&lt;br />
Вставка в строку части другой строки. &lt;br />
 &lt;br />
&lt;strong>length, size&lt;/strong>&lt;br />
&lt;em>size_type length() const;&lt;/em>&lt;br />
&lt;em>size_type size() const;&lt;/em>&lt;br />
Длина строки. &lt;br />
 &lt;br />
&lt;strong>max_size&lt;/strong>&lt;br />
&lt;em>size_type max_size() const;&lt;/em>&lt;br />
Максимальная длина строки. &lt;br />
 &lt;br />
&lt;strong>replace&lt;/strong>&lt;br />
&lt;em>basic_string&amp; replace(size_type pos1, size_type n1, const basic_string&amp; str, size_type pos2 = 0, size_type n2 = npos);&lt;/em>&lt;br />
Заменить участок строки. &lt;br />
 &lt;br />
&lt;strong>resize&lt;/strong>&lt;br />
&lt;em>void resize (size_type n, charT c);&lt;/em>&lt;br />
&lt;em>void resize (size_type n);&lt;/em>&lt;br />
Изменить длину строки. &lt;br />
 &lt;br />
&lt;strong>substr&lt;/strong>&lt;br />
&lt;em>basic_string substr(size_type pos = 0, size_type n = npos) const;&lt;/em>&lt;br />
Получение части строки; &lt;br />
 &lt;br />
&lt;strong>swap&lt;/strong>&lt;br />
&lt;em>void swap (basic_string &amp;s)&lt;/em>&lt;br />
Перестановка строк. &lt;a name="h119-52">&lt;/a>&lt;h3>2.8 Стандартная библиотека шаблонов (STL)&lt;/h3>
STL представляет собой большую библиотеку шаблонов включающую в себя три ключевых компонента: контейнеры, итераторы, алгоритмы. Кроме того, STL является расширяемой библиотекой. STL избегает операторов new и delete и использует распределители памяти(allocators) для выделения и высвобождения памяти. Существует возможность создавать пользовательские распределители памяти. Типы исключений в STL: &lt;br />
&lt;ul>&lt;li> out_of_range - индекс находится вне диапазона;
&lt;/li>&lt;li> invalid_argument - передача недопустимого аргумента функции;
&lt;/li>&lt;li> length_error - создание слишком длинного контейнера;
&lt;/li>&lt;li> bad_alloc - неудачная попытка выделения области памяти.&lt;/li>&lt;/ul>&lt;a name="h119-53">&lt;/a>&lt;h4>2.8.1 Контейнеры&lt;/h4>
Контейнеры делятся на три основных категории: контейнеры последовательностей, ассоциативные контейнеры и адаптеры контейнеров. Контейнеры последовательностей (sequence containers) и Ассоциативные контейнеры имеют общее название - контейнеры первого класса (first-class containers). Существует ещё четыре типа контейнеров, которые считаются "почти контейнерами" ("near-containers") - С-подобные массивы, string, bitset и valarray.&lt;br />
 &lt;br />
Контейнерные заголовочные файлы стандартной библиотеки: &lt;br />
&lt;ul>&lt;li> &amp;lt;vector&amp;gt;
&lt;/li>&lt;li> &amp;lt;list&amp;gt;
&lt;/li>&lt;li> &amp;lt;deque&amp;gt;
&lt;/li>&lt;li> &amp;lt;queue&amp;gt; - cодержит как queue, так и priority_queue;
&lt;/li>&lt;li> &amp;lt;stack&amp;gt; 
&lt;/li>&lt;li> &amp;lt;map&amp;gt; - Содержит как map, так и multimap;
&lt;/li>&lt;li> &amp;lt;set&amp;gt; - Содержит как set, так и multiset;
&lt;/li>&lt;li> &amp;lt;bitset&amp;gt;&lt;/li>&lt;/ul>
Общие имена типа &lt;strong>typedef&lt;/strong> имеющиеся в контейнерах первого класса:&lt;br />
&lt;ul>&lt;li> value_type - тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> reference - ссылка на тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> const_reference - ссылка-константа на тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> pointer - указатель на тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> iterator - итератор; указывает на тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> const_iterator - констатный итератор; указывает на тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> reverse_iterator - обратный итератор; указывает на тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> const_reverse_iterator - константный обратный итератор, который указывает на тип элемента, хранимого в контейнере;
&lt;/li>&lt;li> difference_type - тип результата вычитания двух итераторов, которые ссылаются на один и тот же контейнер;
&lt;/li>&lt;li> size_type - тип, используемый для подсчёта элементов в контейнере и для индексации в контейнере последовательности.&lt;/li>&lt;/ul>
Таблица 11. &lt;strong>Контейнерные классы STL&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Имя&lt;/strong>&lt;/div>&lt;/td>&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Назначение&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Тип итератора&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;strong>Контейнеры последовательностей&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">vector&lt;/td>&lt;td class="usercell">Быстрые вставки и удаление в конец контейнера, прямой доступ к любому элементу.&lt;/td>&lt;td  class="usercell">произв. доступ&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">deque&lt;/td>&lt;td class="usercell">Быстрые вставки и удаления в начало и конец контейнера, прямой доступ к любому элементу.&lt;/td>&lt;td  class="usercell">произв. доступ&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">list&lt;/td>&lt;td class="usercell">Двухсвязный список, быстрая вставка и удаление элементов везде.&lt;/td>&lt;td  class="usercell">двунапр.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;strong>Ассоциативные контейнеры&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">set&lt;/td>&lt;td class="usercell">Быстрый поиск, дубликаты (одинаковые ключи)не допускаются.&lt;/td>&lt;td  class="usercell">двунапр.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">multiset&lt;/td>&lt;td class="usercell">Быстрый поиск, допускаются дубликаты.&lt;/td>&lt;td  class="usercell">двунапр.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">map&lt;/td>&lt;td class="usercell">Взаимно однозначное соответствие, дубликаты не допускаются, быстрый поиск значения по ключу.&lt;/td>&lt;td  class="usercell">двунапр.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">multimap&lt;/td>&lt;td class="usercell">Соответствие "один ко многим", дублирование ключей допускается, быстрый поиск значения по ключу.&lt;/td>&lt;td  class="usercell">двунапр.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="3">&lt;div style="float:center; text-align:center">&lt;strong>Адаптеры контейнеров&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">stack&lt;/td>&lt;td class="usercell">"Последним пришел, первым вышел" (LIFO)&lt;/td>&lt;td  class="usercell">не поддерж.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">queue&lt;/td>&lt;td class="usercell">"Первым пришел, первым вышел" (FIFO)&lt;/td>&lt;td  class="usercell">не поддерж.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">priority_ queue&lt;/td>&lt;td class="usercell">Элемент с наивысшим приоритетом всегда достигает выхода из очереди первым.&lt;/td>&lt;td  class="usercell">не поддерж.&lt;/td>&lt;/tr>
&lt;/table>
Таблица 12. &lt;strong>Общие для всех STL-контейнеров функции&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Имя&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Назначение&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">default constructor&lt;/td>&lt;td  class="usercell">Конструктор для обеспечения инициализации по умолчанию.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">copy constructor&lt;/td>&lt;td  class="usercell">Конструктор, который инициализирует контейнер в качестве копии существующего контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">destructor&lt;/td>&lt;td  class="usercell">Деструктор контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">empty&lt;/td>&lt;td  class="usercell">Проверка контейнера на пустоту.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">max_size&lt;/td>&lt;td  class="usercell">Возвращает максимальное число элементов в контейнере.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">size&lt;/td>&lt;td  class="usercell">Возвращает число элементов в контейнере.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">=&lt;/td>&lt;td  class="usercell">Присваивает один контейнер другому.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">&amp;lt;, &amp;lt;=, &amp;gt;, &amp;gt;=, ==, !=&lt;/td>&lt;td  class="usercell">Сравнивает два контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">swap&lt;/td>&lt;td  class="usercell">Поменять местами элементы двух контейнеров.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Только в контейнерах первого класса&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">begin&lt;/td>&lt;td  class="usercell">Возвращает iterator, либо const_iterator который ссылается на первый элемент контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">end&lt;/td>&lt;td  class="usercell">Возвращает iterator, либо const_iterator который ссылается на последний элемент контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">rbegin&lt;/td>&lt;td  class="usercell">Возвращает reverse_iterator, либо const_reverse_iterator который ссылается на последний элемент контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">rend&lt;/td>&lt;td  class="usercell">Возвращает reverse_iterator, либо const_reverse_iterator который ссылается на позицию перед первым элементом контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">erase&lt;/td>&lt;td  class="usercell">Удаляет один или несколько элементов из контейнера.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">clear&lt;/td>&lt;td  class="usercell">Удаляет все элементы из контейнера.&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-54">&lt;/a>&lt;h5>Контейнеры последовательностей&lt;/h5>
Классы &lt;strong>vector&lt;/strong> и &lt;strong>deque&lt;/strong> реализованы на базе массивов. Класс &lt;strong>list&lt;/strong> реализует связанный список. Дополнительные операции характерные для контейнеров последовательностей: &lt;br />
&lt;strong>front&lt;/strong>&lt;br />
&lt;em>front();&lt;/em>&lt;br />
Возвращает ссылку на первый элемент в контейнере. &lt;br />
 &lt;br />
&lt;strong>back&lt;/strong>&lt;br />
&lt;em>back();&lt;/em>&lt;br />
Возвращает ссылку на последний элемент в контейнере. &lt;br />
 &lt;br />
&lt;strong>push_back&lt;/strong>&lt;br />
&lt;em>push_back();&lt;/em>&lt;br />
Вставляет новый элемент в конец контейнера. &lt;br />
 &lt;br />
&lt;strong>pop_back&lt;/strong>&lt;br />
&lt;em>pop_back();&lt;/em>&lt;br />
Выталкивает последний элемент контейнера. &lt;br />
 &lt;br />
 &lt;br />
Контейнер &lt;strong>vector&lt;/strong> обеспечивает структуру данных непрерывной областью памяти. Это позволяет обеспечивает эффективный прямой доступ к любому элементу контейнера &lt;strong>vector&lt;/strong> посредством операции индексирования []. Все алгоритмы STL могут работать с контейнером &lt;strong>vector&lt;/strong>. Итераторы для &lt;strong>vector&lt;/strong> обычно реализуются как указатели на элементы контейнера &lt;strong>vector&lt;/strong>.&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
std::vector&amp;lt;int&amp;gt;&amp;nbsp;v;&lt;br />v.push_back(2);&lt;br />cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"\nРазмер&amp;nbsp;вектора&amp;nbsp;v:&amp;nbsp;"&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;v.size();&lt;br />std::vector&amp;lt;int&amp;gt;::const_iterator&amp;nbsp;p1;&lt;br />for(p1&amp;nbsp;=&amp;nbsp;v.begin();&amp;nbsp;p1&amp;nbsp;!=&amp;nbsp;v.end();&amp;nbsp;p1++)&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;*p1&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'&amp;nbsp;';&lt;br />std::vector&amp;lt;int&amp;gt;::reverse_iterator&amp;nbsp;p2;&lt;br />for(p2&amp;nbsp;=&amp;nbsp;v.rbegin();&amp;nbsp;p2&amp;nbsp;!=&amp;nbsp;v.rend();&amp;nbsp;++p2)&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;*p2&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'&amp;nbsp;';&lt;br />int&amp;nbsp;a[&amp;nbsp;6&amp;nbsp;]&amp;nbsp;=&amp;nbsp;{&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;4,&amp;nbsp;5,&amp;nbsp;6&amp;nbsp;};&lt;br />std::vector&amp;lt;int&amp;gt;&amp;nbsp;v1(a,&amp;nbsp;a+6);&lt;br />std::ostream_iterator&amp;lt;int&amp;gt;&amp;nbsp;output(cout,"&amp;nbsp;");&lt;br />std::copy(v1.begin(),&amp;nbsp;v1.end(),&amp;nbsp;out);&amp;nbsp;//печать&amp;nbsp;вектора&lt;br />try&lt;br />{&lt;br />&amp;nbsp;&amp;nbsp;v1.at(100)&amp;nbsp;=&amp;nbsp;777;&amp;nbsp;&amp;nbsp;&amp;nbsp;//доступ&amp;nbsp;вне&amp;nbsp;массива&lt;br />}&amp;nbsp;&lt;br />catch(std::out_of_range&amp;nbsp;e)&lt;br />{&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"\nИсключение"&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;e.what();&amp;nbsp;}&lt;br />v1.erase(v.begin());&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
Контейнер &lt;strong>list&lt;/strong> предоставляет эффективную реализацию операции вставки и удаления в любую позицию контейнера. Класс &lt;strong>list&lt;/strong> реализуется как двухсвязный список, то есть каждый узел в &lt;strong>list&lt;/strong> содержит указатель на предыдущий и на следующий узел. Любой алгоритм, который требует итераторов для чтения и для записи, прямых и двунаправленных итераторов, может выполняться с &lt;strong>list&lt;/strong>. Дополнительные функции класса &lt;strong>list&lt;/strong>:&lt;br />
&lt;strong>inplace_merge&lt;/strong>&lt;br />
&lt;em>void inplace_merge(_BidirectionalIter first, _BidirectionalIter middle, _BidirectionalIter last, _Compare comp);&lt;/em>&lt;br />
Объединяет две возростающие последовательности в одном и том же контейнере. &lt;br />
 &lt;br />
&lt;strong>splice&lt;/strong>&lt;br />
&lt;em>splice();&lt;/em>&lt;br />
Вырезает элементы из одного контейнера и помещает их в другой. &lt;br />
 &lt;br />
&lt;strong>push_front&lt;/strong>&lt;br />
&lt;em>push_front();&lt;/em>&lt;br />
Вставить элемент в начало контейнера.&lt;br />
 &lt;br />
&lt;strong>pop_front&lt;/strong>&lt;br />
&lt;em>pop_front();&lt;/em>&lt;br />
Вытолкнуть элемент с начала контейнера.&lt;br />
 &lt;br />
&lt;strong>remove&lt;/strong>&lt;br />
&lt;em>remove();&lt;/em>&lt;br />
Удалить элемент из начала контейнера.&lt;br />
 &lt;br />
&lt;strong>merge&lt;/strong>&lt;br />
&lt;em>_OutputIter merge(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result)&lt;/em>&lt;br />
Объединяет две возростающие последовательности в одну. &lt;br />
 &lt;br />
&lt;strong>sort&lt;/strong>&lt;br />
&lt;em>void sort(_RandomAccessIter first, _RandomAccessIter last);&lt;/em>&lt;br />
Сортировка элементов в возрастающем порядке. &lt;br />
 &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
std::list&amp;lt;int&amp;gt;&amp;nbsp;Values,&amp;nbsp;otherValues;&lt;br />Values.push_front(1);&lt;br />Values.push_back(2);&lt;br />values.sort();&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
Контейнер &lt;strong>deque&lt;/strong> объединяет многие возможности классов &lt;strong>vector&lt;/strong> и &lt;strong>list&lt;/strong>. Реализуется на основе очереди с двумя концами и обеспечивает эффективный индексный доступ с эффективной операцией вставки в начало и конец контейнера. Класс &lt;strong>deque&lt;/strong> обеспечивает поддержку итераторов произвольного доступа. Наиболее часто &lt;strong>deque&lt;/strong> используется в качестве очереди FIFO.&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
std::deque&amp;lt;double&amp;gt;&amp;nbsp;values;&lt;br />std::ostream_iterator&amp;lt;double&amp;gt;&amp;nbsp;output(cout,"&amp;nbsp;");&lt;br />values.push_front(2.2);&lt;br />values.push_back(1.1);&lt;br />for(int&amp;nbsp;i=0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;values.size();&amp;nbsp;++i)&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;values[i]&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'&amp;nbsp;';&lt;br />values.pop_front();&lt;br />values[1]=5.4;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-55">&lt;/a>&lt;h5>Ассоциативные контейнеры&lt;/h5>
Ассоциативные контейнеры STL предназначены для обеспечения прямого доступа с целью сохранения и выборки элементов с помощью ключей (ключи поиска). Имеется четыре ассоциативных контейнера: multiset, set, multimap, map. В каждом контейнере ключи сохраняются упорядоченными. Ассоциативные контейнеры поддерживают дополнительные функции:&lt;br />
&lt;strong>equal_range&lt;/strong>&lt;br />
&lt;em>pair&amp;lt;_ForwardIter, _ForwardIter&amp;gt; equal_range(_ForwardIter first, _ForwardIter last, const _Tp&amp; val);&lt;/em>&lt;br />
Возвращает пару прямых итераторов, содержащих результаты lower_bound и upper_bound. &lt;br />
 &lt;br />
&lt;strong>find&lt;/strong>&lt;br />
&lt;em>find();&lt;/em>&lt;br />
Поиск ключа. &lt;br />
 &lt;br />
&lt;strong>lower_bound&lt;/strong>&lt;br />
&lt;em>_ForwardIter &amp;#95;&amp;#95;lower_bound(_ForwardIter first, _ForwardIter last, const _Tp&amp; val, _Distance*)&lt;/em>&lt;br />
Определения позиции первого вхождения указанного ключа. &lt;br />
 &lt;br />
&lt;strong>upper_bound&lt;/strong>&lt;br />
&lt;em>_ForwardIter upper_bound(_ForwardIter first, _ForwardIter last, const _Tp&amp; val)&lt;/em>&lt;br />
Определения позиции за последним вхождением указанного ключа. &lt;br />
 &lt;br />
&lt;strong>count&lt;/strong>&lt;br />
&lt;em>count();&lt;/em>&lt;br />
Возвращает количество указанных ключей в контейнере. &lt;br />
 &lt;br />
 &lt;br />
Контейнеры &lt;strong>multiset&lt;/strong> и &lt;strong>set&lt;/strong> используются для быстрого сохранение и выборки ключей. Контейнер multiset допускает использование одинаковых ключей. Упорядочение элементов определяется компараторным объектом-функцией. Контейнеры поддерживает двунаправленные итераторы (но не итераторы произвольного доступа).&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
int&amp;nbsp;a[10]&amp;nbsp;=&amp;nbsp;{7,22,9,1,18,30,100,22,85,13};&lt;br />typedef&amp;nbsp;std::multiset&amp;lt;int,&amp;nbsp;std::&amp;lt;int&amp;gt;&amp;nbsp;&amp;gt;&amp;nbsp;ims;&lt;br />ims&amp;nbsp;intMultiset;&lt;br />std::ostream_iterator&amp;lt;int&amp;gt;&amp;nbsp;output(cout,&amp;nbsp;"&amp;nbsp;");&lt;br />intMultiset.insert(15);&lt;br />result=intMultiset.find(20);&lt;br />if&amp;nbsp;(&amp;nbsp;result&amp;nbsp;!=&amp;nbsp;intMultiset.end()&amp;nbsp;)&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"Найдено&amp;nbsp;значение";&lt;br />intMultiset.insert(a,&amp;nbsp;a+10);&lt;br />std::copy(intMultiset.begin(),intMultiset.end(),&amp;nbsp;output);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Контейнеры &lt;strong>multimap&lt;/strong> и &lt;strong>map&lt;/strong> используются для быстрого сохранения и нахождения ключей и ассоциированных значений (пара ключ/значение). При вставке в эти контейнеры используется объект pair. Контейнер &lt;strong>multimap&lt;/strong> позволяет ассоциировать несколько значений с одним ключем. Упорядочение элементов определяется компараторным объектом-функцией. Контейнеры поддерживает двунаправленные итераторы (но не итераторы произвольного доступа). &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
typedef&amp;nbsp;std::multimap&amp;lt;int,&amp;nbsp;double,&amp;nbsp;std::less&amp;lt;int&amp;gt;&amp;nbsp;&amp;gt;&amp;nbsp;mmid;&lt;br />mmid&amp;nbsp;pairs;&lt;br />pairs.insert(mmid::value_type(15,&amp;nbsp;2.7)&amp;nbsp;);&lt;br />for(mmid::const_iterator&amp;nbsp;iter&amp;nbsp;=&amp;nbsp;pairs.begin();&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iter&amp;nbsp;!=&amp;nbsp;pairs.end();&amp;nbsp;++iter)&lt;br />&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;iter-&amp;gt;first&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'\t'&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;iter-&amp;gt;second&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;'\n';&lt;br />pairs[25]=45.65;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-56">&lt;/a>&lt;h5>Адаптеры контейнеров&lt;/h5>
STL предоставляет три адаптера контейнера - stack, queue, priority_queue. Адаптеры не являются контейнерами первого класса, поскольку они не предоставляют реализации фактической структуры данных в которой могут сохраняться элементы, и поскольку адаптеры не поддерживают итераторы. Все три класса адаптеров предоставляют функции-члены push и pop, которые реализуют соответствующий метод вставки элемента. &lt;br />
Адаптер stack обеспечивает структуру LIFO и может быть реализован с любым из контейнеров последовательности. Адаптер queue обеспечивает структуру FIFO и может быть реализован с контейнерами list и deque. Адаптер priority_queue обеспечивает очередь в которой наиболее приоритетное значение всегда будет удаляться первым. priority_queue может быть реализован с контейнерами vector и deque. Сравнение элементов выполняется с помощью функции-объекта less&amp;lt;T&amp;gt;. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
std::stack&amp;lt;int&amp;gt;&amp;nbsp;intDequeStack;&lt;br />std::stack&amp;lt;int,&amp;nbsp;std::vector&amp;lt;int&amp;gt;&amp;nbsp;&amp;gt;&amp;nbsp;intVectorStack;&lt;br />std::stack&amp;lt;int,&amp;nbsp;std::list&amp;lt;int&amp;gt;&amp;nbsp;&amp;gt;&amp;nbsp;intListStack;&lt;br />intDequeStack.push(23);&lt;br />intVectorStack.push(23);&lt;br />intListStack.push(34);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;a name="h119-57">&lt;/a>&lt;h4>2.8.2 Итераторы&lt;/h4>
Итераторы схожи с указателями и используются для указания на элементы контейнеров первого класса. STL контейнеры первого класса предоставляют функции-члены begin() и end(), которые возвращают итератор указывающий соответственно на первый и последний элемент контейнера. Если итератор i указывает на определённый элемент, то ++i указывает на "следующий" элемент, а *i ссылается на элемент, на который указывает i. Итератор, полученый из функции end(), может использоваться в сравнении на равенство и неравенство для определения окончания "движущегося итератора". Для ссылки на элемент контейнера используется объект типа iterator или const_iterator. &lt;br />
 &lt;br />
Таблица 13. &lt;strong>Операции с итераторами для каждого типа итератора&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Имя&lt;/strong>&lt;/div>&lt;/td>&lt;td  class="usercell">&lt;div style="float:center; text-align:center">&lt;strong>Назначение&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Все итераторы&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">++p&lt;/td>&lt;td  class="usercell">Преинкримент итератора&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p++&lt;/td>&lt;td  class="usercell">Постинкримент итератора&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Итераторы ввода&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*p&lt;/td>&lt;td  class="usercell">Разыменование итератора&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p=p1&lt;/td>&lt;td  class="usercell">Присвоение итератора итератору&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p==p1&lt;/td>&lt;td  class="usercell">Сравнение итераторов на равенство&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p!=p1&lt;/td>&lt;td  class="usercell">Сравнение итераторов на неравенство&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Итераторы вывода&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*p&lt;/td>&lt;td  class="usercell">Разыменование итератора&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p=p1&lt;/td>&lt;td  class="usercell">Присвоение итератора итератору&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Однонаправленные итераторы&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">*&lt;/td>&lt;td  class="usercell">Обеспечивают все функциональные возможности итераторов ввода и вывода&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Двунаправленные итераторы&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">-p&lt;/td>&lt;td  class="usercell">Предекремент итератора&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p-&lt;/td>&lt;td  class="usercell">Постдекремент итератора&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell" colspan="2">&lt;div style="float:center; text-align:center">&lt;strong>Итераторы с произвольным доступом&lt;/strong>&lt;/div>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p+=i&lt;/td>&lt;td  class="usercell">Инкремент итератора p на i позиций&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p-=i&lt;/td>&lt;td  class="usercell">Декремент итератора p на i позиций&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p+i&lt;/td>&lt;td  class="usercell">Итератор помещается на позицию p+i&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p-i&lt;/td>&lt;td  class="usercell">Итератор помещается на позицию p-i&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p[i]&lt;/td>&lt;td  class="usercell">Возвращение ссылку на элемент, смещённый от p на i позиций&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">p&amp;lt;p1, p&amp;lt;=p1, p&amp;gt;p1, p&amp;gt;=p1&lt;/td>&lt;td  class="usercell">Сравнение итераторов&lt;/td>&lt;/tr>
&lt;/table>
Категории итераторов: &lt;br />
&lt;ul>&lt;li> input - Используется для чтения элементов из контейнера. Итератор для чтения может перемещаться только по направлению вперёд и поддерживает только однопроходные алгоритмы.
&lt;/li>&lt;li> output - Используется для записи элемента в контейнер. Итератор для записи может перемещаться только по направлению вперёд и поддерживает только однопроходные алгоритмы.
&lt;/li>&lt;li> forward - Объединяет возможности итераторов для чтения и для записи и сохраняет их позицию в контейнере.
&lt;/li>&lt;li> bidirectional - Объединяет возможности однонаправленного итератора с возможностью перемещаться в обратном направлении.
&lt;/li>&lt;li> random access - Объединяет возможности двунаправленного итератора с возможностью прямого доступа к любому элементу контейнера.&lt;/li>&lt;/ul>
Категория итератора, поддерживаемая каждым контейнером, определяет, может ли этот контейнер использоваться со специфическими алгоритмами в STL.&lt;a name="h119-58">&lt;/a>&lt;h4>2.8.3 Алгоритмы&lt;/h4>
Контейнеры инкапсулируют некоторые базовые операции, но STL-алгоритмы реализуются независимо от контейнеров. Алгоритмы оперируют элементами контейнеров только с помощью итераторов. Можно создавать собственные алгоритмы.&lt;a name="h119-59">&lt;/a>&lt;h5>Алгоритмы, модифицирующие последовательности&lt;/h5>
&lt;strong>copy&lt;/strong>&lt;br />
&lt;em>copy();&lt;/em>&lt;br />
Копирование.&lt;br />
 &lt;br />
&lt;strong>copy_backward&lt;/strong>&lt;br />
&lt;em>_BidirectionalIter2 &amp;#95;&amp;#95;copy_backward(_BidirectionalIter1 first, _BidirectionalIter1 last, _BidirectionalIter2 result, bidirectional_iterator_tag, _Distance*)&lt;/em>&lt;br />
Обратное копирование части одного контейнера в другой контейнер. &lt;br />
 &lt;br />
&lt;strong>fill&lt;/strong>&lt;br />
&lt;em>void fill(_ForwardIter first, _ForwardIter last, const _Tp&amp; value);&lt;/em>&lt;br />
Заполняет все элементы контейнера значением &amp;lt;value&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>fill_n&lt;/strong>&lt;br />
&lt;em>_OutputIter fill_n(_OutputIter first, _Size n, const _Tp&amp; value);&lt;/em>&lt;br />
Заполняет указанные элементы контейнера значением &amp;lt;value&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>generate&lt;/strong>&lt;br />
&lt;em>void generate(_ForwardIter first, _ForwardIter last, _Generator gen)&lt;/em>&lt;br />
Заполняет все элементы контейнера значением возвращаемым функцией &amp;lt;gen&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>generate_n&lt;/strong>&lt;br />
&lt;em>generate_n();&lt;/em>&lt;br />
Заполняет указанные элементы контейнера значением возвращаемым функцией &amp;lt;gen&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>iter_swap&lt;/strong>&lt;br />
&lt;em>void iter_swap(_ForwardIter1 a, _ForwardIter2 b);&lt;/em>&lt;br />
Перестановка значений контейнера (по ссылке). &lt;br />
 &lt;br />
&lt;strong>includes&lt;/strong>&lt;br />
&lt;em>bool includes(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2);&lt;/em>&lt;br />
Проверяет находятся ли элементы второго множества в первом. &lt;br />
 &lt;br />
&lt;strong>next_permutation&lt;/strong>&lt;br />
&lt;em>bool next_permutation(_BidirectionalIter first, _BidirectionalIter last);&lt;/em>&lt;br />
Следующая перестановка в лексикографическом порядке. &lt;br />
 &lt;br />
&lt;strong>prev_permutation&lt;/strong>&lt;br />
&lt;em>bool prev_permutation(_BidirectionalIter first, _BidirectionalIter last);&lt;/em>&lt;br />
Предыдущая перестановка в лексикографическом порядке. &lt;br />
 &lt;br />
&lt;strong>partition&lt;/strong>&lt;br />
&lt;em>_ForwardIter partition(_ForwardIter first, _ForwardIter last, _Predicate pred);&lt;/em>&lt;br />
Разделение диапазонов элементов. &lt;br />
 &lt;br />
&lt;strong>remove&lt;/strong>&lt;br />
&lt;em>_ForwardIter remove(_ForwardIter first, _ForwardIter last, const _Tp&amp; value);&lt;/em>&lt;br />
Удаление из указанного участка контейнера всех указанных объектов &amp;lt;value&amp;gt; &lt;br />
 &lt;br />
&lt;strong>remove_copy&lt;/strong>&lt;br />
&lt;em>_OutputIter remove_copy(_InputIter first, _InputIter last, _OutputIter result, const _Tp&amp; value);&lt;/em>&lt;br />
Перенос из указанного участка контейнера в другой контейнер всех указанных объектов &amp;lt;value&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>remove_copy_if&lt;/strong>&lt;br />
&lt;em>remove_copy_if();&lt;/em>&lt;br />
Перенос из указанного участка контейнера в другой контейнер объектов выбранных функцией сравнения &amp;lt;pred&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>remove_if&lt;/strong>&lt;br />
&lt;em>_ForwardIter remove_if(_ForwardIter first, _ForwardIter last, _Predicate pred);&lt;/em>&lt;br />
Удаление из указанного участка контейнера объектов выбранных функцией сравнения &amp;lt;&amp;#95;pred&amp;gt; &lt;br />
 &lt;br />
&lt;strong>replace&lt;/strong>&lt;br />
&lt;em>void replace(_ForwardIter first, _ForwardIter last, const _Tp&amp; old_value, const _Tp&amp; new_value);&lt;/em>&lt;br />
Производит замену объекта &amp;lt;old_value&amp;gt; на &amp;lt;new_value&amp;gt; по указанному участку контейнера. &lt;br />
 &lt;br />
&lt;strong>replace_copy&lt;/strong>&lt;br />
&lt;em>_OutputIter replace_copy(_InputIter first, _InputIter last, _OutputIter result, const _Tp&amp; old_value, const _Tp&amp; new_value);&lt;/em>&lt;br />
Производит замену объекта &amp;lt;old_value&amp;gt; на &amp;lt;new_value&amp;gt; по указанному участку контейнера и помещений старых значений в контейнер &amp;lt;result&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>replace_copy_if&lt;/strong>&lt;br />
&lt;em>_OutputIter replace_copy_if(Iterator first, Iterator last, _OutputIter result, _Predicate pred, const _Tp&amp; new_value);&lt;/em>&lt;br />
Производит замену объекта выбраного функцией &amp;lt;pred&amp;gt; на &amp;lt;new_value&amp;gt; по указанному участку контейнера и помещений старых значений в контейнер &amp;lt;result&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>replace_if&lt;/strong>&lt;br />
&lt;em>void replace_if(_ForwardIter &amp;#95;&amp;#95;first, _ForwardIter last, _Predicate pred, const _Tp&amp; new_value);&lt;/em>&lt;br />
Производит замену объекта выбраного функцией &amp;lt;pred&amp;gt; на &amp;lt;new_value&amp;gt; по указанному участку контейнера. &lt;br />
 &lt;br />
&lt;strong>reverse&lt;/strong>&lt;br />
&lt;em>void reverse(_BidirectionalIter first, _BidirectionalIter last, bidirectional_iterator_tag);&lt;/em>&lt;br />
Инвертирование последовательности указанных элементов контейнера./ &lt;br />
 &lt;br />
&lt;strong>reverse_copy&lt;/strong>&lt;br />
&lt;em>_OutputIter reverse_copy(_BidirectionalIter first, _BidirectionalIter last, _OutputIter result);&lt;/em>&lt;br />
Копирует указанные элементы в обратном порядке. &lt;br />
 &lt;br />
&lt;strong>rotate&lt;/strong>&lt;br />
&lt;em>_ForwardIter rotate(_ForwardIter first, _ForwardIter middle, _ForwardIter last);&lt;/em>&lt;br />
Ротация элементов. &lt;br />
 &lt;br />
&lt;strong>rotate_copy&lt;/strong>&lt;br />
&lt;em>_OutputIter rotate_copy(_ForwardIter first, _ForwardIter middle, _ForwardIter last, _OutputIter result);&lt;/em>&lt;br />
Ротация элементов с копированием. &lt;br />
 &lt;br />
&lt;strong>set_difference&lt;/strong>&lt;br />
&lt;em>_OutputIter set_difference(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);&lt;/em>&lt;br />
Определение элементов из первого множества отсутствующих во втором. &lt;br />
 &lt;br />
&lt;strong>set_intersection&lt;/strong>&lt;br />
&lt;em>_OutputIter set_intersection(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);&lt;/em>&lt;br />
Определение элементов из первого множества присутствующих во втором. &lt;br />
 &lt;br />
&lt;strong>set_symmetric_difference&lt;/strong>&lt;br />
&lt;em>_OutputIter set_symmetric_difference(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);&lt;/em>&lt;br />
Определение элементов из первого множества отсутствующих во втором и элементов второго отсутствующих в первом. &lt;br />
 &lt;br />
&lt;strong>set_union&lt;/strong>&lt;br />
&lt;em>OutputIter set_union(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2, _OutputIter result);&lt;/em>&lt;br />
Создаёт множество отсортированных элементов их двух контейнеров в третьем. &lt;br />
 &lt;br />
&lt;strong>stable_partition&lt;/strong>&lt;br />
&lt;em>_ForwardIter stable_partition(_ForwardIter first, _ForwardIter last, _Predicate pred);&lt;/em>&lt;br />
Подобна partition. &lt;br />
 &lt;br />
&lt;strong>swap&lt;/strong>&lt;br />
&lt;em>void swap(_Tp&amp; a, _Tp&amp; b);&lt;/em>&lt;br />
Перестановка значений контейнера. &lt;br />
 &lt;br />
&lt;strong>swap_ranges&lt;/strong>&lt;br />
&lt;em>_ForwardIter2 swap_ranges(_ForwardIter1 first1, _ForwardIter1 last1, _ForwardIter2 first2);&lt;/em>&lt;br />
Перестановка группы элементов контейнера. &lt;br />
 &lt;br />
&lt;strong>transform&lt;/strong>&lt;br />
&lt;em>transform();&lt;/em>&lt;br />
-//- &lt;br />
 &lt;br />
&lt;strong>unique&lt;/strong>&lt;br />
&lt;em>_ForwardIter unique(_ForwardIter first, _ForwardIter last);&lt;/em>&lt;br />
Удаляет из контейнера одинаковые элементы &lt;br />
 &lt;br />
&lt;strong>unique_copy&lt;/strong>&lt;br />
&lt;em>_OutputIter unique_copy(_InputIter first, _InputIter last, _OutputIter result, _Tp*);&lt;/em>&lt;br />
Копирует все уникальные элементы в другой контейнер. &lt;a name="h119-60">&lt;/a>&lt;h5>Алгоритмы, не модифицирующие последовательности&lt;/h5>
&lt;strong>adjacent_find&lt;/strong>&lt;br />
&lt;em>_ForwardIter adjacent_find(_ForwardIter first, _ForwardIter last, _BinaryPredicate binary_pred);&lt;/em>&lt;br />
Возвращает итератор для чтения, указывающий на первый из двух идентичных смежных элементов в последовательности. &lt;br />
 &lt;br />
&lt;strong>equal&lt;/strong>&lt;br />
&lt;em>inline bool equal(_InputIter1 first1, _InputIter1 last1,_InputIter2 first2);&lt;/em>&lt;br />
Сравнение указанных участков двух контейнеров. &lt;br />
 &lt;br />
&lt;strong>find&lt;/strong>&lt;br />
&lt;em>_InputIter find(_InputIter first, _InputIter last, const _Tp&amp; val, input_iterator_tag);&lt;/em>&lt;br />
Возвращает положение искомого значения &amp;lt;val&amp;gt; &lt;br />
 &lt;br />
&lt;strong>find_each&lt;/strong>&lt;br />
&lt;em>find_each();&lt;/em>&lt;br />
-//- &lt;br />
 &lt;br />
&lt;strong>find_end&lt;/strong>&lt;br />
&lt;em>find_end();&lt;/em>&lt;br />
-//- &lt;br />
 &lt;br />
&lt;strong>find_first_of&lt;/strong>&lt;br />
&lt;em>find_first_of();&lt;/em>&lt;br />
-//- &lt;br />
 &lt;br />
&lt;strong>find_if&lt;/strong>&lt;br />
&lt;em>InputIter find_if(_InputIter first, _InputIter last, _Predicate pred, input_iterator_tag);&lt;/em>&lt;br />
Возвращает положение значения определённого функцией &amp;lt;pred&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>lexicographical_compare&lt;/strong>&lt;br />
&lt;em>bool lexicographical_compare(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2, _InputIter2 last2);&lt;/em>&lt;br />
Используется для лексикографического сравнения двух массивов символов. &lt;br />
 &lt;br />
&lt;strong>max&lt;/strong>&lt;br />
&lt;em>const _Tp&amp; max(const _Tp&amp; a, const _Tp&amp; b);&lt;/em>&lt;br />
Определение максимального значения. &lt;br />
 &lt;br />
&lt;strong>min&lt;/strong>&lt;br />
&lt;em>const _Tp&amp; min(const _Tp&amp; a, const _Tp&amp; b);&lt;/em>&lt;br />
Определения минимального значения. &lt;br />
 &lt;br />
&lt;strong>mismatch&lt;/strong>&lt;br />
&lt;em>pair&amp;lt;_InputIter1, _InputIter2&amp;gt; mismatch(_InputIter1 first1, _InputIter1 last1, _InputIter2 first2);&lt;/em>&lt;br />
Выполняет сравнение указанных участков двух контейнеров и возвращает пару итераторов указывающих различные позиции контейнеров. &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
std::pair&amp;lt;std::vector&amp;lt;int&amp;gt;::iterator,&amp;nbsp;std::vector&amp;lt;int&amp;gt;::iterator&amp;gt;&amp;nbsp;location;&amp;nbsp;&lt;br />location&amp;nbsp;=&amp;nbsp;std::mismatch(v1.begin(),v1.end(),v3.begin());&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
 &lt;br />
&lt;strong>search&lt;/strong>&lt;br />
&lt;em>search();&lt;/em>&lt;br />
-//- &lt;br />
 &lt;br />
&lt;strong>search_n&lt;/strong>&lt;br />
&lt;em>search_n();&lt;/em>&lt;br />
-//- &lt;a name="h119-61">&lt;/a>&lt;h5>Числовые алгоритмы &amp;lt;numeric&amp;gt;&lt;/h5>
&lt;strong>accumulate&lt;/strong>&lt;br />
&lt;em>_Tp accumulate(_InputIterator first, _InputIterator last, _Tp init);&lt;/em>&lt;br />
Суммирование значений указанной области контейнера. &lt;br />
 &lt;br />
&lt;strong>adjacent_difference&lt;/strong>&lt;br />
&lt;em>_OutputIterator adjacent_difference(_InputIterator first, _InputIterator last, _OutputIterator result);&lt;/em>&lt;br />
Вычисление разницы между парой смежных элементов &lt;br />
 &lt;br />
&lt;strong>count&lt;/strong>&lt;br />
&lt;em>void count(_InputIter first, _InputIter last, const _Tp&amp; value,_Size&amp; n);&lt;/em>&lt;br />
Выполняет подсчет количества объектов &amp;lt;value&amp;gt; в указанной области контейнера. &lt;br />
 &lt;br />
&lt;strong>count_if&lt;/strong>&lt;br />
&lt;em>void count_if(_InputIter first, _InputIter last, _Predicate pred, _Size&amp; n);&lt;/em>&lt;br />
Выполняет подсчет количества объектов выбранных функцией &amp;lt;pred&amp;gt; в указанной области контейнера. &lt;br />
 &lt;br />
&lt;strong>for_each&lt;/strong>&lt;br />
&lt;em>_Function for_each(_InputIter first, _InputIter last, _Function f);&lt;/em>&lt;br />
Применение функции &amp;lt;f&amp;gt; к указанным элементам контейнера. Общая функция должна принимать текущий элемент в качестве аргумента и не должна модифицировать этот элемент. &lt;br />
 &lt;br />
&lt;strong>inner_product&lt;/strong>&lt;br />
&lt;em>_Tp inner_product(_InputIterator1 first1, _InputIterator1 last1, _InputIterator2 first2, _Tp init);&lt;/em>&lt;br />
Вычисление суммы произведений двух последовательностей. &lt;br />
 &lt;br />
&lt;strong>max_element&lt;/strong>&lt;br />
&lt;em>_ForwardIter max_element(_ForwardIter first, _ForwardIter last);&lt;/em>&lt;br />
Возвращает указатель на максимальный элемент в контейнере. &lt;br />
 &lt;br />
&lt;strong>min_element&lt;/strong>&lt;br />
&lt;em>_ForwardIter min_element(_ForwardIter first, _ForwardIter last);&lt;/em>&lt;br />
Возвращает указатель на минимальный элемент в контейнере. &lt;br />
 &lt;br />
&lt;strong>nth_element&lt;/strong>&lt;br />
&lt;em>void nth_element(_RandomAccessIter first, _RandomAccessIter nth, _RandomAccessIter last);&lt;/em>&lt;br />
Разделение диапазонов элементов. &lt;br />
 &lt;br />
&lt;strong>partial_sum&lt;/strong>&lt;br />
&lt;em>_OutputIterator partial_sum(_InputIterator first, _InputIterator last, _OutputIterator result);&lt;/em>&lt;br />
Вычисление суммы элементов двух контейнеров с накоплением. &lt;br />
 &lt;br />
&lt;strong>partial_sort&lt;/strong>&lt;br />
&lt;em>void partial_sort(_RandomAccessIter first, _RandomAccessIter middle, _RandomAccessIter last);&lt;/em>&lt;br />
Сортировка части последовательности. &lt;br />
 &lt;br />
&lt;strong>partial_sort_copy&lt;/strong>&lt;br />
&lt;em>_RandomAccessIter partial_sort_copy(_InputIter first, _InputIter last, _RandomAccessIter result_first, _RandomAccessIter result_last);&lt;/em>&lt;br />
Сортировка части последовательности с копированием результата. &lt;br />
 &lt;br />
&lt;strong>random_shuffle&lt;/strong>&lt;br />
&lt;em>inline void random_shuffle(_RandomAccessIter first, _RandomAccessIter last);&lt;/em>&lt;br />
Располагает элементы указанного участка контейнера в произвольном порядке. &lt;br />
 &lt;br />
&lt;strong>stable_sort&lt;/strong>&lt;br />
&lt;em>void stable_sort(_RandomAccessIter first, _RandomAccessIter last);&lt;/em>&lt;br />
Сортировка (аналогично sort) &lt;br />
 &lt;br />
&lt;strong>transform&lt;/strong>&lt;br />
&lt;em>_OutputIter transform(_InputIter first, _InputIter last, _OutputIter result, _UnaryOperation oper);&lt;/em>&lt;br />
Применение функции &amp;lt;f&amp;gt; к указанным элементам контейнера. Общая функция должна принимать текущий элемент в качестве аргумента, не должна модифицировать этот элемент и должна возвращать трансформированное значение. &lt;a name="h119-62">&lt;/a>&lt;h5>Алгоритмы, сортировки кучи&lt;/h5>
&lt;strong>make_heap&lt;/strong>&lt;br />
&lt;em>make_heap(_RandomAccessIterator first, _RandomAccessIterator last);&lt;/em>&lt;br />
Создание и инициализация кучи. &lt;br />
 &lt;br />
&lt;strong>pop_heap&lt;/strong>&lt;br />
&lt;em>void pop_heap(_RandomAccessIterator first, _RandomAccessIterator last);&lt;/em>&lt;br />
Удаление элемента с вершины кучи. &lt;br />
 &lt;br />
&lt;strong>push_heap&lt;/strong>&lt;br />
&lt;em>void push_heap(_RandomAccessIterator first, _RandomAccessIterator last);&lt;/em>&lt;br />
Добавление нового элемента в кучу. &lt;br />
 &lt;br />
&lt;strong>sort_heap&lt;/strong>&lt;br />
&lt;em>sort_heap(_RandomAccessIterator first, _RandomAccessIterator last, _Compare comp);&lt;/em>&lt;br />
Сортировка последовательности значений. &lt;br />
 &lt;a name="h119-63">&lt;/a>&lt;h4>2.8.4 Класс &amp;lt;bitset&amp;gt;&lt;/h4>
Класс &lt;strong>bitset&lt;/strong> обеспечивает операции для создания и манипуляции наборами битов. Наборы битов имеют фиксированный размер: bitset&amp;lt;size&amp;gt; b;. Операции:&lt;br />
&lt;strong>set&lt;/strong>&lt;br />
Установка указанного бита. &lt;br />
 &lt;br />
&lt;strong>reset&lt;/strong>&lt;br />
Сброс указанного бита. &lt;br />
 &lt;br />
&lt;strong>flip&lt;/strong>&lt;br />
Переключает бит. &lt;br />
 &lt;br />
&lt;strong>at&lt;/strong>&lt;br />
Получить бит. &lt;br />
 &lt;br />
&lt;strong>test&lt;/strong>&lt;br />
Проверка бита. &lt;br />
 &lt;br />
&lt;strong>size&lt;/strong>&lt;br />
Возвращает число битов в наборе. &lt;br />
 &lt;br />
&lt;strong>count&lt;/strong>&lt;br />
Возвращает число установленных битов. &lt;br />
 &lt;br />
&lt;strong>any&lt;/strong>&lt;br />
Возвращает true если хоть один бит в наборе установлен. &lt;br />
 &lt;br />
&lt;strong>none&lt;/strong>&lt;br />
Возвращает true если не один бит в наборе неустановлен. &lt;br />
 &lt;br />
&lt;strong>==, !=&lt;/strong>&lt;br />
Сравнение наборов битов. &lt;br />
 &lt;br />
&lt;strong>&amp;=, |=, ^ =, &amp;#62;&amp;#62;=, &amp;#60;&amp;#60;=&lt;/strong>&lt;br />
Битовые операции над наборами битов. &lt;br />
 &lt;br />
&lt;strong>to_string&lt;/strong>&lt;br />
Преобразует набор битов в строку. &lt;br />
 &lt;br />
&lt;strong>to_ulong&lt;/strong>&lt;br />
Преобразует набор битов в unsigned long. &lt;a name="h119-64">&lt;/a>&lt;h4>2.8.5 Объекты-функции&lt;/h4>
Объекты-функции и адаптеры-функций предназначены для того чтобы сделать STL более гибкой. Объект-функция содержит функцию, которая может быть интерпретирована с синтаксической и семантической точки зрения как функция, использующая operator(). Объекты-функции STL: &lt;br />
&lt;strong>divides&amp;lt;T&amp;gt;&lt;/strong> - арифметический;&lt;br />
&lt;strong>equal_to&amp;lt;T&amp;gt;&lt;/strong> - реляционный; &lt;br />
&lt;strong>greater&amp;lt;T&amp;gt;&lt;/strong> - реляционный;&lt;br />
&lt;strong>greater_equal&amp;lt;T&amp;gt;&lt;/strong> - реляционный;&lt;br />
&lt;strong>less&amp;lt;T&amp;gt;&lt;/strong> - реляционный;&lt;br />
&lt;strong>less_equal&amp;lt;T&amp;gt;&lt;/strong> - реляционный; &lt;br />
&lt;strong>logical_and&amp;lt;T&amp;gt;&lt;/strong> - логический; &lt;br />
&lt;strong>logical_not&amp;lt;T&amp;gt;&lt;/strong> - логический; &lt;br />
&lt;strong>logical_or&amp;lt;T&amp;gt;&lt;/strong> - логический; &lt;br />
&lt;strong>minus&amp;lt;T&amp;gt;&lt;/strong> - арифметический; &lt;br />
&lt;strong>moduls&amp;lt;T&amp;gt;&lt;/strong> - арифметический; &lt;br />
&lt;strong>negate&amp;lt;T&amp;gt;&lt;/strong> - арифметический; &lt;br />
&lt;strong>not_equal_to&amp;lt;T&amp;gt;&lt;/strong> - реляционный; &lt;br />
&lt;strong>plus&amp;lt;T&amp;gt;&lt;/strong> - арифметический; &lt;br />
&lt;strong>multiplies&amp;lt;T&amp;gt;&lt;/strong> - арифметический; &lt;a name="h119-65">&lt;/a>&lt;h3>2.9 функции работы с памятью&lt;/h3>
&lt;strong>calloc, malloc, free, realloc (ANSI) &amp;lt;stdlib.c, cstdlib&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *calloc(size_t nmemb, size_t size);&lt;/em>&lt;br />
&lt;em>void *malloc(size_t size);&lt;/em>&lt;br />
&lt;em>void free(void *ptr);&lt;/em>&lt;br />
&lt;em>void *realloc(void *ptr, size_t size);&lt;/em>&lt;br />
Распределяют и освобождает динамическую память. &lt;br />
 calloc - выделяет блок памяти с очисткой; &lt;br />
 malloc - выделяет блок памяти; &lt;br />
 free - освобождение блока памяти; &lt;br />
 realloc - меняет размер блока памяти; &lt;br />
 &lt;br />
&lt;strong>delete (C++)&lt;/strong>&lt;br />
&lt;em>delete terget;&lt;/em>&lt;br />
Освобождает динамическую память выделенную с помощью оператора new. Кроме того оператор delete активизирует диструктор объекта: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
target&amp;nbsp;*r=&amp;nbsp;new&amp;nbsp;char[256];&amp;nbsp;delete&amp;nbsp;r;&amp;nbsp;&lt;br />target&amp;nbsp;*r=&amp;nbsp;new&amp;nbsp;char[256];&amp;nbsp;delete&amp;nbsp;[]r;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;strong>memchr, memrchr (POSIX) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *memchr(const void *s, int c, size_t n);&lt;/em>&lt;br />
&lt;em>void *memrchr(const void *s, int c, size_t n);&lt;/em>&lt;br />
Ищет символ &amp;lt;c&amp;gt; в первых/последних &amp;lt;n&amp;gt; байтах той области памяти, на которую указывает &amp;lt;s&amp;gt;. Совпадение первого байта с &amp;lt;c&amp;gt; (представленным как беззнаковый символ) останавливает выполнение операции. &lt;br />
 &lt;br />
&lt;strong>memcmp (BSD) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int memcmp(const void *s1, const void *s2, size_t n);&lt;/em>&lt;br />
Сравнивает первые &amp;lt;n&amp;gt; байтов областей памяти &amp;lt;s1&amp;gt; и &amp;lt;s2&amp;gt;. Возвращается целое число, меньшее, большее нуля или равное ему, если определено, что &amp;lt;s1&amp;gt; меньше, больше, или равно &amp;lt;s2&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>memcpy (BSD) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *memcpy(void *dest, const void *src, size_t n);&lt;/em>&lt;br />
Копирует &amp;lt;n&amp;gt; байтов из области памяти &amp;lt;src&amp;gt; в область памяти &amp;lt;dest&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>memmove (BSD) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *memmove(void *dest, const void *src, size_t n);&lt;/em>&lt;br />
Копирует &amp;lt;n&amp;gt; байтов из области памяти &amp;lt;src&amp;gt; в область памяти &amp;lt;dest&amp;gt;. Области памяти могут перекрываться. &lt;br />
 &lt;br />
&lt;strong>memset (BSD) &amp;lt;string.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *memset(void *s, int c, size_t n);&lt;/em>&lt;br />
Заполняет первые &amp;lt;n&amp;gt; байтов области памяти &amp;lt;s&amp;gt; байтом &amp;lt;c&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>mlock, munlock (POSIX) &amp;lt;sys/mman.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int mlock(const void *addr, size_t len);&lt;/em>&lt;br />
&lt;em>int munlock(const void *addr, size_t len);&lt;/em>&lt;br />
Запрещает/разрешает страничный обмен памяти в области, начинающейся с адреса &amp;lt;addr&amp;gt; длиной &amp;lt;len&amp;gt; байтов. &lt;br />
 &lt;br />
&lt;strong>mlockall, munlockall (POSIX) &amp;lt;sys/mman.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int mlockall(int flags);&lt;/em>&lt;br />
&lt;em>int munlockall(void);&lt;/em>&lt;br />
Запрещает/разрешает страничный обмен для всех страниц в области памяти вызывающего процесса. &lt;br />
 &lt;br />
&lt;strong>mmap, munmap (POSIX) &amp;lt;unistd.h, sys/mman.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);&lt;/em>&lt;br />
&lt;em>int munmap(void *start, size_t length);&lt;/em>&lt;br />
mmap - возвращает адрес отражённых &amp;lt;length&amp;gt; байтов, начиная со смещения &amp;lt;offset&amp;gt; файла (или другого объекта), определенного файловым описателем &amp;lt;fd&amp;gt;, в память, начиная с адреса &amp;lt;start&amp;gt;. munmap - удаляет все отражения из заданной области памяти. &lt;br />
 &lt;br />
&lt;strong>mprotect (POSIX) &amp;lt;sys/mman.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int mprotect(const void *addr, size_t len, int prot);&lt;/em>&lt;br />
Контролирует доступ &amp;lt;prot&amp;gt; к области памяти &amp;lt;addr&amp;gt; &amp;lt;len&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>msync (POSIX) &amp;lt;unistd.h, sys/mman.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int msync(const void *start, size_t length, int flags);&lt;/em>&lt;br />
Записывает на диск изменения, внесенные в файл, отраженный в память при помощи функции mmap. &lt;br />
 &lt;br />
&lt;strong>new (C++)&lt;/strong>&lt;br />
&lt;em>Type *array = new Type[256];&lt;/em>&lt;br />
Используется для динамического выделения памяти (для размещения объекта в свободной памяти). Указателю array присваивается адрес выделенной памяти или присваивается NULL при её отсутствии. Оператор new автоматически активизирует конструктор объекта. Если определена функция _new_handler то она вызывается при отсутствии памяти. Способы применения оператора new: &lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
float&amp;nbsp;*r&amp;nbsp;=&amp;nbsp;new&amp;nbsp;float;&amp;nbsp;delete&amp;nbsp;r;&amp;nbsp;&lt;br />float&amp;nbsp;*r&amp;nbsp;=&amp;nbsp;new&amp;nbsp;float(3.14);&amp;nbsp;delete&amp;nbsp;r;&amp;nbsp;&lt;br />float&amp;nbsp;*r&amp;nbsp;=&amp;nbsp;new&amp;nbsp;float[10];&amp;nbsp;delete&amp;nbsp;[]r;&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
&lt;strong>set_new_handler (C++) &amp;lt;new.h | new&amp;gt;&lt;/strong>&lt;br />
&lt;em>void set_new_handler(void (*VFP)());&lt;/em>&lt;br />
Присваивает адресу глобальной переменной _new_handler адрес функции &amp;lt;VFP&amp;gt; обработки ошибок оператора new. &lt;a name="h119-66">&lt;/a>&lt;h3>2.10 Работа с терминалом&lt;/h3>
&lt;strong>isatty (SVID, AT&amp;T, X/OPEN, BSD 4.3) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int isatty(int desc);&lt;/em>&lt;br />
Определяет, ссылается ли данный описатель на терминал. &lt;br />
 &lt;br />
&lt;strong>tcgetattr, tcsetattr &amp;lt;termios.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int tcgetattr(int fd, struct termios *termios_p);&lt;/em>&lt;br />
&lt;em>int tcsetattr(int fd, int optional_actions, struct termios *termios_p);&lt;/em>&lt;br />
Получить/установить атрибуты терминала. &lt;br />
 &lt;br />
&lt;strong>ttyname (POSIX.1) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *ttyname(int desc);&lt;/em>&lt;br />
Возвращает название терминала. &lt;a name="h119-67">&lt;/a>&lt;h3>2.11 Работа с динамическими библиотеками&lt;/h3>
&lt;strong>dlopen (*NIX) &amp;lt;dlfcn.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *dlopen (const char *filename, int flag);&lt;/em>&lt;br />
Открывает и возвращает адрес динамической библиотеки &amp;lt;filename&amp;gt; с флагами &amp;lt;flag&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>dlerror (*NIX) &amp;lt;dlfcn.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *dlerror()&lt;/em>&lt;br />
Возвращает текстовую строку ошибки возникшей при работе с динамической библиотекой. &lt;br />
 &lt;br />
&lt;strong>dlsym (*NIX) &amp;lt;dlfcn.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *dlsym(void *handle, char *symbol);&lt;/em>&lt;br />
Получить адрес функции с именем &amp;lt;symbol&amp;gt; которая ищется в библиотеке &amp;lt;handle&amp;gt; &lt;br />
 &lt;br />
&lt;strong>mycomdlclose (*NIX) &amp;lt;dlfcn.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int dlclose(void *handle);&lt;/em>&lt;br />
Закрытие, ранее открытой динамической библиотеки &lt;br />
&lt;strong>_init() (*NIX)&lt;/strong>&lt;br />
Выполняется при открытии динамической библиотеки &lt;br />
 &lt;br />
&lt;strong>_fini() (*NIX)&lt;/strong>&lt;br />
Выполняется при закрытии динамической библиотеки &lt;a name="h119-68">&lt;/a>&lt;h3>2.12 Лимитирование&lt;/h3>
&lt;strong>getrlimit (*NIX) &amp;lt;sys/resource.h&amp;gt;&lt;/strong>&lt;br />
Получение различных лимитов для пользователя. &lt;br />
 &lt;br />
&lt;strong>setrlimit (*NIX) &amp;lt;sys/resource.h&amp;gt;&lt;/strong>&lt;br />
Устанавливает различные лимиты для пользователя. &lt;br />
 &lt;br />
&lt;strong>getrusage (*NIX) &amp;lt;sys/resource.h&amp;gt;&lt;/strong>&lt;br />
Получение различных лимитов и статистики использования ресурсов для пользователя. &lt;br />
 &lt;br />
&lt;strong>ulimit (SVID) &amp;lt;ulimit.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>long ulimit(int cmd, long newlimit);&lt;/em>&lt;br />
Установка или определение ограничений пользователя. &lt;br />
 &lt;a name="h119-69">&lt;/a>&lt;h3>2.13 Документирование и ведение логов&lt;/h3>
&lt;strong>openlog (BSD) &amp;lt;syslog.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void openlog(char *ident, int option, int facility);&lt;/em>&lt;br />
Связывает с программой &amp;lt;facility&amp;gt;, ведущей системный журнал с опциями &amp;lt;option&amp;gt;. &amp;lt;indent&amp;gt; указывает на строку идентифицирующую программу генерирующую логи. &lt;br />
 &lt;br />
&lt;strong>closelog (BSD) &amp;lt;syslog.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void closelog(void);&lt;/em>&lt;br />
Закрывает описатель, используемый для записи данных в журнал. &lt;br />
 &lt;br />
&lt;strong>syslog (BSD) &amp;lt;syslog.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void syslog(int priority, char *format, ...);&lt;/em>&lt;br />
Создает сообщение для журнала из &amp;lt;format&amp;gt;, c приоритетом &amp;lt;priority&amp;gt;. &lt;a name="h119-70">&lt;/a>&lt;h3>2.14 Функции управления безопасностью&lt;/h3>
&lt;strong>chmod, fchmod (POSIX) &amp;lt;sys/types.h, sys/stat.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int chmod(const char *path, mode_t mode);&lt;/em>&lt;br />
&lt;em>int fchmod(int fildes, mode_t mode);&lt;/em>&lt;br />
Изменяют режим доступа к файлу, заданному параметром &amp;lt;path&amp;gt; или описателем файла &amp;lt;fildes&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>getuid, geteuid (POSIX) &amp;lt;unistd.h, sys/types.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>uid_t getuid(void);&lt;/em>&lt;br />
&lt;em>uid_t geteuid(void);&lt;/em>&lt;br />
Возвращает идентификатор действительного/эффективного пользователя текущего процесса. &lt;br />
 &lt;br />
&lt;strong>getgid, getegid (POSIX) &amp;lt;unistd.h, sys/types.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>gid_t getgid(void);&lt;/em>&lt;br />
&lt;em>gid_t getegid(void);&lt;/em>&lt;br />
Возвращает идентификатор действительной/эффективной группы текущего процесса. &lt;br />
 &lt;br />
&lt;strong>stat, fstat, lstat (POSIX) &amp;lt;sys/types.h, sys/stat.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int stat(const char *file_name, struct stat *buf);&lt;/em>&lt;br />
&lt;em>int fstat(int filedes, struct stat *buf);&lt;/em>&lt;br />
&lt;em>int lstat(const char *file_name, struct stat *buf);&lt;/em>&lt;br />
stat - возвращает информацию о файле &amp;lt;file_name&amp;gt; и заполняет буфер &amp;lt;buf&amp;gt;; &lt;br />
lstat - дополнительно информацию о ссылке; &lt;br />
fstat - информацию о &amp;lt;filedes&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>setreuid, setregid (BSD) &amp;lt;sys/types.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int setreuid(uid_t ruid, uid_t euid);&lt;/em>&lt;br />
&lt;em>int setregid(gid_t rgid, gid_t egid);&lt;/em>&lt;br />
Устанавливает действительный и действующий идентификатор пользователя/группы текущего процесса &lt;br />
 &lt;br />
&lt;strong>setgid (SVID) &amp;lt;sys/types.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int setgid(gid_t gid);&lt;/em>&lt;br />
Устанавливает идентификатор эффективной группы текущего процесса. &lt;br />
 &lt;br />
&lt;strong>setuid (POSIX) &amp;lt;sys/types.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int setuid(uid_t uid);&lt;/em>&lt;br />
Устанавливает фактический идентификатор владельца текущего процесса. &lt;a name="h119-71">&lt;/a>&lt;h3>2.15 Специальные функции&lt;/h3>
&lt;strong>asm (*NIX)&lt;/strong>&lt;br />
&lt;em>asm(asm_kod,output,input,modifi);&lt;/em>&lt;br />
Позволяет выполнять встроенные инструкции языка asm &amp;lt;asm_kod&amp;gt; с входными параметрами &amp;lt;input&amp;gt;, выходными &amp;lt;output&amp;gt;, и модифицируемыми &amp;lt;modifi&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>assert (ANSI) &amp;lt;assert.h|cassert&amp;gt;&lt;/strong>&lt;br />
&lt;em>void assert (int expression);&lt;/em>&lt;br />
Выводит на стандартный выход сообщение об ошибке и прекращает работу программы, если утверждение &amp;lt;expression&amp;gt; ложно (т.е., равно нулю). Происходит только в случае, если не определена переменная NDEBUG.&lt;br />
 &lt;br />
&lt;strong>chroot (BSD)&lt;/strong>&lt;br />
&lt;em>int chroot(const char *path);&lt;/em>&lt;br />
Функция установки нового корневого каталога. &lt;br />
 &lt;br />
&lt;strong>main (ANSI)&lt;/strong>&lt;br />
&lt;em>main(int argc, char *argv[], char *envp[]);&lt;/em>&lt;br />
Основная функция (точка входа). Переопределяется для выполнения в ней пользовательской программы. Переменной &amp;lt;argc&amp;gt; присваивается общее число параметров разделенных пробелами. Переменной &amp;lt;argv&amp;gt; присваиваются отдельные параметры командной строки. Переменной &amp;lt;envp&amp;gt; присваиваются переменные среды вызываемой программы.&lt;br />
 &lt;br />
&lt;strong>mtrace (*) &amp;lt;mcheck.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void mtrace(void);&lt;/em>&lt;br />
Запуск трассировки - используемой программой памяти. Лог помещается в файл на который указывает переменная окружения MALLOC_TRACE. Для обработки лога вызывается команда: "mtrace my_prog $MALLOC_TRACE. &lt;br />
 &lt;br />
&lt;strong>optarg (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>extern char *optarg;&lt;/em>&lt;br />
Содержит текстовый аргумент параметра. &lt;br />
 &lt;br />
&lt;strong>optind, opterr, optopt (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>extern int optind, opterr, optopt;&lt;/em>&lt;br />
&lt;em>optind - индекс аргумента;&lt;/em>&lt;br />
opterr - ошибка опции; &lt;br />
optopt - необработанная опция; &lt;br />
 &lt;br />
&lt;strong>getopt (POSIX) &amp;lt;unistd.h, getopt.h &amp;gt;&lt;/strong>&lt;br />
&lt;em>int getopt(int argc, char * const argv[], const char *optstring);&lt;/em>&lt;br />
Обрабатывает параметры &amp;lt;argc&amp;gt; &amp;lt;argv&amp;gt; команды, на предмет поиска коротких опций &amp;lt;optstring&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>getopt_long (POSIX) &amp;lt;unistd.h, getopt.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int getopt_long(int argc, char * const argv[], const char *optstring, const struct option *longopts, int *longindex);&lt;/em>&lt;br />
Обрабатывает параметры &amp;lt;argc&amp;gt; &amp;lt;argv&amp;gt; команды на предмет поиска коротких &amp;lt;optstring&amp;gt; и длинных &amp;lt;longopts&amp;gt; опций. &lt;br />
 &lt;br />
&lt;strong>getenv (POSIX) &amp;lt;stdlib.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *getenv(const char *name);&lt;/em>&lt;br />
Получает значения переменной окружения &amp;lt;name&amp;gt;; &lt;br />
 &lt;br />
&lt;strong>getpagesize (BSD) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>size_t getpagesize(void);&lt;/em>&lt;br />
Возвращает количество байтов в странице. &lt;br />
 &lt;br />
&lt;strong>pathconf, fpathconf (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>long pathconf(char *path, int name);&lt;/em>&lt;br />
&lt;em>long fpathconf(int filedes, int name);&lt;/em>&lt;br />
Возвращает ограничение параметра &amp;lt;name&amp;gt; для файловой системы на которой находится файл &amp;lt;path&amp;gt;,&amp;lt;filedes&amp;gt;.&lt;br />
 &lt;br />
&lt;strong>putenv (POSIX) &amp;lt;stdlib.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int putenv(char *string);&lt;/em>&lt;br />
Добавляет или изменяет переменную окружения. &lt;br />
 &lt;br />
&lt;strong>setenv, unsetenv (BSD) &amp;lt;stdlib.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int setenv(const char *имя, const char *значение, int overwrite);&lt;/em>&lt;br />
&lt;em>void unsetenv(const char *name);&lt;/em>&lt;br />
Изменение, добавление или удаление переменной окружения &amp;lt;имя&amp;gt; на &amp;lt;значение&amp;gt;. &lt;br />
&lt;strong>sysconf (POSIX.1) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>long sysconf(int name);&lt;/em>&lt;br />
Предоставляет приложениям информацию о соответствии OC стандарту POSIX. Также, предоставляется информация о всех POSIX параметрах.&lt;br />
 &lt;br />
&lt;strong>sysinfo (Linux) &amp;lt;sys/sysinfo.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sysinfo(struct sysinfo *info);&lt;/em>&lt;br />
Возвращает общесистемную статистику. &lt;br />
 &lt;br />
&lt;strong>uname (POSIX) &amp;lt;sys/utsname.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int uname(struct utsname *buf);&lt;/em>&lt;br />
Возвращает информацию о системе в структуру с адресом &amp;lt;buf&amp;gt;. &lt;br />
&lt;div class="indent">&lt;/div>&lt;a name="h119-72">&lt;/a>&lt;h3>2.16 Потоковые функции языка C++&lt;/h3>
Потоковые функции языка C++ представляют собой подборку классов предоставляющих функции для работы с основными потоковыми устройствами системы. Для подключения потоковых функций (классов) необходимо включать следующие заголовочные файлы:&lt;br />
&lt;strong>&amp;lt;iostream&amp;gt;&lt;/strong> -- Включает описание классов: cin, cout, cerr, clog.&lt;br />
&lt;strong>&amp;lt;iomanip&amp;gt;&lt;/strong> -- Включает информацию для обработки форматированного ввода-вывода;&lt;br />
&lt;strong>&amp;lt;fstream&amp;gt;&lt;/strong> -- Включает информацию для выполнения операций с файлами;&lt;br />
&lt;strong>&amp;lt;strstream&amp;gt;&lt;/strong> -- Включает информацию для выполнения операций со строкой.&lt;br />
Потоковые классы имеют следующую иерархию:&lt;br />
&lt;ul>&lt;li> &lt;strong>istream ==&amp;gt; ios;&lt;/strong>
&lt;/li>&lt;li> &lt;strong>ostream ==&amp;gt; ios;&lt;/strong>
&lt;/li>&lt;li> &lt;strong>iostream ==&amp;gt; istream, ostream;&lt;/strong>
&lt;/li>&lt;li> &lt;strong>ifstream ==&amp;gt; istream;&lt;/strong>
&lt;/li>&lt;li> &lt;strong>ofstream ==&amp;gt; ostream;&lt;/strong>
&lt;/li>&lt;li> &lt;strong>fstream ==&amp;gt; iostream;&lt;/strong>
&lt;/li>&lt;li> &lt;strong>strstream ==&amp;gt; iostream;&lt;/strong>&lt;/li>&lt;/ul>
 &lt;br />
Примеры использования:&lt;br />
&lt;!--notypo-->&lt;div class="code">&lt;code>&lt;span style="color: #000000">
cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"Сообщение"&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;endl;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\\печать&amp;nbsp;строки&lt;br />cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"Address"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;(void&amp;nbsp;*)ptr;&amp;nbsp;\\указатель&lt;br />cin.tie(&amp;amp;cout);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\\связывание,&amp;nbsp;для&amp;nbsp;печати&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\\приглашения&amp;nbsp;ранее&amp;nbsp;запроса&lt;br />cin.tie(NULL);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\\развязывание&amp;nbsp;потока&lt;br />ofstream&amp;nbsp;outClnt("client.dat",ios::out);&amp;nbsp;\\открыть&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\\файл&amp;nbsp;для&amp;nbsp;записи&lt;br />ifstream&amp;nbsp;inClnt("client.dat",ios::in);&amp;nbsp;&amp;nbsp;&amp;nbsp;\\открыть&amp;nbsp;&lt;br />&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;\\файл&amp;nbsp;для&amp;nbsp;чтения&lt;br />strstream&amp;nbsp;ss&lt;br />ss&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;"TEXT"&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;23&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;ends;&lt;br />String&amp;nbsp;msg(&amp;nbsp;ss.str()&amp;nbsp;);&lt;/span>
&lt;/code>&lt;/div>&lt;!--/notypo-->&lt;br />
Операции взятия из потока возвращают "false" при вводе признака конца файла. Для расширенной манипуляций с потоками допускается определение манипуляторов пользователя в виде &lt;em>ostream &amp;tab(ostream &amp;output) { return output &amp;lt;&amp;lt; \t; }&lt;/em>&lt;a name="h119-73">&lt;/a>&lt;h4>2.16.1 Манипуляторы потока&lt;/h4>
&lt;strong>endl &amp;lt;iostream&amp;gt;&lt;/strong>&lt;br />
&lt;em>ostream&amp; endl(ostream&amp; outs);&lt;/em>&lt;br />
Перевод курсора на следующую строку; &lt;br />
 &lt;br />
&lt;strong>ends &amp;lt;iostream&amp;gt;&lt;/strong>&lt;br />
&lt;em>ostream&amp; ends(ostream&amp; outs);&lt;/em>&lt;br />
Вывести нулевой байт (символ конца строки); &lt;br />
 &lt;a name="h119-74">&lt;/a>&lt;h4>2.16.2 Компонентные функции класса ios &amp;lt;iostream&amp;gt;&lt;/h4>
&lt;strong>bad&lt;/strong>&lt;br />
&lt;em>int bad();&lt;/em>&lt;br />
При ошибке возвращает ненулевое значение. &lt;br />
 &lt;br />
&lt;strong>bitalloc&lt;/strong>&lt;br />
&lt;em>static long bitalloc();&lt;/em>&lt;br />
Возвращает установки флагов. Полученное значение может быть использовано для очистки, установки или проверки флагов. &lt;br />
 &lt;br />
&lt;strong>clear&lt;/strong>&lt;br />
&lt;em>void clear(int = 0);&lt;/em>&lt;br />
Устанавливает состояние потока (обнулить или установить указанные биты). &lt;br />
eofbit - признак конца файла; &lt;br />
failbit - ошибка форматирования, но символы не утеряны; &lt;br />
badbit - потеря данных; &lt;br />
goodbit - ошибок нет.&lt;br />
 &lt;br />
&lt;strong>eof&lt;/strong>&lt;br />
&lt;em>int eof();&lt;/em>&lt;br />
Возвращает ненулевое значение, если имеет место условие конца файла (EOF). &lt;br />
 &lt;br />
&lt;strong>fail&lt;/strong>&lt;br />
&lt;em>int fail();&lt;/em>&lt;br />
Возвращает ненулевое значение, если операция обмена с потоком терпит неудачу. &lt;br />
 &lt;br />
&lt;strong>fill&lt;/strong>&lt;br />
&lt;em>char fill();&lt;/em>&lt;br />
&lt;em>char fill(char);&lt;/em>&lt;br />
Устанавливает символ заполнения потока. Возвращает старое значение символа заполнения. &lt;br />
 &lt;br />
&lt;strong>flags&lt;/strong>&lt;br />
&lt;em>long flags();&lt;/em>&lt;br />
&lt;em>long flags(long);&lt;/em>&lt;br />
Устанавливает флаги форматирования. Возвращает ранее установленное значение флагов. &lt;br />
 &lt;br />
&lt;strong>good&lt;/strong>&lt;br />
&lt;em>int good();&lt;/em>&lt;br />
Возвращает ненулевое значение если не установлен ни один флаг состояния (ошибок нет). &lt;br />
 &lt;br />
&lt;strong>init&lt;/strong>&lt;br />
&lt;em>void init(streambuf *);&lt;/em>&lt;br />
Связывает ios с указанным &amp;lt;streambuf&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>precision&lt;/strong>&lt;br />
&lt;em>int precision();&lt;/em>&lt;br />
&lt;em>int precision(int);&lt;/em>&lt;br />
Устанавливает точность вещественных чисел. Возвращает предыдущее значение точности. &lt;br />
 &lt;br />
&lt;strong>rdbuf&lt;/strong>&lt;br />
&lt;em>streambuf* rdbuf();&lt;/em>&lt;br />
Возвращает указатель на буфер (объект класса &amp;lt;bufstream&amp;gt;), связанный с потоком. &lt;br />
 &lt;br />
&lt;strong>rdstate&lt;/strong>&lt;br />
&lt;em>int rdstate();&lt;/em>&lt;br />
Возвращает текущее состояние потока. &lt;br />
 &lt;br />
&lt;strong>setf&lt;/strong>&lt;br />
&lt;em>long setf(long);&lt;/em>&lt;br />
&lt;em>long setf(long setbits, long field);&lt;/em>&lt;br />
Устанавливает флаги по значению параметра или сбрасывает те биты состояния, которые отмечены в &amp;lt;field&amp;gt;, и устанавливает указанные в &amp;lt;setbits&amp;gt;. Возвращает предыдущие значения флагов. &lt;br />
 &lt;br />
&lt;strong>setstate&lt;/strong>&lt;br />
&lt;em>void setstate(int);&lt;/em>&lt;br />
Устанавливает указанные биты состояния. &lt;br />
 &lt;br />
&lt;strong>tie&lt;/strong>&lt;br />
&lt;em>ostream* tie();&lt;/em>&lt;br />
&lt;em>ostream* tie(ostream *);&lt;/em>&lt;br />
Организует поток, взаимосвязанный с потоком, на который указывает &amp;lt;ostream*&amp;gt;. Возвращает указатель на взаимосвязанный предыдущий поток, если такой есть. &lt;br />
 &lt;br />
&lt;strong>unself&lt;/strong>&lt;br />
&lt;em>long unself(long);&lt;/em>&lt;br />
Очищает указанные биты состояния потока. Возвращает предыдущее значение. &lt;br />
 &lt;br />
&lt;strong>width&lt;/strong>&lt;br />
&lt;em>int width();&lt;/em>&lt;br />
&lt;em>int width(int);&lt;/em>&lt;br />
Устанавливает ширину. Возвращает предыдущее значение. &lt;br />
 &lt;br />
&lt;strong>xalloc&lt;/strong>&lt;br />
&lt;em>static int xalloc();&lt;/em>&lt;br />
???? &lt;a name="h119-75">&lt;/a>&lt;h4>2.16.3 Компонентные функции класса ostream &amp;lt;iostream&amp;gt;&lt;/h4>
&lt;strong>flush&lt;/strong>&lt;br />
&lt;em>ostream&amp; flush(ostream&amp; outs);&lt;/em>&lt;br />
Сброс строки из буферов в поток; &lt;br />
 &lt;br />
&lt;strong>put&lt;/strong>&lt;br />
&lt;em>cout.put(char c);&lt;/em>&lt;br />
&lt;em>ostream&amp; put(char c);&lt;/em>&lt;br />
Вставить в поток символ &amp;lt;c&amp;gt; &lt;br />
 &lt;br />
&lt;strong>seekp&lt;/strong>&lt;br />
&lt;em>ostream&amp; seekp(long beg);&lt;/em>&lt;br />
&lt;em>ostream&amp; seekp(long beg, seek_dir);&lt;/em>&lt;br />
Перемещает указатель текущей позиции выходного потока. &lt;br />
 &lt;br />
&lt;strong>tellp&lt;/strong>&lt;br />
&lt;em>long tellp();&lt;/em>&lt;br />
Возвращает текущую позицию указателя записи для выходного потока. &lt;br />
 &lt;br />
&lt;strong>write&lt;/strong>&lt;br />
&lt;em>oatream&amp; write(const signed char *string, int n);&lt;/em>&lt;br />
&lt;em>ostream&amp; write(const unsigned char *string, int n);&lt;/em>&lt;br />
Помещает в выходной поток &amp;lt;n&amp;gt; символов из массива, на который указывает &amp;lt;string&amp;gt;. Нуль-символы включаются в число переносимых символов. &lt;a name="h119-76">&lt;/a>&lt;h4>2.16.4 Компонентные функции класса istream &amp;lt;iostream&amp;gt;&lt;/h4>
&lt;strong>gcount&lt;/strong>&lt;br />
&lt;em>int gcount;&lt;/em>&lt;br />
Возвращает число символов, извлеченных из потока последним обращением. &lt;br />
 &lt;br />
&lt;strong>get&lt;/strong>&lt;br />
&lt;em>istream&amp; get(char&amp; c);&lt;/em>&lt;br />
&lt;em>istream&amp; get(char* ptr, int len, char delim = '$\backslash $n');&lt;/em>&lt;br />
&lt;em>istream&amp; get(streambuf&amp; sb, char delim = '$\backslash $n');&lt;/em>&lt;br />
Извлекает из входного потока символы. &lt;br />
 &lt;br />
&lt;strong>getline&lt;/strong>&lt;br />
&lt;em>istream&amp; getline(signed char ,int sizeof(char), '$\backslash $n');&lt;/em>&lt;br />
Тоже что и get, но символ-разделителя, также, помещается в принятую строку символов. &lt;br />
 &lt;br />
&lt;strong>ignore&lt;/strong>&lt;br />
&lt;em>istream&amp; ignore(int n = 1,int delim = EOF);&lt;/em>&lt;br />
Пропускает до n символов входного потока. Останавливается, если встретился разделитель (второй параметр), по умолчанию равный EOF. &lt;br />
 &lt;br />
&lt;strong>peek&lt;/strong>&lt;br />
&lt;em>int peek();&lt;/em>&lt;br />
Извлекает следующий символ из входного потока не удаляя его в потоке. &lt;br />
 &lt;br />
&lt;strong>putback&lt;/strong>&lt;br />
&lt;em>istream&amp; putback(char);&lt;/em>&lt;br />
Помещает символ назад во входной поток. &lt;br />
 &lt;br />
&lt;strong>read&lt;/strong>&lt;br />
&lt;em>istream&amp; read(signed char *string, int n);&lt;/em>&lt;br />
&lt;em>istream&amp; read(unsigned char *string, int n);&lt;/em>&lt;br />
Извлекает из входного потока группу символов &amp;lt;n&amp;gt; и помещает их в массив &amp;lt;string&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>seekg&lt;/strong>&lt;br />
&lt;em>istream&amp; seekg(long beg);&lt;/em>&lt;br />
&lt;em>istream&amp; seekg(long beg, seek_dir);&lt;/em>&lt;br />
Перемещает указатель чтения входного потока. &lt;br />
 &lt;br />
&lt;strong>tellg&lt;/strong>&lt;br />
&lt;em>long tellg();&lt;/em>&lt;br />
Возвращает текущую позицию указателя чтения входного потока. &lt;br />
Таблица 14. &lt;strong>Флаги класса ios, управляющие форматированием ввода/вывода (манипуляторы потока)&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;strong>Имя&lt;/strong>&lt;/td>&lt;td  class="usercell">&lt;strong>Назначение&lt;/strong>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">app&lt;/td>&lt;td  class="usercell">Записать все данные в конец файла.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">ate&lt;/td>&lt;td  class="usercell">Переместиться в конец исходного открытого файла. Данные могут быть записаны в любое место файла.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">binary&lt;/td>&lt;td  class="usercell">Открыть файл для двоичного ввода или вывода.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">dec&lt;/td>&lt;td  class="usercell">Десятичная система счисления (ОСС=10).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">fixed&lt;/td>&lt;td  class="usercell">Использовать формат 123.45 для вывода вещественных чисел (с фиксированной точкой).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">hex&lt;/td>&lt;td  class="usercell">Шестнадцатеричная система счисления (ОСС = 16).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">in&lt;/td>&lt;td  class="usercell">Открыть файл для ввода.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">internal&lt;/td>&lt;td  class="usercell">Поместить разделительные символы после знака или основания системы счисления (ОСС).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">left&lt;/td>&lt;td  class="usercell">Выравнивать по левой стороне поля.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">oct&lt;/td>&lt;td  class="usercell">Восьмеричная система счисления (ОСС= 8).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">out&lt;/td>&lt;td  class="usercell">Открыть файл для вывода.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">right&lt;/td>&lt;td  class="usercell">Выравнивать по правой стороне поля.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">setfill(n)&lt;/td>&lt;td  class="usercell">Установка заполняющего символа &amp;lt;n&amp;gt;.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">scientific&lt;/td>&lt;td  class="usercell">Использовать формат 1.2345Е2 для вывода вещественных чисел (экспоненциальная или научная нотация).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">setbase(n)&lt;/td>&lt;td  class="usercell">Установка значения основания &amp;lt;n&amp;gt;.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">setprecision(n)&lt;/td>&lt;td  class="usercell">Установка точности &amp;lt;n&amp;gt;.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">setw(n)&lt;/td>&lt;td  class="usercell">Установка ширины поля &amp;lt;n&amp;gt;.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">showbase&lt;/td>&lt;td  class="usercell">Указывать ОСС при выводе.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">showpoint&lt;/td>&lt;td  class="usercell">Печатать десятичную точку и следующие за ней нули при выводе вещественных чисел.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">showpos&lt;/td>&lt;td  class="usercell">Добавлять '+' при выводе положительных чисел.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">skipws&lt;/td>&lt;td  class="usercell">Игнорировать символы разделители при вводе.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">stdio&lt;/td>&lt;td  class="usercell">Флэшировать stdout, sfcderr после операции.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">trunc&lt;/td>&lt;td  class="usercell">Отбрасывать содержимое файла, если он существует.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">uppercase&lt;/td>&lt;td  class="usercell">Шестнадцатеричные цифры печатать в верхнем регистре.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">unitbuf&lt;/td>&lt;td  class="usercell">Флэшировать потоки после операции.&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-77">&lt;/a>&lt;h3>2.17 Процессы.&lt;/h3>
&lt;strong>atexit (BSD) &amp;lt;stdlib.h, cstdlib&amp;gt;&lt;/strong>&lt;br />
&lt;em>int atexit(void (*function)(void));&lt;/em>&lt;br />
Регистрирует функцию, вызываемую при обычном завершении программы/процесса. Регистрация происходит цепочкой что позволяет регистрировать несколько функций. &lt;br />
 &lt;br />
&lt;strong>clone (LINUX) &amp;lt;sched.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int clone(int (*fn) (void *arg), void *child_stack, int flags, void *arg);&lt;/em>&lt;br />
Клонирует новую задачу на базе функции &amp;lt;fn&amp;gt; со стеком &amp;lt;child_stack&amp;gt; флагами &amp;lt;flags&amp;gt; и аргументами &amp;lt;arg&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>exec[c,l,e,p,v] (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int execl( const char *path, const char *arg, ...);&lt;/em>&lt;br />
&lt;em>int execlp( const char *file, const char *arg, ...);&lt;/em>&lt;br />
&lt;em>int execle( const char *path, const char *arg , ..., char * const envp[]);&lt;/em>&lt;br />
&lt;em>int execv( const char *path, char *const argv[]);&lt;/em>&lt;br />
&lt;em>int execvp( const char *file, char *const argv[]);&lt;/em>&lt;br />
&lt;em>int execve(const char *filename, char *const argv[], char *const envp[]);&lt;/em>&lt;br />
Заменяет выполняющуюся программу другой программой. Отличия функций:&lt;br />
&lt;ul>&lt;li> p - Производить поиск программы в каталогах описанных в PATH; 
&lt;/li>&lt;li> v - Принимать список аргументов программы в виде массива строковых указателей оканчивающихся NULL-указателем;
&lt;/li>&lt;li> l - Принимает список аргументов переменного размера;
&lt;/li>&lt;li> e - Принимать в дополнительном аргументе массив переменных сред.&lt;/li>&lt;/ul>
 &lt;br />
&lt;strong>exit, _exit, _exit (POSIX) &amp;lt;stdlib.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void exit(int status);&lt;/em>&lt;br />
&lt;em>void _exit(int status);&lt;/em>&lt;br />
exit - обычное завершение работы программы/процесса. _exit - немедленное завершение работы программы/процесса.&lt;br />
 &lt;br />
&lt;strong>fork (POSIX) &amp;lt;sys/types.h; unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int fork();&lt;/em>&lt;br />
Порождает дочерний процесс. Родительскому процессу возвращается ID дочернего процесса ,а дочернему 0. &lt;br />
 &lt;br />
&lt;strong>getpid, getppid (POSIX) &amp;lt;sys/types.h, unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>pid_t getpid(void);&lt;/em>&lt;br />
&lt;em>pid_t getppid(void);&lt;/em>&lt;br />
getpid - возвращает идентификатор текущего процесса (PID). getppid - возвращает идентификатор родительского процесса(PPID). &lt;br />
 &lt;br />
&lt;strong>nice (BSD) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int nice(int inc);&lt;/em>&lt;br />
Устанавливает фактор уступчивости вызывающего процесса в величину &amp;lt;inc&amp;gt; (-39..39). Чем фактор больше, тем ниже приоритет процесса. &lt;br />
 &lt;br />
&lt;strong>sched_setparam, sched_getparam (POSIX) &amp;lt;sched.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sched_setparam(pid_t pid, const struct sched_param *p);&lt;/em>&lt;br />
&lt;em>int sched_getparam(pid_t pid, struct sched_param *p);&lt;/em>&lt;br />
Установка/получение параметров диспетчеризации процесса. &lt;br />
 &lt;br />
&lt;strong>sched_setscheduler, sched_getscheduler (POSIX) &amp;lt;sched.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sched_setscheduler(pid_t pid, int policy, const struct sched_param *p);&lt;/em>&lt;br />
&lt;em>int sched_getscheduler(pid_t pid);&lt;/em>&lt;br />
Установка/получение политики диспетчеризации процесса. &lt;br />
 &lt;br />
&lt;strong>sched_get_priority_max, sched_get_priority_min (POSIX) &amp;lt;sched.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sched_get_priority_max(int policy);&lt;/em>&lt;br />
&lt;em>int sched_get_priority_min(int policy);&lt;/em>&lt;br />
Получение максимального/минимального значения приоритета процесса. &lt;br />
 &lt;br />
&lt;strong>sched_rr_get_interval (POSIX) &amp;lt;sched.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sched_rr_get_interval(pid_t pid, struct timespec *tp);&lt;/em>&lt;br />
Получить SCHED_RR интервал для указанного процесса. &lt;br />
 &lt;br />
&lt;strong>sched_yield (POSIX) &amp;lt;sched.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sched_yield(void);&lt;/em>&lt;br />
Отбать процесорное время другим процессам. &lt;br />
 &lt;br />
&lt;strong>setsid (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>pid_t setsid(void);&lt;/em>&lt;br />
Вызывающий процесс становится ведущим в группе, ведущим процессом нового сеанса и не имеет контролирующего терминала. &lt;br />
 &lt;br />
&lt;strong>setpgid, getpgid, setpgrp, getpgrp (POSIX, BSD) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int setpgid(pid_t pid, pid_t pgid);&lt;/em>&lt;br />
&lt;em>pid_t getpgid(pid_t pid);&lt;/em>&lt;br />
&lt;em>int setpgrp(void);&lt;/em>&lt;br />
&lt;em>pid_t getpgrp(void);&lt;/em>&lt;br />
Устанавливает/получает идентификатор группы процессов &lt;br />
 &lt;br />
&lt;strong>system (ANSI,POSIX) &amp;lt;stdlib.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int system (const char * string);&lt;/em>&lt;br />
Выполняет, указанные в string, системные команды. &lt;br />
 &lt;br />
&lt;strong>wait, waitpid, wait3, wait4 (POSIX) &amp;lt;sys/types.h, sys/wait.h, sys/resource.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>pid_t wait(int *status);&lt;/em>&lt;br />
&lt;em>pid_t waitpid(pid_t pid, int *status, int options);&lt;/em>&lt;br />
&lt;em>pid_t wait3(int *status, int options, struct rusage *rusage);&lt;/em>&lt;br />
&lt;em>pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);&lt;/em>&lt;br />
Приостанавливают выполнение процесса до тех пор, пока дочерний процесс не завершится, или до появления сигнала, который либо завершает текущий процесс, либо требует вызвать функцию-обработчик. Если дочерний процесс к моменту вызова функции уже завершился (так называемый "зомби" ("zombie")), то функция немедленно возвращается. Параметр pid: &lt;br />
&lt;ul>&lt;li> &amp;lt; -1  -- нужно ждать любого дочернего процесса, идентификатор группы процессов которого равен абсолютному значению &amp;lt;pid&amp;gt;; 
&lt;/li>&lt;li> -1  -- ожидание любого дочернего процесса; 
&lt;/li>&lt;li> 0  -- означает ожидание любого дочернего процесса, идентификатор группы процессов которого равен идентификатору текущего процесса;
&lt;/li>&lt;li> &amp;gt; 0  -- ожидание дочернего процесса, чей идентификатор равен pid;&lt;/li>&lt;/ul>
В &amp;lt;rusage&amp;gt; записывается структура struct rusage, заданная в &amp;lt;sys/resource.h&amp;gt;, заполненная соответствующей информацией.&lt;a name="h119-78">&lt;/a>&lt;h3>2.18 Сигналы.&lt;/h3>
&lt;strong>kill (POSIX) &amp;lt;sys/types.h, signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int kill(pid_t pid, int sig);&lt;/em>&lt;br />
Системный вызов kill используется для того, чтобы послать сигнал процессу или группе процессов. Если:&lt;br />
&lt;ul>&lt;li> pid &amp;gt; 0 - сигнал sig посылается процессу pid.
&lt;/li>&lt;li> pid = 0 - сигнал sig посылается всем процессам текущей группы.
&lt;/li>&lt;li> pid = -1 - сигнал sig посылается всем процессам текущей группы, кроме первого.&lt;/li>&lt;/ul>
 &lt;br />
&lt;strong>pause (SVr4, SVID, POSIX, X/OPEN, BSD 4.3) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pause(void);&lt;/em>&lt;br />
Ожидание сигнала. &lt;br />
 &lt;br />
&lt;strong>raise (ANSI) &amp;lt;signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int raise(int sig);&lt;/em>&lt;br />
Посылает сигнал &amp;lt;sig&amp;gt; текущему процессу. &lt;br />
 &lt;br />
&lt;strong>sigaction (POSIX) &amp;lt;signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);&lt;/em>&lt;br />
Используется для изменения действий процесса при получении соответствующего сигнала &amp;lt;signum&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>signal (ANSI) &amp;lt;signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void (*signal(int signum, void (*sighandler)(int)))(int);&lt;/em>&lt;br />
Устанавливает функцию &amp;lt;sighandler&amp;gt; обработки сигнала &amp;lt;signum&amp;gt;. Таблица 15. &lt;br />
 &lt;br />
&lt;strong>sigpending (POSIX) &amp;lt;signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sigpending(sigset_t *set);&lt;/em>&lt;br />
Определяет наличие ожидающих сигналов. &lt;br />
 &lt;br />
&lt;strong>sigprocmask (POSIX) &amp;lt;signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);&lt;/em>&lt;br />
Изменяет список блокированных в данный момент сигналов. &lt;br />
 &lt;br />
&lt;strong>sigsuspend (POSIX) &amp;lt;signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sigsuspend(const sigset_t *mask);&lt;/em>&lt;br />
Временно изменяет значение маски блокировки сигналов процесса на указанное в mask, и затем приостанавливает работу процесса до получения соответствующего сигнала. &lt;br />
 &lt;br />
&lt;strong>sigwait (POSIX) &amp;lt;signal.h, pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sigwait(const sigset_t *set, int *sig);&lt;/em>&lt;br />
Блокирует поток до генерации сигналов указанных в &amp;lt;set&amp;gt;. Номер сгенерированного сигнала помещается в &amp;lt;sig&amp;gt;. &lt;br />
Таблица 15. &lt;strong>Стандартные сигналы&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;strong>Сигнал&lt;/strong>&lt;/td>&lt;td  class="usercell">&lt;strong>Назначение&lt;/strong>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGHUP&lt;/td>&lt;td  class="usercell">Освобождение линии.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGINT&lt;/td>&lt;td  class="usercell">Прерывание процесса.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGQUIT&lt;/td>&lt;td  class="usercell">Выход.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGILL&lt;/td>&lt;td  class="usercell">Недостоверная инструкция.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGTRAP&lt;/td>&lt;td  class="usercell">Трассировочное прерывание.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGIOT&lt;/td>&lt;td  class="usercell">Машинная команда IOT.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGABRT&lt;/td>&lt;td  class="usercell">Аварийное прерывание.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGEMPT&lt;/td>&lt;td  class="usercell">Машинная команда EMT.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGFPE&lt;/td>&lt;td  class="usercell">Исключение floatpoint.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGKILL&lt;/td>&lt;td  class="usercell">Уничтожение процесса (KILL).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGBUS&lt;/td>&lt;td  class="usercell">Ошибка шины (bus error).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGSYS&lt;/td>&lt;td  class="usercell">Ошибка сегментации памяти.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGPIPE&lt;/td>&lt;td  class="usercell">Запись в канал, из которого некому читать.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGALRM&lt;/td>&lt;td  class="usercell">Будильник (alarm clock).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGPROF&lt;/td>&lt;td  class="usercell">Срабатывание профилирующего таймера. Устанавливается: setitimer(ITIMER_PROF, ..)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGVTALRM&lt;/td>&lt;td  class="usercell">Срабатывание виртуального таймера. Устанавл.: setitimer(ITIMER_VIRTUAL, ..)&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGTERM&lt;/td>&lt;td  class="usercell">Программный сигнал завершения.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGUSR1&lt;/td>&lt;td  class="usercell">Пользовательский сигнал 1.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGUSR2&lt;/td>&lt;td  class="usercell">Пользовательский сигнал 2.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGCHLD&lt;/td>&lt;td  class="usercell">Завершение порожденного процесса.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGPWR&lt;/td>&lt;td  class="usercell">Ошибка питания (power fail).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGWIND&lt;/td>&lt;td  class="usercell">Изменение окна.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGPHONE&lt;/td>&lt;td  class="usercell">Изменение строки состояния.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGPOLL&lt;/td>&lt;td  class="usercell">Возникновение опрашиваемого события.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">_NSIG&lt;/td>&lt;td  class="usercell">Максимальный сигнал.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGCONT&lt;/td>&lt;td  class="usercell">Продолжения работы остановленого процесса.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGSTOP&lt;/td>&lt;td  class="usercell">Сигнал останова.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGTSTR&lt;/td>&lt;td  class="usercell">Терминальный сигнал остановки (Ctrl Z).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGTTIN&lt;/td>&lt;td  class="usercell">Попытка ввода с терминала фоновым процессом.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGTTOUT&lt;/td>&lt;td  class="usercell">Попытка вывода на терминал фоновым процессом.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGURG&lt;/td>&lt;td  class="usercell">Поступление в буфер сокета срочных данных.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGXCPU&lt;/td>&lt;td  class="usercell">Превышение лимита процессорного времени.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SIGXFSZ&lt;/td>&lt;td  class="usercell">Превышение лимита на размер файла.&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-79">&lt;/a>&lt;h3>2.19 Потоки.&lt;/h3>
&lt;strong>pthread_attr_init (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_attr_init(pthread_attr_t *attr);&lt;/em>&lt;br />
Инициализация атрибутов &amp;lt;attr&amp;gt; канала, стандартными значениями. &lt;br />
 &lt;br />
&lt;strong>pthread_kill (POSIX) &amp;lt;pthread.h, signal.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_kill(pthread_t thread, int signo);&lt;/em>&lt;br />
Послать сигнал &amp;lt;signo&amp;gt; потоку &amp;lt;thread&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>pthread_attr_destroy (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_attr_destroy(pthread_attr_t *attr);&lt;/em>&lt;br />
Удаление из памяти атрибутов &amp;lt;attr&amp;gt; ранее инициализированных. &lt;br />
 &lt;br />
&lt;strong>pthread_attr_setschedpolicy, pthread_attr_getschedpolicy (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);&lt;/em>&lt;br />
&lt;em>int pthread_attr_getschedpolicy(const pthread_attr_t *attr, int *policy);&lt;/em>&lt;br />
Получить, установить тактику &amp;lt;policy&amp;gt; управления потоком в соответствии с &amp;lt;attr&amp;gt;. Тактика может быть: &lt;br />
&lt;ul>&lt;li> &lt;strong>SCHED_OTHER&lt;/strong> - регулярное, не РВ разделение;
&lt;/li>&lt;li> &lt;strong>SCHED_RR&lt;/strong> - РВ, (round-robin);
&lt;/li>&lt;li> &lt;strong>SCHED_FIFO&lt;/strong> - РВ, (first in first out).&lt;/li>&lt;/ul>
&lt;strong>pthread_attr_setschedparam, pthread_attr_getschedparam (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);&lt;/em>&lt;br />
&lt;em>int pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param);&lt;/em>&lt;br />
Установка/получение параметров(приоритета) &amp;lt;param&amp;gt; разделения времени для РВ тактик. &lt;br />
 &lt;br />
&lt;strong>pthread_attr_setdetachstate, pthread_attr_getdetachstate (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);&lt;/em>&lt;br />
&lt;em>int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachstate);&lt;/em>&lt;br />
Установка/получение статуса отсоединения потока. &lt;br />
 &lt;br />
&lt;strong>pthread_create (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_create(pthread_t * thread, pthread_attr_t *attr, void * (*start_routine)(void *), void * arg);&lt;/em>&lt;br />
Создает новый поток &amp;lt;thread&amp;gt; с атрибутами &amp;lt;attr&amp;gt; и запускает в потоке функцию &amp;lt;start_routine&amp;gt; с аргументами &amp;lt;arg&amp;gt;. Созданная задача разделяет код и память с родителем; &lt;br />
 &lt;br />
&lt;strong>pthread_detach (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_detach(pthread_t th);&lt;/em>&lt;br />
Делает указанный &amp;lt;th&amp;gt; поток в отсоединенное состояние. &lt;br />
 &lt;br />
&lt;strong>pthread_equal (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_equal(pthread_t thread1, pthread_t thread2);&lt;/em>&lt;br />
Сравнивает два потока на эквивалентность. &lt;br />
 &lt;br />
&lt;strong>pthread_exit (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void pthread_exit(void *retval);&lt;/em>&lt;br />
Прекращает выполнение вызвавшего функцию потока с кодом возврата в &amp;lt;retval&amp;gt; &lt;br />
 &lt;br />
&lt;strong>pthread_join (POSIX) &amp;lt;pthread.h&amp;gt;.&lt;/strong>&lt;br />
&lt;em>int pthread_join(pthread_t *th, void **thread_return);&lt;/em>&lt;br />
Ожидает завершение потока &amp;lt;th&amp;gt;. После завершения код возврата помещается в &amp;lt;thread_return&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>pthread_self (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>pthread_t pthread_self(void);&lt;/em>&lt;br />
Возвращает идентификатор текущего потока. &lt;br />
 &lt;br />
&lt;strong>pthread_sigprocmask (POSIX) &amp;lt;signal.h, pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_sigprocmask(int how, const sigset_t *set, sigset_t *oldset);&lt;/em>&lt;br />
Изменяет список блокированных в данный момент сигналов для текущего потока. &lt;a name="h119-80">&lt;/a>&lt;h4>2.19.1 Отмена потоков&lt;/h4>
&lt;strong>pthread_cancel (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_cancel(pthread_t thread);&lt;/em>&lt;br />
Отмена указанного &amp;lt;thread&amp;gt; потока. &lt;br />
 &lt;br />
&lt;strong>pthread_setcanceltype (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_setcanceltype(int type, int *oldtype);&lt;/em>&lt;br />
Установка типа отмены в &amp;lt;type&amp;gt; и сохранение текущего в &amp;lt;oldtype&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>pthread_testcancel (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void pthread_testcancel(void);&lt;/em>&lt;br />
Установка точки отмена. &lt;br />
 &lt;br />
&lt;strong>pthread_setcancelstate (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_setcancelstate(int state, int *oldstate);&lt;/em>&lt;br />
Установка состояния отмены потока в &amp;lt;state&amp;gt; и сохранение текущего в &amp;lt;oldstate&amp;gt;. &lt;a name="h119-81">&lt;/a>&lt;h4>2.19.2 Глобальные данные потоков&lt;/h4>
&lt;strong>pthread_key_create (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_key_create(pthread_key_t *key, void (*destr_function)(void *));&lt;/em>&lt;br />
Создание ключа &amp;lt;key&amp;gt;, новой глобальной переменной. Можно указать функцию очистки ключа &amp;lt;destr_function&amp;gt; при уничтожении потока. &lt;br />
 &lt;br />
&lt;strong>pthread_key_delete (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_key_delete(pthread_key_t key);&lt;/em>&lt;br />
Удаление ключа &amp;lt;key&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>pthread_setspecific, pthread_getspecific (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_setspecific(pthread_key_t key, const void *pointer);&lt;/em>&lt;br />
&lt;em>void *pthread_getspecific(pthread_key_t key);&lt;/em>&lt;br />
Запись/чтение глобальных потоковых переменных по ключу &amp;lt;key&amp;gt;. &lt;a name="h119-82">&lt;/a>&lt;h4>2.19.3 Обычные потоковые семафоры&lt;/h4>
&lt;strong>sem_init, sem_destroy (POSIX) &amp;lt;semaphore.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sem_init(sem_t *sem, int pshared, unsigned int value);&lt;/em>&lt;br />
&lt;em>int sem_destroy(sem_t * sem);&lt;/em>&lt;br />
Инициализация/удаление семафора &amp;lt;sem&amp;gt;. &amp;lt;pshared&amp;gt; должен быть равен нулю. &amp;lt;value&amp;gt; - Стартовое значение семафора. &lt;br />
 &lt;br />
&lt;strong>sem_getvalue (POSIX) &amp;lt;semaphore.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sem_getvalue(sem_t * sem, int * sval);&lt;/em>&lt;br />
Получить текущее состояние &amp;lt;sval&amp;gt; семафора &amp;lt;sem&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>sem_post (POSIX) &amp;lt;semaphore.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sem_post(sem_t * sem);&lt;/em>&lt;br />
Установка семафора (+1). &lt;br />
 &lt;br />
&lt;strong>sem_wait (POSIX) &amp;lt;semaphore.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sem_wait(sem_t * sem);&lt;/em>&lt;br />
Ожидает ненулевого значения семафора. При вызове функции значение семафора уменьшается на единицу. &lt;br />
 &lt;br />
&lt;strong>sem_trywait (POSIX) &amp;lt;semaphore.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int sem_trywait(sem_t * sem);&lt;/em>&lt;br />
Неблокирующие ожидания ненулевого значения семафора. &lt;br />
 &lt;a name="h119-83">&lt;/a>&lt;h4>2.19.4 Исключающие семафоры&lt;/h4>
&lt;strong>thread_mutex_init, pthread_mutex_destroy (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);&lt;/em>&lt;br />
&lt;em>int pthread_mutex_destroy(pthread_mutex_t *mutex);&lt;/em>&lt;br />
Инициализация/удаление исключающего семафора &amp;lt;mutex&amp;gt; с атрибутами &amp;lt;mutexattr&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>int pthread_mutex_lock, pthread_mutex_unlock (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_mutex_lock(pthread_mutex_t *mutex);&lt;/em> &lt;br />
&lt;em>int pthread_mutex_unlock(pthread_mutex_t *mutex);&lt;/em>&lt;br />
Захват/освобождение исключающего семафора &amp;lt;mutex&amp;gt;. Если семафор занят поток блокируется до освобождения. &lt;br />
 &lt;br />
&lt;strong>pthread_mutex_trylock (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_mutex_trylock(pthread_mutex_t *mutex);&lt;/em>&lt;br />
Попытка захвата исключающего семафора &amp;lt;mutex&amp;gt;. Если семафор занят возвращается BUSY. &lt;br />
 &lt;br />
&lt;strong>pthread_mutexattr_init, pthread_mutexattr_destroy (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_mutexattr_init(pthread_mutexattr_t *attr);&lt;/em>&lt;br />
&lt;em>int pthread_mutexattr_destroy(pthread_mutexattr_t *attr);&lt;/em>&lt;br />
Создание/удаление атрибутов для &amp;lt;attr&amp;gt; исключающего семафора. &lt;br />
 &lt;br />
&lt;strong>pthread_mutexattr_setkind_np, pthread_mutexattr_getkind_np (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_mutexattr_setkind_np(pthread_mutexattr_t *attr, int kind);&lt;/em>&lt;br />
&lt;em>int pthread_mutexattr_getkind_np(const pthread_mutexattr_t *attr, int *kind);&lt;/em>&lt;br />
Установка/получение типа исключающего семафора &amp;lt;kind&amp;gt;. &lt;br />
 &lt;a name="h119-84">&lt;/a>&lt;h4>2.19.5 Сигнальные переменные&lt;/h4>
&lt;strong>pthread_cond_init, pthread_cond_destroy (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_cond_init(pthread_cond_t *cond, pthread_condattr_t *cond_attr);&lt;/em>&lt;br />
&lt;em>int pthread_cond_destroy(pthread_cond_t *cond);&lt;/em>&lt;br />
сохранение/удалении сигнальной переменной &amp;lt;cond&amp;gt;. &amp;lt;cond_attr&amp;gt; должна быть NULL. &lt;br />
 &lt;br />
&lt;strong>pthread_cond_signal, pthread_cond_broadcast (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_cond_signal(pthread_cond_t *cond);&lt;/em>&lt;br />
&lt;em>int pthread_cond_broadcast(pthread_cond_t *cond);&lt;/em>&lt;br />
Разблокирует один/все потоки ожидающие сигнальной переменной &amp;lt;cond&amp;gt;; &lt;br />
 &lt;br />
&lt;strong>pthread_cond_wait (POSIX) &amp;lt;pthread.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex);&lt;/em>&lt;br />
&lt;em>int pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime);&lt;/em>&lt;br />
Блокирует текущий поток на базе исключающего семафора &amp;lt;mutex&amp;gt; до изменения сигнальной переменной &amp;lt;cond&amp;gt; с таймаутом &amp;lt;abstime&amp;gt;. &lt;a name="h119-85">&lt;/a>&lt;h3>2.20 IPC&lt;/h3>
&lt;strong>ftok &amp;lt;sys/types.h, sys/ipc.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>key_t ftok(char *pathname, char proj);&lt;/em>&lt;br />
Преобразовывает имя файла и идентификатор проекта в ключ для системных вызовов. &lt;a name="h119-86">&lt;/a>&lt;h4>2.20.1 Сообщения&lt;/h4>
&lt;strong>msgctl (SVr4, SVID) &amp;lt;sys/types.h, sys/ipc.h, sys/msg.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int msgctl(int msqid, int cmd, struct msqid_ds *buf);&lt;/em>&lt;br />
Послать команду &amp;lt;cmd&amp;gt; сообщению &amp;lt;msqid&amp;gt; с параметрами &amp;lt;buf&amp;gt;; &lt;br />
 &lt;br />
&lt;strong>msgget (SVr4, SVID) &amp;lt;sys/types.h, sys/ipc.h, sys/msg.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int msgget(key_t key, int msgflg);&lt;/em>&lt;br />
Возвращает дескриптор очереди сообщений для ключа &amp;lt;key&amp;gt; с правами доступа &amp;lt;msgflg&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>msgsnd (SVr4, SVID) &amp;lt;sys/types.h, sys/ipc.h, sys/msg.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int msgsnd(int msqid, struct msgbuf *msgp, size_t msgsz, int msgflg);&lt;/em>&lt;br />
Отправить сообщение &amp;lt;msgp&amp;gt; длиной &amp;lt;msgsz&amp;gt; и с флагами &amp;lt;msgflg&amp;gt;, по дескриптору сообщения &amp;lt;msqid&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>msgrcv (SVr4, SVID) &amp;lt;sys/types.h, sys/ipc.h, sys/msg.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>ssize_t msgrcv(int msqid, struct msgbuf *msgp, size_t msgsz, long msgtyp, int msgflg);&lt;/em>&lt;br />
Получить сообщение из дескриптора сообщения msqid, в буфер &amp;lt;msgp&amp;gt; размером &amp;lt;msgsz&amp;gt; с типом &amp;lt;msgtyp&amp;gt; и флагами &amp;lt;msgflg&amp;gt;. Если &amp;lt;msgtyp&amp;gt;=0 - читать первое сообщение из очереди, если &amp;lt; 0 - получить сообщение с минимальным типом не менее msgtyp. &lt;a name="h119-87">&lt;/a>&lt;h4>2.20.2 Семафоры&lt;/h4>
&lt;strong>semget (SVID) &amp;lt;sys/types.h, sys/ipc.h, sys/sem.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int semget(key_t key, int nsems, int semflg);&lt;/em>&lt;br />
Возвращает идентификатор семафора в соответствии с ключом &amp;lt;key&amp;gt;, опциями &amp;lt;semflg&amp;gt; и количеством семафором &amp;lt;nsems&amp;gt; (Табл [*]). &lt;br />
 &lt;br />
&lt;strong>semctl (SVID) &amp;lt;sys/types.h, sys/ipc.h, sys/sem.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int semctl(int semid, int semnum, int cmd, union semun arg);&lt;/em>&lt;br />
Производит операции &amp;lt;cmd&amp;gt; (Табл [*]) по управлению семафорами. &lt;br />
 &lt;br />
&lt;strong>semop (SVID) &amp;lt;sys/types.h, sys/ipc.h, sys/sem.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int semop(int semid, struct sembuf *sops, unsigned nsops);&lt;/em>&lt;br />
Производит операции над выбранными элементами из набора семафоров &amp;lt;semid&amp;gt;. Каждый из элементов &amp;lt;nsops&amp;gt; в массиве &amp;lt;sops&amp;gt; определяет операцию, производимую над семафором в структуре &amp;lt;struct sembuf&amp;gt;. &lt;a name="h119-88">&lt;/a>&lt;h4>2.20.3 Разделяемая память&lt;/h4>
&lt;strong>shm_open (POSIX.1-2001) &amp;lt;sys/types.h, sys/mman.h, fcntl.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int shm_open(const char *name, int oflag, mode_t mode);&lt;/em>&lt;br />
Создание/открытие разделяемого объекта памяти под именем &lt;em>&amp;lt;name&amp;gt;&lt;/em>.&lt;br />
&lt;strong>shm_unlink (POSIX.1-2001) &amp;lt;sys/types.h, sys/mman.h, fcntl.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int shm_unlink(const char *name);&lt;/em>&lt;br />
Удаление /отключение разделяемого объекта памяти с именем &lt;em>&amp;lt;name&amp;gt;&lt;/em>.&lt;br />
&lt;strong>shmget (SVID) &amp;lt;sys/ipc.h, sys/shm.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int shmget(key_t key, int size, int shmflg);&lt;/em>&lt;br />
Возвращает идентификатор разделяемой памяти в соответствии с ключом &amp;lt;key&amp;gt;, размером &amp;lt;size&amp;gt; и опциями &amp;lt;shmflg&amp;gt; (Табл.16). &lt;br />
 &lt;br />
&lt;strong>shmat, shmdt (SVID) &amp;lt;sys/types.h, sys/shm.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>void *shmat(int shmid, const void *shmaddr, int shmflg);&lt;/em>&lt;br />
&lt;em>int shmdt(const void *shmaddr);&lt;/em>&lt;br />
&amp;lt;shmat&amp;gt; - присоединяет сегмент разделяемой памяти &amp;lt;shmid&amp;gt; к сегменту данных вызывающего процесса. Адрес присоединяемого сегмента определяется функцией &amp;lt;shmaddr&amp;gt;. &lt;br />
&amp;lt;shmdt&amp;gt; - отстыковывает от сегмента данных вызывающего процесса сегмент разделяемой памяти, находящийся по адресу &amp;lt;shmaddr&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>shmctl (SVID) &amp;lt;sys/ipc.h, sys/shm.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int shmctl(int shmid, int cmd, struct shmid_ds *buf);&lt;/em>&lt;br />
Производит операции &amp;lt;cmd&amp;gt; (Табл.17) по управлению разделяемыми сегментами памяти. &lt;br />
Таблица 16. &lt;strong>Флаги доступа к IPC&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;strong>Флаг&lt;/strong>&lt;/td>&lt;td  class="usercell">&lt;strong>Назначение&lt;/strong>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">IPC_CREAT&lt;/td>&lt;td  class="usercell">Создавать при отсутствии.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">IPC_EXCL&lt;/td>&lt;td  class="usercell">Ошибка, если существует и используется PC_CREAT.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">IPC_NOWAIT&lt;/td>&lt;td  class="usercell">Выход по ошибке отсутствия, без ожидания.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">MSG_NOERROR&lt;/td>&lt;td  class="usercell">Не выходить по ошибке в длине сообщения, а обрезать его.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SHM_RN&lt;/td>&lt;td  class="usercell">Округление до ближайшей страницы.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SHM_RDONLY&lt;/td>&lt;td  class="usercell">Открыть разделяемую область в режиме только для чтения.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SEM_UNDO&lt;/td>&lt;td  class="usercell">Отменить действия при завершении процесса.&lt;/td>&lt;/tr>
&lt;/table>
Таблица 17. &lt;strong>Операции над IPC&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;strong>Операция&lt;/strong>&lt;/td>&lt;td  class="usercell">&lt;strong>Описание&lt;/strong>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">GETALL&lt;/td>&lt;td  class="usercell">Получение значений всех семафоров множества.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">GETNCNT&lt;/td>&lt;td  class="usercell">Число процессов ожидающих ресурсов.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">GETPID&lt;/td>&lt;td  class="usercell">Возвращает PID процесса выполнившего вызов &amp;lt;semop&amp;gt;.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">GETVAL&lt;/td>&lt;td  class="usercell">Возвращает значение одного семафора из множества.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">GETZCNT&lt;/td>&lt;td  class="usercell">Число процессов ожидающих 100% освобождения ресурса.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">IPC_RMID&lt;/td>&lt;td  class="usercell">Удалить очередь из ядра.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">IPC_STAT&lt;/td>&lt;td  class="usercell">Сохранить структуру с ID в буфере.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">IPC_SET&lt;/td>&lt;td  class="usercell">Устанавливает ipc_perm структуры c ID.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SETALL&lt;/td>&lt;td  class="usercell">Устанавливает значения семафоров множества, взятые из элемента &amp;lt;array&amp;gt; объединения.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SETVAL&lt;/td>&lt;td  class="usercell">Устанавливает значение конкретного семафора как элемент &amp;lt;val&amp;gt; объединения.&lt;/td>&lt;/tr>
&lt;/table>&lt;a name="h119-89">&lt;/a>&lt;h3>2.21 Каналы&lt;/h3>
&lt;strong>mkfifo (POSIX) &amp;lt;sys/types.h, sys/stat.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int mkfifo ( const char *pathname, mode_t mode );&lt;/em>&lt;br />
Создает FIFO-файл &amp;lt;pathname&amp;gt; (именованный канал). Размер атомарного буфера составляет PIPE_BUF. &lt;br />
 &lt;br />
&lt;strong>pipe (POSIX) &amp;lt;unistd.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int pipe(int filedes[2]);&lt;/em>&lt;br />
Создает два файловых описателя, указывающих на неименнованый канал, и помещает их в массив filedes. filedes[0] - для чтения, filedes[1] - для записи. &lt;br />
 &lt;br />
&lt;strong>popen, pclose (POSIX) &amp;lt;stdio.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>FILE *popen(const char *command, const char *type);&lt;/em>&lt;br />
&lt;em>int pclose(FILE *stream);&lt;/em>&lt;br />
Открывает/закрывает канал с запускаемым процессом &amp;lt;command&amp;gt;. &lt;br />
 &lt;a name="h119-90">&lt;/a>&lt;h3>2.22 Сокеты&lt;/h3>
&lt;strong>accept (BSD) &amp;lt;sys/types.h, sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int accept(int s, struct sockaddr *addr, socklen_t *addrlen);&lt;/em>&lt;br />
Возвращает описатель сокета клиента пославшего запрос на сокет &amp;lt;s&amp;gt; с адресом &amp;lt;addr, addrlen&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>bind (BSD) &amp;lt;sys/types.h, sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);&lt;/em>&lt;br />
Связывает открытый сокет &amp;lt;sockfd&amp;gt; с именем длиной &amp;lt;addrlen&amp;gt; в &amp;lt;my_addr&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>listen (POSIX) &amp;lt;sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int listen(int s, int backlog);&lt;/em>&lt;br />
Прослушивает соединения на сокете &amp;lt;s&amp;gt; с длиной очереди полностью установленных сокетов &amp;lt;backlog&amp;gt; &lt;br />
 &lt;br />
&lt;strong>recv, recvfrom, recvmsg (BSD) &amp;lt;sys/uio.h sys/types.h sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int recv(int s, void *buf, size_t len, int flags);&lt;/em>&lt;br />
&lt;em>int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);&lt;/em>&lt;br />
&lt;em>int recvmsg(int s, struct msghdr *msg, int flags);&lt;/em>&lt;br />
Системные вызовы recvfrom и recvmsg используются для получения сообщений из сокета независимо от того, является ли сокет ориентированным на соединения или нет. Вызов recv обычно делается только через соединенный сокет. &lt;br />
 &lt;br />
&lt;strong>send, sendto, sendmsg (BSD, POSIX) &amp;lt;sys/types.h, sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int send(int s, const void *msg, size_t len, int flags);&lt;/em>&lt;br />
&lt;em>int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen);&lt;/em>&lt;br />
&lt;em>int sendmsg(int s, const struct msghdr *msg, int flags);&lt;/em>&lt;br />
send, sendto, и sendmsg используются для пересылки сообщений в другой сокет. send можно использовать, только если сокет находится в состоянии соединения, тогда как sendto и sendmsg можно использовать в любое время. &lt;br />
 &lt;br />
&lt;strong>socket (BSD) &amp;lt;sys/types.h, sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int socket(int domain, int type, int protocol);&lt;/em>&lt;br />
Возвращает описатель нового сокета &amp;lt;socket&amp;gt;. &amp;lt;domain&amp;gt; - задает домен соединения (Табл.18). &lt;br />
&amp;lt;type&amp;gt; - задающий семантику коммуникации (Табл.19). &lt;br />
&amp;lt;protocol&amp;gt; - задает конкретный протокол, который работает с сокетом. &lt;br />
 &lt;br />
&lt;strong>shutdown (BSD) &amp;lt;sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int shutdown(int s, int how);&lt;/em>&lt;br />
Приводит к закрытию всего полнодуплексного соединения или его части в сокете, связанном с описателем &amp;lt;s&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>socketpair (BSD) &amp;lt;sys/types.h, sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int socketpair(int d, int type, int protocol, int sv[2]);&lt;/em>&lt;br />
Функция создает пару неименнованых связанных сокетов в заданном домене &amp;lt;d&amp;gt; типа &amp;lt;type&amp;gt;, используя заданный протокол &amp;lt;protocol&amp;gt;. Описатели заданных сокетов возвращаются в sv[0] и sv[1]. &lt;br />
 &lt;br />
&lt;strong>gethostbyname (BSD) &amp;lt;sys/socket.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>struct hostent *gethostbyname(const char *name);&lt;/em>&lt;br />
Возвращает структуру типа hostent машине с именем name. &lt;br />
 &lt;br />
&lt;strong>htonl, htons, ntohl, ntohs (BSD)uint32_t htonl(uint32_t hostlong);&lt;/strong>&lt;br />
&lt;em>uint16_t htons(uint16_t hostshort);&lt;/em>&lt;br />
&lt;em>uint32_t ntohl(uint32_t netlong);&lt;/em>&lt;br />
&lt;em>uint16_t ntohs(uint16_t netshort);&lt;/em>&lt;br />
Переводят данные из хостового порядка расположения байтов в сетевой и наоборот &lt;br />
 &lt;br />
&lt;strong>inet_pton (BSD) &amp;lt;sys/types.h, sys/socket.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int inet_pton(int af, const char *src, void *dst);&lt;/em>&lt;br />
Преобразует строку символов &amp;lt;src&amp;gt; в сетевой адрес (типа &amp;lt;af&amp;gt;), затем копирует полученную структуру с адресом в &amp;lt;dst&amp;gt;. &lt;br />
 &lt;br />
&lt;strong>inet_aton (BSD) &amp;lt;sys/socket.h, netinet/in.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>int inet_aton(const char *cp, struct in_addr *inp);&lt;/em>&lt;br />
Преобразовывает обычный вид IP-адреса cp (из номеров и точек) в двоичный код inp. &lt;br />
 &lt;br />
&lt;strong>inet_addr (BSD) &amp;lt;sys/socket.h, netinet/in.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>in_addr_t inet_addr(const char *cp);&lt;/em>&lt;br />
Преобразует обычный вид IP-адреса cp (из номеров и точек) в двоичный код в сетевом порядке расположения байтов. &lt;br />
 &lt;br />
&lt;strong>inet_network (BSD) &amp;lt;sys/socket.h, netinet/in.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>in_addr_t inet_network(const char *cp);&lt;/em>&lt;br />
Извлекает сетевой номер в хостовом порядке расположения байтов из адреса cp, записанном в виде номеров и точек. &lt;br />
 &lt;br />
&lt;strong>inet_ntoa (BSD) &amp;lt;sys/socket.h, netinet/in.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>char *inet_ntoa(struct in_addr in);&lt;/em>&lt;br />
Преобразует IP-адрес in, заданный в сетевом порядке расположения байтов, в стандартный строчный вид, из номеров и точек. &lt;br />
 &lt;br />
&lt;strong>inet_makeaddr (BSD) &amp;lt;sys/socket.h, netinet/in.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>struct in_addr inet_makeaddr(int net, int host);&lt;/em>&lt;br />
Создает IP-адрес в сетевом порядке расположения байтов, комбинируя номер сети net с локальным адресом host в сети net (оба в хостовом порядке расположения байтов). &lt;br />
 &lt;br />
&lt;strong>inet_lnaof (BSD) &amp;lt;sys/socket.h, netinet/in.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>in_addr_t inet_lnaof(struct in_addr in);&lt;/em>&lt;br />
Возвращает часть адреса для локального хоста из IP-адреса in. Адрес локального хоста возвращается в хостовом порядке размещения байтов. &lt;br />
 &lt;br />
&lt;strong>inet_netof (BSD) &amp;lt;sys/socket.h, netinet/in.h, arpa/inet.h&amp;gt;&lt;/strong>&lt;br />
&lt;em>in_addr_t inet_netof(struct in_addr in);&lt;/em>&lt;br />
Возвращает сетевую часть IP-адреса in. Сетевой номер возвращается в виде байтов, порядок которых определяется системой локального хоста. &lt;br />
Таблица 18. &lt;strong>Домены соединений&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;strong>Имя&lt;/strong>&lt;/td>&lt;td  class="usercell">&lt;strong>Описание&lt;/strong>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_UNIX, PF_LOCAL&lt;/td>&lt;td  class="usercell">Локальное соединение.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_INET&lt;/td>&lt;td  class="usercell">IPv4 протоколы Интернет.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_INET6&lt;/td>&lt;td  class="usercell">IPv6 протоколы Интернет.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_IPX&lt;/td>&lt;td  class="usercell">IPX - протоколы Novell.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_NETLINK&lt;/td>&lt;td  class="usercell">Устройство для взаимодействия с ядром.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_X25&lt;/td>&lt;td  class="usercell">Протокол ITU-T X.25 / ISO-8208.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_AX25&lt;/td>&lt;td  class="usercell">Протокол AX.25 - любительское радио.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_ATMPVC&lt;/td>&lt;td  class="usercell">ATM - доступ к низкоуровневым PVC.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_APPLETALK&lt;/td>&lt;td  class="usercell">Appletalk.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">PF_PACKET&lt;/td>&lt;td  class="usercell">Низкоуровневый пакетный интерфейс.&lt;/td>&lt;/tr>
&lt;/table>
Таблица 19. &lt;strong>Типы сокетов&lt;/strong>&lt;br />
&lt;table class="usertable" border="1">
&lt;tr class="userrow">&lt;td class="usercell">&lt;strong>Имя&lt;/strong>&lt;/td>&lt;td  class="usercell">&lt;strong>Описание&lt;/strong>&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SOCK_STREAM&lt;/td>&lt;td  class="usercell">Двусторонний, надежных последовательных потоков байтов, с поддержкой соединения. Может также поддерживаться механизм внепоточных данных.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SOCK_DGRAM&lt;/td>&lt;td  class="usercell">Датаграммы (ненадежные сообщения с ограниченной длиной и не поддерживающие соединения).&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SOCK_SEQPACKET&lt;/td>&lt;td  class="usercell">Последовательный двусторонний канал для передачи датаграмм с поддержкой соединений.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SOCK_RAW&lt;/td>&lt;td  class="usercell">Обеспечивает доступ к низкоуровневому сетевому протоколу.&lt;/td>&lt;/tr>
&lt;tr class="userrow">&lt;td class="usercell">SOCK_RDM&lt;/td>&lt;td  class="usercell">Обеспечивает надежную доставку датаграмм без гарантии, что они будут расположены по порядку.&lt;/td>&lt;/tr>
&lt;/table>
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2006-05-11 09:27:05</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2006-05-11+09%3A27%3A05</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-11+09%3A27%3A05">2006-05-11 09:27:05&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-30+18%3A07%3A38">2006-05-30 18:07:38&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">&lt;span class="cite">Внимание.&lt;/span> Документ доступен только для чтения. Если вы желаете его дополнить воспользуйтесь ссылкой: &lt;a href="http://www.freesource.info/wiki/Stat'i/KratkoOboVsjom/Clang" target="_blank" title="Outgoing link (in new window)" class="outerlink">&lt;img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="" />http://www.freesource.info/wiki/Stat'i/KratkoOboVsjom/Clang&lt;/a>
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2006-05-10 18:16:24</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2006-05-10+18%3A16%3A24</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-10+18%3A16%3A24">2006-05-10 18:16:24&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-11+09%3A27%3A05">2006-05-11 09:27:05&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">Получить, установить тактику &amp;lt;policy&amp;gt; управления потоком в соответствии с &amp;lt;attr&amp;gt;. Тактика может быть: 
&lt;/div>&lt;br />
&lt;b>Deletions:&lt;/b>&lt;br />
&lt;div class="deletions">Получить, установить тактику &amp;lt;policy&amp;gt; управления процессом &amp;lt;attr&amp;gt;. Тактика может быть: 
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2006-05-10 17:32:07</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2006-05-10+17%3A32%3A07</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-10+17%3A32%3A07">2006-05-10 17:32:07&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-10+18%3A16%3A24">2006-05-10 18:16:24&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Deletions:&lt;/b>&lt;br />
&lt;div class="deletions">&lt;!--notypo-->{{Include file="!/part1"}}&lt;!--/notypo-->&lt;br />
&lt;!--notypo-->{{Include file="!/part1_4"}}&lt;!--/notypo-->
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2006-05-10 17:28:51</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2006-05-10+17%3A28%3A51</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-10+17%3A28%3A51">2006-05-10 17:28:51&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-10+17%3A32%3A07">2006-05-10 17:32:07&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">&lt;!--notypo-->{{Include file="!/part1_4"}}&lt;!--/notypo-->
&lt;/div>&lt;/div>
</description>
</item>
<item>
<title>2006-05-10 13:14:57</title>
<link>http://wiki.oscada.org/RomanSavochenko/CShortAll/show?time=2006-05-10+13%3A14%3A57</link>
<description>&lt;div class="pageBefore">&amp;nbsp;&lt;/div>
&lt;div class="page">&lt;b>Comparison for &lt;a  href="http://wiki.oscada.org/RomanSavochenko/CShortAll" class="">/Roman&amp;nbsp;Savochenko&amp;nbsp;/&amp;nbsp;C&amp;nbsp;Short&amp;nbsp;All&lt;/a> of &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-10+13%3A14%3A57">2006-05-10 13:14:57&lt;/a> and &lt;a href="http://wiki.oscada.org/RomanSavochenko/CShortAll?time=2006-05-10+17%3A28%3A51">2006-05-10 17:28:51&lt;/a>&lt;/b>&lt;br />
&lt;br />
&lt;b>Additions:&lt;/b>&lt;br />
&lt;div class="additions">&lt;!--notypo-->{{Include file="!/part1"}}&lt;!--/notypo-->
&lt;/div>&lt;/div>
</description>
</item>
</channel>
</rss>

