<?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[Was läuft im main schief ?]]></title><description><![CDATA[<pre><code class="language-cpp">char* itoa(int x)
{
    char arr[20];

	int i=0;

	do{
         arr[i++]=x%10+'0';

       }

	 while((x/=10)&gt;0);

	 arr[i]=0;

     return arr;

}

int main()
{

char* x;

x=itoa(123);   // hier scheint was nicht zu passen ??

std::cout &lt;&lt;x;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/269895/was-läuft-im-main-schief</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 22:17:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269895.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Jul 2010 23:07:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was läuft im main schief ? on Fri, 02 Jul 2010 23:07:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char* itoa(int x)
{
    char arr[20];

	int i=0;

	do{
         arr[i++]=x%10+'0';

       }

	 while((x/=10)&gt;0);

	 arr[i]=0;

     return arr;

}

int main()
{

char* x;

x=itoa(123);   // hier scheint was nicht zu passen ??

std::cout &lt;&lt;x;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1920693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920693</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Fri, 02 Jul 2010 23:07:39 GMT</pubDate></item><item><title><![CDATA[Reply to Was läuft im main schief ? on Fri, 02 Jul 2010 23:12:22 GMT]]></title><description><![CDATA[<p><code>arr</code> wird beim Verlassen der Funktion zerstört, <code>x</code> ist also ungültig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920694</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Fri, 02 Jul 2010 23:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to Was läuft im main schief ? on Fri, 02 Jul 2010 23:20:13 GMT]]></title><description><![CDATA[<p>stimmt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>aber der Inhalt von arr wird doch in den Rückgabewert kopiert und<br />
dieser dann zurückgeliert.</p>
<p>wenn ich in einer funktion eine temporäre Variable anlege und diese<br />
dann zurückliefer wird diese doch auch kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920698</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Fri, 02 Jul 2010 23:20:13 GMT</pubDate></item><item><title><![CDATA[Reply to Was läuft im main schief ? on Fri, 02 Jul 2010 23:24:42 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>aber der Inhalt von arr wird doch in den Rückgabewert kopiert und<br />
dieser dann zurückgeliert.</p>
</blockquote>
<p>Nein. Es wird lediglich ein Zeiger auf den Anfang des Arrays zurückgegeben. Mit dem kannst du ausserhalb der Funktion nichts anfangen.</p>
<p>blurry333 schrieb:</p>
<blockquote>
<p>wenn ich in einer funktion eine temporäre Variable anlege und diese<br />
dann zurückliefer wird diese doch auch kopiert.</p>
</blockquote>
<p>Ja, aber du gibst keine Zeiger auf lokale Variablen zurück. Hier hast du die Typen <code>char[20]</code> und <code>char*</code> , wobei das Array bei der Rückgabe in den Zeiger konvertiert wird, und du keinen Zugriff mehr auf die Elemente des Arrays hast.</p>
<p>Übrigens: Benutze bitte keine manuellen Zeilenumbrüche, das Forum bricht automatisch um (was etwas angenehmer zum Lesen ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920699</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 02 Jul 2010 23:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Was läuft im main schief ? on Fri, 02 Jul 2010 23:26:14 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>aber der Inhalt von arr wird doch in den Rückgabewert kopiert und<br />
dieser dann zurückgeliert.</p>
<p>wenn ich in einer funktion eine temporäre Variable anlege und diese<br />
dann zurückliefer wird diese doch auch kopiert.</p>
</blockquote>
<p>So ist es.<br />
arr kann in einen Zeiger umgewandelt werden und einen solchen gibt die Funtkion auch zurück. Beim Zurückgeben wird der Zeiger kopiert. Nicht der Inhalt des Arrays - den gibt es nach Verlassen der Funktion nicht mehr.</p>
<p>Edit: zu spät.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920700</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Fri, 02 Jul 2010 23:26:14 GMT</pubDate></item><item><title><![CDATA[Reply to Was läuft im main schief ? on Fri, 02 Jul 2010 23:26:23 GMT]]></title><description><![CDATA[<p>das hier lässt der compiler auch nicht durchgehen.<br />
Er checkt wohl dass 2 zeiger auf denselben Speicher zeigen.</p>
<pre><code class="language-cpp">int main()
{

char* x=&quot;Hallo&quot;;

char* y=x;

y[1]='o';

std::cout&lt;&lt;x;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1920701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920701</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Fri, 02 Jul 2010 23:26:23 GMT</pubDate></item><item><title><![CDATA[Reply to Was läuft im main schief ? on Sat, 03 Jul 2010 00:01:02 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>Er checkt wohl dass 2 zeiger auf denselben Speicher zeigen.</p>
</blockquote>
<p>Nein. Das &quot;Hallo&quot; ist eine Konstante und darf nicht geändert werden. Meistens liegen diese Konstanten im Datenbereich der Executable und werden zusammengefasst wenn sie öfters vorkommen. Der Datenbereich wird vom Betriebssystem in der Regel Read Only gesetzt und daher tritt eine Schutzverletzung auf wenn du über den Zeiger schreibend darauf zugreifst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920707</guid><dc:creator><![CDATA[Tobiking2]]></dc:creator><pubDate>Sat, 03 Jul 2010 00:01:02 GMT</pubDate></item></channel></rss>