<?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[Verständnissproblem bei Funktionsdeklaration]]></title><description><![CDATA[<p>Hallo,</p>
<p>in meinem Buch &quot;C++ von A bis Z&quot; steht auf Seite 99 steht geschrieben ,dass man eine Funktion zuerst deklarieren und definieren muss um sie nacher aufzurufen.<br />
Auf Seite 178 wird in einem Quellcode nur die Definition für die Funktion eingefügt. Das Programm läuft aber anscheinend auch ohne Deklaration.</p>
<p><a href="//dynarray2.cpp">//dynarray2.cpp</a> Seite 178<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>// hier steht nur die Definition<br />
int* renew( int* old, int sizeold, int sizenew )<br />
{<br />
//Größeren Speicher allozieren<br />
int* tmp = new int [sizenew];</p>
<p>//Alten Inhalt nach tmp kopieren<br />
for( int i=0; i&lt;sizeold; i++)<br />
{<br />
tmp[i] = old[i];<br />
}<br />
//Alten Inhalt löschen<br />
delete [] old;<br />
//Neues Array zurückgeben<br />
return tmp;<br />
}</p>
<p>int main(void)<br />
{<br />
int *dynarray = new int[10];<br />
for( int i=0; i&lt;10; i++)<br />
{<br />
dynarray[i] = i;<br />
}<br />
//Array vergrößern auf 15. Elemente<br />
dynarray=renew(dynarray,10,15);<br />
for( int i=10; i&lt;15; i++)<br />
{<br />
dynarray[i] = i;<br />
}<br />
for( int i=0; i&lt;15; i++)<br />
{<br />
cout &lt;&lt; dynarray[i] &lt;&lt; '\n';<br />
}<br />
cin.get();<br />
return 0;<br />
}</p>
<p>Warum läuft das Programm auch ohne Deklaration und wie füge ich den Code über code tags ein ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310005/verständnissproblem-bei-funktionsdeklaration</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 00:08:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310005.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Nov 2012 12:56:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 12:56:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in meinem Buch &quot;C++ von A bis Z&quot; steht auf Seite 99 steht geschrieben ,dass man eine Funktion zuerst deklarieren und definieren muss um sie nacher aufzurufen.<br />
Auf Seite 178 wird in einem Quellcode nur die Definition für die Funktion eingefügt. Das Programm läuft aber anscheinend auch ohne Deklaration.</p>
<p><a href="//dynarray2.cpp">//dynarray2.cpp</a> Seite 178<br />
#include &lt;iostream&gt;<br />
using namespace std;</p>
<p>// hier steht nur die Definition<br />
int* renew( int* old, int sizeold, int sizenew )<br />
{<br />
//Größeren Speicher allozieren<br />
int* tmp = new int [sizenew];</p>
<p>//Alten Inhalt nach tmp kopieren<br />
for( int i=0; i&lt;sizeold; i++)<br />
{<br />
tmp[i] = old[i];<br />
}<br />
//Alten Inhalt löschen<br />
delete [] old;<br />
//Neues Array zurückgeben<br />
return tmp;<br />
}</p>
<p>int main(void)<br />
{<br />
int *dynarray = new int[10];<br />
for( int i=0; i&lt;10; i++)<br />
{<br />
dynarray[i] = i;<br />
}<br />
//Array vergrößern auf 15. Elemente<br />
dynarray=renew(dynarray,10,15);<br />
for( int i=10; i&lt;15; i++)<br />
{<br />
dynarray[i] = i;<br />
}<br />
for( int i=0; i&lt;15; i++)<br />
{<br />
cout &lt;&lt; dynarray[i] &lt;&lt; '\n';<br />
}<br />
cin.get();<br />
return 0;<br />
}</p>
<p>Warum läuft das Programm auch ohne Deklaration und wie füge ich den Code über code tags ein ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266212</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Thu, 01 Nov 2012 12:56:20 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 13:03:30 GMT]]></title><description><![CDATA[<blockquote>
<p>in meinem Buch &quot;C++ von A bis Z&quot;</p>
</blockquote>
<p>Oh Gott, das wird heiter, wo ist mein Feuerzeug wenn man es mal braucht? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<blockquote>
<p>Warum läuft das Programm auch ohne Deklaration und wie füge ich den Code über code tags ein ?</p>
</blockquote>
<p>Ganz einfach: Wenn du die Funktion jetzt in main() benutzen willst, aber nicht jede Funktion über der main() definieren willst (z.B. hast du die Deklaration in einer .h-Datei und die Definition wieder in einer anderen cpp-Datei), deklarierst du sie einfach, dann kennt der Compiler den Namen der Funktion und weiß, irgendwo (in irgend einer cpp-Datei meist) steht auch noch die Definition (wenn sie das nicht tut, spuckt dir der Linker einen Error ala <code>unresolved symbol</code> aus). Würdest du sie nicht deklarieren, würde der Compiler dann meckern, weil er den Bezeichner nicht kennt. Wenn du sie jedoch schon über der main() definierst, kannste dir die Deklaration (auch Forward-Deklaration genannt) sparen, da der Compiler in main() die Funktion dann eh kennt.<br />
Analog gilt das natürlich auch, wenn du Funktionen in verschiedene cpp/h Dateien auslagerst.<br />
tl;dr: jede Definition ist auch eine Deklaration.<br />
C/C++ Tags sind unter <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="🙂"
    /> <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="😃"
    /> ;), den Code einfach zwischen die Tags schreiben.</p>
<p>Ach übrigens: von C++ von A bis Z würd ich die Hände von lassen, es ist gerade Anfängern nicht zu empfehlen, weil J.W. selbst noch einer ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266214</guid><dc:creator><![CDATA[Der Tobi]]></dc:creator><pubDate>Thu, 01 Nov 2012 13:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 13:03:58 GMT]]></title><description><![CDATA[<p>Keksman schrieb:</p>
<blockquote>
<p>in meinem Buch &quot;C++ von A bis Z&quot;</p>
</blockquote>
<p>Aua, das Buch ist bekannt als übelst schlecht und gleich wird auch ein Shitstorm losgehen, was an dem Programmbeispiel alles schlecht ist (und zurecht). Siehe auch:<br />
<a href="http://www.c-plusplus.net/forum/272350-full" rel="nofollow">http://www.c-plusplus.net/forum/272350-full</a></p>
<blockquote>
<p>Warum läuft das Programm auch ohne Deklaration</p>
</blockquote>
<p>Weil eine Definition auch gleichzeitig eine Deklaration ist.</p>
<blockquote>
<p>und wie füge ich den Code über code tags ein ?</p>
</blockquote>
<p>Guck mal im Editorfenster unten links unter den Smileys.</p>
<p>Für alle die sich über den Wolf'schen Code lustig machen wollen, poste ich ihn mal formatiert:</p>
<pre><code class="language-cpp">//dynarray2.cpp Seite 178
#include &lt;iostream&gt;
using namespace std;

// hier steht nur die Definition
int* renew( int* old, int sizeold, int sizenew )
{
 //Größeren Speicher allozieren
 int* tmp = new int [sizenew];

 //Alten Inhalt nach tmp kopieren
 for( int i=0; i&lt;sizeold; i++)
 {
  tmp[i] = old[i];
 }
 //Alten Inhalt löschen
 delete [] old;
 //Neues Array zurückgeben
 return tmp;
}

int main(void)
{
 int *dynarray = new int[10];
 for( int i=0; i&lt;10; i++)
 {
  dynarray[i] = i;
 }
 //Array vergrößern auf 15. Elemente
 dynarray=renew(dynarray,10,15);
 for( int i=10; i&lt;15; i++)
 {
  dynarray[i] = i;
 }
 for( int i=0; i&lt;15; i++)
 {
  cout &lt;&lt; dynarray[i] &lt;&lt; '\n';
 }
 cin.get();
 return 0;
}
</code></pre>
<p>Ahh, ja. Tatsächlich ein echter Wolf, wie man ihn kennt. <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="🙂"
    /> Man möchte schon fast meinen, er macht das mit Absicht und trollt die C++-Welt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266215</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 01 Nov 2012 13:03:58 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 13:20:29 GMT]]></title><description><![CDATA[<p>jaa das Buch ist echt nicht das beste ^^. Werd mir Weinachten das Buch c++ Primer zulegen. Hoffe das es besser ist als mein jetziges.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266218</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Thu, 01 Nov 2012 13:20:29 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 14:14:57 GMT]]></title><description><![CDATA[<p>Zum Thema Buch kann ich dir noch das hier empfehlen:<br />
Der C++ Programmierer von Ulrich Breymann<br />
<a href="https://dozentenportal.hanser.de/default.aspx?tabid=66&amp;lcid=1031&amp;tableno=27&amp;itemno=563&amp;pk_1=563&amp;prj=3-446-42691-4" rel="nofollow">Der C++ Programmierer</a></p>
<p>Bin selber erst seit gut 1-2 Monaten dabei und kann sagen, es ist wirklich gut und verständlich be/geschrieben. Hat in diesem Forum bisher nur positive Rückmeldungen erhalten. <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="🙂"
    /><br />
Aber Primer soll wohl auch gut sein, liegt bei dir <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/2266227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266227</guid><dc:creator><![CDATA[xStrykex]]></dc:creator><pubDate>Thu, 01 Nov 2012 14:14:57 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 14:37:32 GMT]]></title><description><![CDATA[<p>Ich will Herrn Breymann nicht zu nahe treten, aber mit dem C++ Primer mitzuhalten, ist nicht ganz einfach. Dessen Autoren sind bei der Sprachentwicklung ja von Anfang an dabei gewesen -- das einzige, womit man noch näher an die Quelle kommt, ist <a href="http://www.amazon.de/Einf%C3%BChrung-die-Programmierung-Pearson-Studium/dp/3868940057/" rel="nofollow">das hier.</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266234</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 01 Nov 2012 14:37:32 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 14:41:31 GMT]]></title><description><![CDATA[<p>Keksman schrieb:</p>
<blockquote>
<p>in meinem Buch &quot;C++ von A bis Z&quot; steht [...]</p>
</blockquote>
<p>Oha. Habe nichts gutes von diesem Buch gehört...</p>
<p>Keksman schrieb:</p>
<blockquote>
<p>auf Seite 99 steht geschrieben ,dass man eine Funktion zuerst deklarieren und definieren muss um sie nacher aufzurufen.</p>
</blockquote>
<p>Das ist nicht ganz korrekt formuliert. Eine Funktion muss vorher mindestens deklariert sein, damit man sie innerhalb einer Übersetzungseinheit nutzen kann. Eine Definition ist allerdings gleichzeitig eine Deklaration. Nochmal zur Erinnerung:</p>
<pre><code class="language-cpp">void foo(); // Das ist eine Deklaration, _keine_ Definition

void foo() { // Das ist eine Definition (aber auch eine Deklaration)
  .....
}
</code></pre>
<p>Deklarieren darfst du so oft du willst. Beim Definieren sieht das anders aus. Hierfür haben wir die ODR (one definition rule), die sich aber nicht in einem Satz erklären lässt. Man sollte das in einem schlauen Buch ruhig mal gelesen haben, den Abschnitt, weil er auch auf solche Dinge wie Templates und inline-Funktionen eingeht und es eigentlich ein ganzer Haufen von Regeln ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266235</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 01 Nov 2012 14:41:31 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 17:40:53 GMT]]></title><description><![CDATA[<p>Meint ihr das das Buch c++ Primer vierte Auflage gut zum lernen ist obwohl es ja eigentlich schon veraltet ist ? Oder sollte ich lieber Der c++ Programmierer nehmen ? Rein gefühlsmäßig würde ich mich eher Der c++ Programmierer nehmen da dieses Buch aktueller und dem Leser auch Aufgaben stellt die er zu erledigen hat , bevor er fortschreitet. (jedenfalls hab ich das so verstanden). Danke übrigens das ihr mich aufmerksam darauf gemacht habt das dieses Buch shit ist. <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="🙂"
    /> Ich hätte mit dem Buch wohl einfach weiterprogrammiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266311</guid><dc:creator><![CDATA[Keksman]]></dc:creator><pubDate>Thu, 01 Nov 2012 17:40:53 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Funktionsdeklaration on Thu, 01 Nov 2012 17:57:13 GMT]]></title><description><![CDATA[<p>Keksman schrieb:</p>
<blockquote>
<p>Meint ihr das das Buch c++ Primer vierte Auflage gut zum lernen ist obwohl es ja eigentlich schon veraltet ist ?</p>
</blockquote>
<p>Ja. Die Neuerungen in C++11 sind nicht so gravierend, die werden selbst in einem aktuellen Anfängerbuch bloß eine Randnotiz sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2266318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2266318</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 01 Nov 2012 17:57:13 GMT</pubDate></item></channel></rss>