<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Как вернуть из функции массив (строку?)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html</link>
    <description>Здравствуйте. &lt;br&gt; Начал изучать С++ недавно, поэтому, прошу прощения за &quot;ламерский&quot; вопрос, просто&lt;br&gt;не нашёл какого-то однозначного ответа.&lt;br&gt; &lt;br&gt; Предположим, у меня есть функция. Для упрощения что-то типа:&lt;br&gt;&lt;br&gt;char func() &#123;&lt;br&gt;&lt;br&gt;char string&#091;200&#093; = &quot;string&quot;;&lt;br&gt;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt; - как мне вывести это значение, чтобы его можно было использовать в вызывающей&lt;br&gt;данную функцию функции? &lt;br&gt; &lt;br&gt;Или же, как вариант:&lt;br&gt;инициализирую переменную вне функции:&lt;br&gt;char temp&#091;200&#093; = &quot;TEST&quot;;&lt;br&gt; - как к ней можно обратиться (точнее, записать в массив строку) из функции..?&lt;br&gt;&lt;br&gt;void func() &#123;&lt;br&gt;&lt;br&gt;//&amp;temp; - при таком обращении, к примеру, из printf() значение возвращается.&lt;br&gt;// Но как записать строку в этот же массив?&lt;br&gt;&lt;br&gt;&#125;&lt;br&gt;</description>

