<?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[scope von return static char s[]]]></title><description><![CDATA[<p>Hallo,<br />
ich bin grade etwas verwirrt ...<br />
Unten die Beispiele, wieso funktioniert bla2()?<br />
bla4() verwendet den default copy-constructor oder?</p>
<pre><code>class ClassA{
public:
  ClassA(){
    i=42;
  };
  int i;
private:
};

char* bla1(){
  char s[10]=&quot;123456789&quot;;
  return s;
}

char* bla2(){
  static char s[10]=&quot;123456789&quot;;
  return s;
}

char* bla3(){
  char* s = new char[10];
  s=&quot;123456789&quot;;
  return s;
}

ClassA bla4(){
  ClassA a;
  return a;
}

ClassA* bla5(){
  ClassA a;
  return &amp;a;
}

ClassA* bla6(){
  ClassA* a = new ClassA();
  return a;
}

int _tmain(int argc, _TCHAR* argv[])
{
  char* c1 = bla1(); //Funktioniert nicht
  char* c2 = bla2(); //Funktioniert, wieso?
  char* c3 = bla3(); //Funktioniert 
  ClassA a1 = bla4(); //Funktioniert
  ClassA* a2 = bla5(); //Funktioniert nicht
  ClassA* a3 = bla6(); //Funktioniert
	return 0;
}
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/312428/scope-von-return-static-char-s</link><generator>RSS for Node</generator><lastBuildDate>Sun, 02 Aug 2026 20:35:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/312428.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Jan 2013 15:18:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 15:18:28 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich bin grade etwas verwirrt ...<br />
Unten die Beispiele, wieso funktioniert bla2()?<br />
bla4() verwendet den default copy-constructor oder?</p>
<pre><code>class ClassA{
public:
  ClassA(){
    i=42;
  };
  int i;
private:
};

char* bla1(){
  char s[10]=&quot;123456789&quot;;
  return s;
}

char* bla2(){
  static char s[10]=&quot;123456789&quot;;
  return s;
}

char* bla3(){
  char* s = new char[10];
  s=&quot;123456789&quot;;
  return s;
}

ClassA bla4(){
  ClassA a;
  return a;
}

ClassA* bla5(){
  ClassA a;
  return &amp;a;
}

ClassA* bla6(){
  ClassA* a = new ClassA();
  return a;
}

int _tmain(int argc, _TCHAR* argv[])
{
  char* c1 = bla1(); //Funktioniert nicht
  char* c2 = bla2(); //Funktioniert, wieso?
  char* c3 = bla3(); //Funktioniert 
  ClassA a1 = bla4(); //Funktioniert
  ClassA* a2 = bla5(); //Funktioniert nicht
  ClassA* a3 = bla6(); //Funktioniert
	return 0;
}
</code></pre>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286223</guid><dc:creator><![CDATA[diego2k]]></dc:creator><pubDate>Fri, 04 Jan 2013 15:18:28 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 15:29:40 GMT]]></title><description><![CDATA[<p>Wegen static? Das Array hat jetzt statische Lebenszeit. (Grob gesagt ist es gültig von Anfang bis Ende von main()) Zeile 23 macht nicht was du denkst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286228</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 04 Jan 2013 15:29:40 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 15:45:17 GMT]]></title><description><![CDATA[<p>bla3 <em>funktioniert</em> nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286231</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 04 Jan 2013 15:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 16:14:53 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>bla3 <em>funktioniert</em> nicht.</p>
</blockquote>
<p>doch, es macht nur keinen sinn - aber funktionieren tut es einwandfrei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286237</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 04 Jan 2013 16:14:53 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 16:21:07 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>bla3 <em>funktioniert</em> nicht.</p>
</blockquote>
<p>doch, es macht nur keinen sinn - aber funktionieren tut es einwandfrei.</p>
</blockquote>
<p>Das ist eine Frage der Definition von <em>funktionieren</em>. Spätestens wenn der String geändert werden soll, landet man bei UB wie bei den anderen nicht funktionierenden Funktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286239</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 04 Jan 2013 16:21:07 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 16:41:27 GMT]]></title><description><![CDATA[<p>danke!<br />
ja zu bla3() hab mich schon gewundert das das geht ...</p>
<p>aber nochmal zu bla2 ... wenn man das ein 2. mal aufruft scheint es den Wert<br />
des ersten Aufrufes zu überschreiben oder?<br />
Also s existiert nur einmal im Speicher?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286246</guid><dc:creator><![CDATA[diego2k]]></dc:creator><pubDate>Fri, 04 Jan 2013 16:41:27 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 16:48:08 GMT]]></title><description><![CDATA[<p>diego2k schrieb:</p>
<blockquote>
<p>danke!<br />
ja zu bla3() hab mich schon gewundert das das geht ...</p>
</blockquote>
<p>Das korrekte bla3 wäre:</p>
<pre><code class="language-cpp">char* bla3(){
  char* s = new char[10];
  strcpy(s,&quot;123456789&quot;);
  return s;
}
</code></pre>
<p>aber deins funktioniert, weil die Zuweisung<br />
s=&quot;123456789&quot;;<br />
insofern OK ist, da &quot;123456789&quot; ewig gültig ist.</p>
<blockquote>
<p>aber nochmal zu bla2 ... wenn man das ein 2. mal aufruft scheint es den Wert<br />
des ersten Aufrufes zu überschreiben oder?<br />
Also s existiert nur einmal im Speicher?</p>
</blockquote>
<p>ja.</p>
<p>static ist hier das zauberwort.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286249</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 04 Jan 2013 16:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 17:06:34 GMT]]></title><description><![CDATA[<p>danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286256</guid><dc:creator><![CDATA[diego2k]]></dc:creator><pubDate>Fri, 04 Jan 2013 17:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to scope von return static char s[] on Fri, 04 Jan 2013 18:44:58 GMT]]></title><description><![CDATA[<p>Nur um die Begrifflichkeiten richtigzustellen:<br />
Scope bezieht sich immer auf einen bestimmten Bezeichner, und bezeichnet den Teil des Programmes, in dem dieser Bezeichner unqualifiziert verwendet werden kann, um auf eine bestimmte Entität zu verweisen.</p>
<p>Davon ist zu unterscheiden die Lebenszeit eines Objektes. Bei automatischen Objekten beginnt die Lebenszeit eines Objektes, sobald der Kontrollfluss die zugehörige Definition erreicht, und endet, wenn der (potentielle) Scope des zugehörigen Bezeichners verlassen wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2286306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2286306</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 04 Jan 2013 18:44:58 GMT</pubDate></item></channel></rss>