<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[local static data - statische variable wird immer wieder auf 0 gesetzt]]></title><description><![CDATA[<p>Ich habe eine Funktion func.<br />
In dieser Funktion durchlaeuft eine Schleife ein Array und soll jedes Element des Arrays returnen.<br />
Natuerlich ist nach dem returnen der aktuelle Wert des Zaehlers i wieder futsch .<br />
Mein Ziel ist es, diesen irgendwie beizubehalten, so dass folgendes Codefragment mein Array char fuer char ausgibt:</p>
<pre><code class="language-cpp">char chars[] = {&quot;abcdefghijklmnopqrstuvwxyz&quot;};
char func()
{
        static int i=0;
        for(; i&lt;26; ++i)        
            return chars[i];        
}  

int main()
{
    while(true)
        std::cout &lt;&lt; func() &lt;&lt; std::endl;
}
</code></pre>
<p>Ich dachte, den Zaehler als static zu deklarieren wuerde helfen, da er ja nun nicht mehr beim verlassen der Funktion zerstoert wird,<br />
aber irgendwie scheint er immer 0 zu sein und es wird nur 'a' ausgegeben.<br />
Woran liegt das? Habt ihr evtl, eine bessere Loesung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/118789/local-static-data-statische-variable-wird-immer-wieder-auf-0-gesetzt</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 15:15:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/118789.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Aug 2005 11:45:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to local static data - statische variable wird immer wieder auf 0 gesetzt on Wed, 24 Aug 2005 11:45:07 GMT]]></title><description><![CDATA[<p>Ich habe eine Funktion func.<br />
In dieser Funktion durchlaeuft eine Schleife ein Array und soll jedes Element des Arrays returnen.<br />
Natuerlich ist nach dem returnen der aktuelle Wert des Zaehlers i wieder futsch .<br />
Mein Ziel ist es, diesen irgendwie beizubehalten, so dass folgendes Codefragment mein Array char fuer char ausgibt:</p>
<pre><code class="language-cpp">char chars[] = {&quot;abcdefghijklmnopqrstuvwxyz&quot;};
char func()
{
        static int i=0;
        for(; i&lt;26; ++i)        
            return chars[i];        
}  

int main()
{
    while(true)
        std::cout &lt;&lt; func() &lt;&lt; std::endl;
}
</code></pre>
<p>Ich dachte, den Zaehler als static zu deklarieren wuerde helfen, da er ja nun nicht mehr beim verlassen der Funktion zerstoert wird,<br />
aber irgendwie scheint er immer 0 zu sein und es wird nur 'a' ausgegeben.<br />
Woran liegt das? Habt ihr evtl, eine bessere Loesung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857476</guid><dc:creator><![CDATA[Raptor]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to local static data - statische variable wird immer wieder auf 0 gesetzt on Wed, 24 Aug 2005 11:52:37 GMT]]></title><description><![CDATA[<p>Könnte vielleicht daran liegen dass i++ niemals erreicht wird, weil das return vorher kommt....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857480</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to local static data - statische variable wird immer wieder auf 0 gesetzt on Wed, 24 Aug 2005 11:56:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for(; i&lt;26; ++i)        
            return chars[i];
</code></pre>
<p>Du gehst ja in die Schleife rein dann kommt das return und dann wieder in die Schleife rein und dann wieder return (vorher wird natürlich immer die Bedingung geprfüft)</p>
<p>Aber wie du siehst kommst du nie zum Inkrementieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<pre><code class="language-cpp">while(i&lt;26) return chars[i++];
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/857481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857481</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 24 Aug 2005 11:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to local static data - statische variable wird immer wieder auf 0 gesetzt on Wed, 24 Aug 2005 12:30:20 GMT]]></title><description><![CDATA[<p>aaaaach, lasst mich doch alle in ruhe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/857501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857501</guid><dc:creator><![CDATA[Raptor]]></dc:creator><pubDate>Wed, 24 Aug 2005 12:30:20 GMT</pubDate></item><item><title><![CDATA[Reply to local static data - statische variable wird immer wieder auf 0 gesetzt on Wed, 24 Aug 2005 13:40:24 GMT]]></title><description><![CDATA[<p>Suchst du sowas wie Python's yield-Anweisung? Ich würd zustandsbehaftete Funktionen vermeiden, wie willst du z.b. deinen Zähler rücksetzen? Besser ist IMHO ein Funktionsobjekt mit dem Zähler als Instanzvariable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857557</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 24 Aug 2005 13:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to local static data - statische variable wird immer wieder auf 0 gesetzt on Wed, 24 Aug 2005 13:53:40 GMT]]></title><description><![CDATA[<p>In Python gibt's auch ein yield? Lame, ich dachte, das wäre was geniales neues für C#. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/857567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857567</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 24 Aug 2005 13:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to local static data - statische variable wird immer wieder auf 0 gesetzt on Wed, 24 Aug 2005 14:07:59 GMT]]></title><description><![CDATA[<p>Oder wars Ruby. Keine Ahnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/857584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/857584</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Wed, 24 Aug 2005 14:07:59 GMT</pubDate></item></channel></rss>