<?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[[Anfänger] Fragen zu Zeiger als Rückgabewert von Funktionen]]></title><description><![CDATA[<p>Hallo liebe C++ Community!<br />
Ich habe mich hier angemeldet, da ich gerne C++ lernen möchte aber zur Zeit ein wenig beim Thema „Zeiger als Rückgabewert&quot; stocke.<br />
Als Lehrbuch habe ich „C++ von A bis Z&quot; von Jürgen Wolf.</p>
<p>Es geht um folgenden Code:<br />
(Falls einer das Buch griffbereit hat S.185-186)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int *dynamic_array( int elements );
int *renew( int *old, int sizeold, int sizenew );

int main( void ){

    int *iptr = dynamic_array( 10 );

    for ( int i = 0; i &lt; 10; i++ ) {
	    iptr[i] = i;
    }

    iptr = renew( iptr, 10, 15 );

    for( int i = 10; i &lt; 15; i++ ){
    	iptr[i] = i;
    }

    for( int i = 0; i &lt; 15; i++ ){
    	cout &lt;&lt; iptr[i] &lt;&lt; &quot;\n&quot;;
    }

    delete [] iptr;
return 0;
}

int *dynamic_array( int elements ){

	int *array = new int [elements];

return array;
}

int *renew( int *old, int sizeold, int sizenew ){

	int *tmp = new int [sizenew];

	for( int i = 0; i &lt; sizeold; i++ ){
		tmp[i] = old[i];
	}

delete [] old;
return tmp;
}
</code></pre>
<p>Im Endeffekt ist meine Intention für diesen Forum-Beitrag einfach eine Verständnisfrage.<br />
Ich Persöhnlich finde die Arbeit mit den Zeigern noch ein wenig Mühselig, zusätzlich finde ich diesen Code ein bisschen verwirrend, daher wollte ich euch folgende Fragen stellen.<br />
(Zum sicherstellen ob ich es denn auch kapiert habe)</p>
<ol>
<li>
<p>*<em>Zeile 4: int <em>dynamic_array( int elements );</em></em><br />
Wird hier ein integerrückgabewert als Zeiger erwartet?<br />
MUSS dann das/der(?) return der Fkt. unbedingt ein Zeiger wiedergeben?</p>
</li>
<li>
<p>*<em>Zeile 9: int <em>iptr = dynamic_array( 10 );</em></em><br />
Hier wird ein Zeiger erstellt (*iptr) der auf das erste Feld eines<br />
neuen allokierten Arrays mit 10 Felder zeigt(array[0]), oder?</p>
</li>
<li>
<p><strong>Zeile 15: iptr = renew( iptr, 10, 15 );</strong><br />
Der Zeiger zeigt auf das neue allokierte Array(TMP) welches von<br />
von return der FKT an den Aufruf zurückgegeben wurde?<br />
Besonders Paradox finde ich dass „iptr = ..(iptr...)&quot;<br />
in der Zeile, erst wird der iptr mit den alten Inhalt übergeben<br />
um nach der Bearbeitung neu beschrieben zu werden...?</p>
</li>
<li>
<p><strong>Zeile 36: int *renew( int *old, int sizeold, int sizenew )</strong><br />
Hier wird als übergabeparameter ein int *old verlangt.<br />
Wieso ist es falsch wenn ich beim Aufruf in Zeile 15:<br />
iptr = renew( *<strong>iptr</strong>, 10, 15 ); setze?<br />
Mein Compiler sagt dann zwar:<br />
Error E2034 a.cpp 15: Cannot convert 'int' to 'int *' in function main()<br />
Error E2342 a.cpp 15: Type mismatch in parameter 'old' (wanted 'int *', got 'int') in function main()<br />
Aber so richtig kann ich das nicht nachvollziehen.</p>
</li>
</ol>
<p>So ich hoffe ich verlange mit meinen ersten Beitrag mit diesen vier Fragen nicht zuviel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Danke und Gruß<br />
ESC++</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233624/anfänger-fragen-zu-zeiger-als-rückgabewert-von-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 19:03:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233624.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Feb 2009 17:38:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Anfänger] Fragen zu Zeiger als Rückgabewert von Funktionen on Fri, 06 Feb 2009 17:38:01 GMT]]></title><description><![CDATA[<p>Hallo liebe C++ Community!<br />
Ich habe mich hier angemeldet, da ich gerne C++ lernen möchte aber zur Zeit ein wenig beim Thema „Zeiger als Rückgabewert&quot; stocke.<br />
Als Lehrbuch habe ich „C++ von A bis Z&quot; von Jürgen Wolf.</p>
<p>Es geht um folgenden Code:<br />
(Falls einer das Buch griffbereit hat S.185-186)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

int *dynamic_array( int elements );
int *renew( int *old, int sizeold, int sizenew );

int main( void ){

    int *iptr = dynamic_array( 10 );

    for ( int i = 0; i &lt; 10; i++ ) {
	    iptr[i] = i;
    }

    iptr = renew( iptr, 10, 15 );

    for( int i = 10; i &lt; 15; i++ ){
    	iptr[i] = i;
    }

    for( int i = 0; i &lt; 15; i++ ){
    	cout &lt;&lt; iptr[i] &lt;&lt; &quot;\n&quot;;
    }

    delete [] iptr;
return 0;
}

int *dynamic_array( int elements ){

	int *array = new int [elements];

return array;
}

int *renew( int *old, int sizeold, int sizenew ){

	int *tmp = new int [sizenew];

	for( int i = 0; i &lt; sizeold; i++ ){
		tmp[i] = old[i];
	}

delete [] old;
return tmp;
}
</code></pre>
<p>Im Endeffekt ist meine Intention für diesen Forum-Beitrag einfach eine Verständnisfrage.<br />
Ich Persöhnlich finde die Arbeit mit den Zeigern noch ein wenig Mühselig, zusätzlich finde ich diesen Code ein bisschen verwirrend, daher wollte ich euch folgende Fragen stellen.<br />
(Zum sicherstellen ob ich es denn auch kapiert habe)</p>
<ol>
<li>
<p>*<em>Zeile 4: int <em>dynamic_array( int elements );</em></em><br />
Wird hier ein integerrückgabewert als Zeiger erwartet?<br />
MUSS dann das/der(?) return der Fkt. unbedingt ein Zeiger wiedergeben?</p>
</li>
<li>
<p>*<em>Zeile 9: int <em>iptr = dynamic_array( 10 );</em></em><br />
Hier wird ein Zeiger erstellt (*iptr) der auf das erste Feld eines<br />
neuen allokierten Arrays mit 10 Felder zeigt(array[0]), oder?</p>
</li>
<li>
<p><strong>Zeile 15: iptr = renew( iptr, 10, 15 );</strong><br />
Der Zeiger zeigt auf das neue allokierte Array(TMP) welches von<br />
von return der FKT an den Aufruf zurückgegeben wurde?<br />
Besonders Paradox finde ich dass „iptr = ..(iptr...)&quot;<br />
in der Zeile, erst wird der iptr mit den alten Inhalt übergeben<br />
um nach der Bearbeitung neu beschrieben zu werden...?</p>
</li>
<li>
<p><strong>Zeile 36: int *renew( int *old, int sizeold, int sizenew )</strong><br />
Hier wird als übergabeparameter ein int *old verlangt.<br />
Wieso ist es falsch wenn ich beim Aufruf in Zeile 15:<br />
iptr = renew( *<strong>iptr</strong>, 10, 15 ); setze?<br />
Mein Compiler sagt dann zwar:<br />
Error E2034 a.cpp 15: Cannot convert 'int' to 'int *' in function main()<br />
Error E2342 a.cpp 15: Type mismatch in parameter 'old' (wanted 'int *', got 'int') in function main()<br />
Aber so richtig kann ich das nicht nachvollziehen.</p>
</li>
</ol>
<p>So ich hoffe ich verlange mit meinen ersten Beitrag mit diesen vier Fragen nicht zuviel <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Danke und Gruß<br />
ESC++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659193</guid><dc:creator><![CDATA[ESC++ 0]]></dc:creator><pubDate>Fri, 06 Feb 2009 17:38:01 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] Fragen zu Zeiger als Rückgabewert von Funktionen on Fri, 06 Feb 2009 18:23:45 GMT]]></title><description><![CDATA[<p>Zur weiteren Information kannst du dir z.Bsp. das hier noch durchlesen<br />
aus der hiesigen FAQ<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39497.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-39497.html</a></p>
<blockquote>
<ol>
<li>Zeile 4: int *dynamic_array( int elements );<br />
Wird hier ein integerrückgabewert als Zeiger erwartet?<br />
MUSS dann das/der(?) return der Fkt. unbedingt ein Zeiger wiedergeben?</li>
</ol>
</blockquote>
<p>Ja, das muß ein Zeiger sein. Die Funktion soll ja ein Array von ints erzeugen und zurückgeben und so ein Array gibt man zurück indem man einen Zeiger auf die erste Position dieses arrays zurückgibt.</p>
<blockquote>
<ol start="2">
<li>Zeile 9: int *iptr = dynamic_array( 10 );<br />
Hier wird ein Zeiger erstellt (*iptr) der auf das erste Feld eines<br />
neuen allokierten Arrays mit 10 Felder zeigt(array[0]), oder?</li>
</ol>
</blockquote>
<p>Ja, siehe erste Antwort.</p>
<blockquote>
<ol start="3">
<li>Zeile 15: iptr = renew( iptr, 10, 15 );<br />
Der Zeiger zeigt auf das neue allokierte Array(TMP) welches von<br />
von return der FKT an den Aufruf zurückgegeben wurde?<br />
Besonders Paradox finde ich dass „iptr = ..(iptr...)&quot;<br />
in der Zeile, erst wird der iptr mit den alten Inhalt übergeben<br />
um nach der Bearbeitung neu beschrieben zu werden...?</li>
</ol>
</blockquote>
<p>Mit dieser Funktion soll das Array vergrößert werden. Da das nicht so einfach geht, wird dort ein neues Array angelegt, der Inhalt des alten hineinkopiert und der Zeiger auf dieses neue Array zurückgegeben. Vorher wird der Speicher des alten Arrays gelöscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1659216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1659216</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 06 Feb 2009 18:23:45 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfänger] Fragen zu Zeiger als Rückgabewert von Funktionen on Sun, 08 Feb 2009 21:56:44 GMT]]></title><description><![CDATA[<p>Hallo,<br />
okay alles klar.<br />
Danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1660227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1660227</guid><dc:creator><![CDATA[ESC++ 0]]></dc:creator><pubDate>Sun, 08 Feb 2009 21:56:44 GMT</pubDate></item></channel></rss>