<item>
    <title>Как вернуть из функции массив (строку?) (vic)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#20</link>
    <pubDate>Fri, 21 Nov 2008 13:52:37 GMT</pubDate>
    <description>&amp;gt;А чего только 4 ? А чего не 10 ? Вот хотел &lt;br&gt;&amp;gt;человек вернуть строчку из процедуры, а его бац и уже обвиняют &lt;br&gt;&amp;gt;в обнулении 4х гиг памяти! Сходил, называется, за хлебушком :-( &lt;br&gt;&lt;br&gt;И где это я его в этом обвинил?.&lt;br&gt;Лишнее обнуление 100 байт при многократном повторении выльются запросто в 4гб.&lt;br&gt;Еще раз, _лишнее_ обнуление, об этом говорю с самого начала.&lt;br&gt;Вы же считаете что я говорю о не нужности инициализации вообще, а это не так.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (TyLLIKAH)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#19</link>
    <pubDate>Fri, 21 Nov 2008 12:50:26 GMT</pubDate>
    <description>&amp;gt;и С++ книги написанные _авторами_ этих языков (кто как не они &lt;br&gt;&amp;gt;лучше всех знают о своем языке): &lt;br&gt;&lt;br&gt;Книги разные важны, книги всякие важны. Только из того, что они сделали гениальный язык программирования, совершенно не значит, что они так же гениально могут ему научить - тут другой талант нужен. Керниган,Ричи неподготовленным пользователем читается адски трудно.&lt;br&gt;</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (TyLLIKAH)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#18</link>
    <pubDate>Fri, 21 Nov 2008 12:45:57 GMT</pubDate>
    <description>&amp;gt;оно там было т.к. винда не почистила где-то что-то (в памяти/на &lt;br&gt;&lt;br&gt;Кто бы не почистил, он не почистил. В следствии, что кто-то не почистил система отработала некорректно. &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (TyLLIKAH)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#17</link>
    <pubDate>Fri, 21 Nov 2008 12:43:24 GMT</pubDate>
    <description>&amp;gt;удобен в некоторых довольно специфичных ситуациях. Кстати, для передачи строки он &lt;br&gt;&amp;gt;совсем не подходит: массив должен иметь фиксированную на этапе компиляции длину. &lt;br&gt;&lt;br&gt;Строго говоря, это встречается сплошь и рядом, а не только в специфических случаях. С некоторыми доработками, разумеется. Я говорил о корявости этого решения в данном случае а, не вообще. &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (TyLLIKAH)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#16</link>
    <pubDate>Fri, 21 Nov 2008 12:37:18 GMT</pubDate>
    <description>&amp;gt;Сколько надо времени на обнуление 4GB? Несколько раз подряд? &lt;br&gt;&amp;gt;Я не пугаю, я говорю о том что подход должен быть разумным, &lt;br&gt;&amp;gt;а не параноидальным. &lt;br&gt;&lt;br&gt;А чего только 4 ? А чего не 10 ? Вот хотел человек вернуть строчку из процедуры, а его бац и уже обвиняют в обнулении 4х гиг памяти! Сходил, называется, за хлебушком :-(&lt;br&gt;&lt;br&gt;Чисто логически: Буфер выбирается таким, чтобы его заполнить данными. Значит будет получено 4 гб данных. 4 гб данных, как продукт алгоритма, который сложнее простого обнуления памяти. Значит обнуление не будет бутылочным горлышком в любом случае.&lt;br&gt;&lt;br&gt;Какие же бонусы мы получим от этого ? Например, strlen и printf отработают корректно в случае сбоя функции, не залезут за границы памяти выделенной для буфера в поисках терминатора строки. Можно нафантазировать множество других примеров.&lt;br&gt;&lt;br&gt;Какова вероятность сбоя в ходе обучения ? Весьма высокая.&lt;br&gt;&lt;br&gt;Существенны ли потери быстродействия в данном случае ? Абсолютно нет.&lt;br&gt;&lt;br&gt;Нужно ли думать каждый раз, создавая алгоритм ? Да&lt;br&gt;&lt;br&gt;В интернете масса ст</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (vic)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#15</link>
    <pubDate>Fri, 21 Nov 2008 11:47:13 GMT</pubDate>
    <description>&amp;gt; Не ожидал, честно говоря, что столько людей откликнутся :) &lt;br&gt;&amp;gt;Спасибо за ответы! На данном этапе для меня самым простым (и понятным &lt;br&gt;&amp;gt;для меня) способом оказалось использование memcpy. Т.е., я просто инициализировал массив &lt;br&gt;&amp;gt;для &quot;временных&quot; данных и таким образом получилось передавать данные от функции &lt;br&gt;&amp;gt;к функции (не забывая обнулять эту &quot;переменную&quot;). Так что пока что &lt;br&gt;&amp;gt;всё :) Буду учиться дальше..:) Ещё раз спасибо! &lt;br&gt;&lt;br&gt;Позволю себе порекомендовать для начального изучения и понимания основ программирования на С и С++ книги написанные _авторами_ этих языков (кто как не они лучше всех знают о своем языке):&lt;br&gt;С: &lt;br&gt;Керниган, Ричи. Язык программирования С&lt;br&gt;http://www.ozon.ru/context/detail/id/96537&lt;br&gt;С++:&lt;br&gt;Б. Страуструп. Язык программирования C++&lt;br&gt;http://www.ozon.ru/context/detail/id/85559&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (vic)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#14</link>
    <pubDate>Fri, 21 Nov 2008 11:37:18 GMT</pubDate>
    <description>&amp;gt;Вот, кстати, пример из истории: в начале тысячилетия в борландовском линкире был &lt;br&gt;&amp;gt;такой баг - он пихал в экзешник в неиспользуемые области (вроде &lt;br&gt;&amp;gt;в релокационную таблицу или ещё куда. не помню уже) всякий мусор. &lt;br&gt;&amp;gt;Заметили это когда кто-то обнаружил в только что скомпилированном экзешнике части &lt;br&gt;&amp;gt;своих (вроде даже вордовских) документов, которых там ну никак не могло &lt;br&gt;&amp;gt;оказаться. Всё потому, что линкер мерзавец не чистил буфер. А чё? &lt;br&gt;&amp;gt;Зато быстро работал. &lt;br&gt;&lt;br&gt;Из вашего описания бага следует что линкер не пихал туда вообще ничего, оно там было т.к. винда не почистила где-то что-то (в памяти/на диске), иначе откуда взялись доки там :))&lt;br&gt;а все потому что винда и стандарты рядом не валялись :)&lt;br&gt;</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (vic)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#13</link>
    <pubDate>Fri, 21 Nov 2008 11:15:40 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Обнулять надо только тогда когда не производится заполнение тут же&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Ёлки-палки! Я же написал, зачем нужно обнулять. Вы пытаетесь напугать меня большим &lt;br&gt;&amp;gt;объёмом буфера. Внутри memset ассемблерная вставка, которая отработает максимально быстро. &lt;br&gt;&lt;br&gt;Сколько надо времени на обнуление 4GB? Несколько раз подряд?&lt;br&gt;Я не пугаю, я говорю о том что подход должен быть разумным, а не параноидальным.&lt;br&gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Обнулять надо только тогда когда не производится заполнение тут же.&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Это вопрос надёжности. Когда не производится заполнение туда же или когда есть &lt;br&gt;&amp;gt;вероятность, что такое заполнение не будет произведено или будет произведено неправильно. &lt;br&gt;&amp;gt;И уж никак нельзя подменять надёжность быстродействием на этапе обучения языку. &lt;br&gt;&lt;br&gt;Не стоит аккуратность подменять паранойей.&lt;br&gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Писать на C++ без STL, как-то большого смысла не имеет, &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Есть много областей, где не используется stl или его альтернативы. В любом &lt;br&gt;&amp;gt;случае, сначала изучается язык, потом библиотеки к этому языку. От простого &lt;br&gt;&amp;gt;к сложному. &lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Как вернуть из функции массив (строку?) (const)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/7713.html#12</link>
    <pubDate>Fri, 21 Nov 2008 07:18:07 GMT</pubDate>
    <description>&amp;gt;Хотя, это не так забавно, как создавать структуру всякий раз, как хочешь вернуть строку из функции &lt;br&gt;&lt;br&gt;Провокация удалась, даже несмотря на то, что я начал и закончил свой пост методом с передачей указателя на буфер. Фокус со структурой имеет право на существование, как бы вам ни хотелось обратного, и бывает удобен в некоторых довольно специфичных ситуациях. Кстати, для передачи строки он совсем не подходит: массив должен иметь фиксированную на этапе компиляции длину.&lt;br&gt;</description>
</item>

</channel>
</rss>
