<?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[Gültigkeitsbereich]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich verliere in KDevelop immer den Zeiger auf eine Variable.</p>
<pre><code>void readtoarray(FILE *fp,double **C,unsigned int &amp;n);

int main(int argc, char *argv[]){
	...
	double **C;
	...
	readtoarray(fp,C,n);
	...
	cout &lt;&lt; C[0][0] &lt;&lt; C[0][1] &lt;&lt; endl; // Hier bekomme ich SIGSEGV
	// Die Adresse des Zeigers auf C ist 0x0
	...
}

void readtoarray(FILE *fp,double **C,unsigned int &amp;n){
	...
	C = new double*[n];
	for(unsigned int i=0;i&lt;n;i++) C[i] = new double[2];
	... // Hier hat C noch eine gültige Adresse und gültige Werte
	cout &lt;&lt; C[0][0] &lt;&lt; C[0][1] &lt;&lt; endl; // Funktioniert einwandfrei
}
</code></pre>
<p>Warum verliere ich beim herausspringen aus der Funktion die Adresse des Zeigers?<br />
Ich habe ihn doch dynamisch auf dem Heap angelegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/265457/gültigkeitsbereich</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 03:46:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/265457.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Apr 2010 09:25:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 09:25:13 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich verliere in KDevelop immer den Zeiger auf eine Variable.</p>
<pre><code>void readtoarray(FILE *fp,double **C,unsigned int &amp;n);

int main(int argc, char *argv[]){
	...
	double **C;
	...
	readtoarray(fp,C,n);
	...
	cout &lt;&lt; C[0][0] &lt;&lt; C[0][1] &lt;&lt; endl; // Hier bekomme ich SIGSEGV
	// Die Adresse des Zeigers auf C ist 0x0
	...
}

void readtoarray(FILE *fp,double **C,unsigned int &amp;n){
	...
	C = new double*[n];
	for(unsigned int i=0;i&lt;n;i++) C[i] = new double[2];
	... // Hier hat C noch eine gültige Adresse und gültige Werte
	cout &lt;&lt; C[0][0] &lt;&lt; C[0][1] &lt;&lt; endl; // Funktioniert einwandfrei
}
</code></pre>
<p>Warum verliere ich beim herausspringen aus der Funktion die Adresse des Zeigers?<br />
Ich habe ihn doch dynamisch auf dem Heap angelegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887129</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 09:25:13 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 09:42:56 GMT]]></title><description><![CDATA[<p>Deine Funktion nimmt C als call-by-value. Das heißt, wenn du den Wert von C in der Funktion änderst, wird nicht der Wert der übergebenen Variable im Hauptprogramm geändert.<br />
Du musst entweder einen Zeiger auf C übergeben oder C per Referenz übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887136</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 23 Apr 2010 09:42:56 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 09:52:07 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Ich stehe gerade auf dem Schlauch, wieso call by value? ich übergebe doch nur adressen mit den Zeigern? Könntest du mir kurz den Prototyp der richtigen Funktion und den FUnktionsauf zeigen?</p>
<p>Ist es das übliche Vorgehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887137</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 09:52:07 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 09:59:06 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::vector&lt;std::pair&lt;double&gt; &gt; readtoarray(std::istream&amp; in)
</code></pre>
<p>SCNR <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/1887140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887140</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Fri, 23 Apr 2010 09:59:06 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 10:01:37 GMT]]></title><description><![CDATA[<p>Nukularfüsiker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::vector&lt;std::pair&lt;double&gt; &gt; readtoarray(std::istream&amp; in)
</code></pre>
<p>SCNR <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>
</blockquote>
<p>Danke.. aber damit kann ich als Anfänger noch nichts anfangen. Ich meinte eher so in dem Stil wie ich ihn gepastet habe. Das Andere kommt wahrscheinlich etwas später in der Lektüre.</p>
<p>Ist wahrscheinlich das übliche vorgehen... hmm..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887141</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 10:01:37 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 10:06:47 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>Ich stehe gerade auf dem Schlauch, wieso call by value? ich übergebe doch nur adressen mit den Zeigern? Könntest du mir kurz den Prototyp der richtigen Funktion und den FUnktionsauf zeigen?</p>
</blockquote>
<p>Entweder so:</p>
<pre><code class="language-cpp">void readtoarray(FILE *fp,double **&amp;C,unsigned int &amp;n); // Prototyp

readtoarray(fp,C,n); //Aufruf
</code></pre>
<p>oder so:</p>
<pre><code class="language-cpp">void readtoarray(FILE *fp,double ***C,unsigned int &amp;n); // Prototyp

readtoarray(fp,&amp;C,n); //Aufruf
</code></pre>
<p>Wobei Fall 1 besser geeignet ist, weil du da außer dem Funktionskopf nichts zu verändern brauchst, während du im zweiten Fall Änderungen an der Funkton selbst vornehmen musst.</p>
<p>Mach dir aber unbedingt klar, warum diese Vorschläge funktionieren und deines nicht. Das zu verstehen ist ungeheuer wichtig.</p>
<blockquote>
<p>Ist es das übliche Vorgehen?</p>
</blockquote>
<p>Nein, das übliche Vorgehen wäre eine C++-artige Lösung wie Nukularfüsiker vorgeschlagen hat. Insbesondere bedeutet dies, dass man weder mit rohen Arrays hantiert, noch dass man vom Nutzer verlangt, sich selber um die richtige Speicherverwaltung kümmern zu müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887143</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 23 Apr 2010 10:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 10:08:41 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>Danke.. aber damit kann ich als Anfänger noch nichts anfangen. Ich meinte eher so in dem Stil wie ich ihn gepastet habe. Das Andere kommt wahrscheinlich etwas später in der Lektüre.</p>
</blockquote>
<p>Eine Lektüre die Anfänger mit Pointern auf Pointer, new/delete und C-Altlasten quält, ist nicht sehr viel wert.</p>
<p>Wenn du auf diesen mittelalterlichen Stil angewiesen bist, klappts vielleicht so:</p>
<pre><code class="language-cpp">double** readtoarray(FILE *fp, unsigned int &amp;n){
   double** C = new double*[n]
 ...
   return C;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1887145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887145</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Fri, 23 Apr 2010 10:08:41 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 10:14:52 GMT]]></title><description><![CDATA[<p>jetzt bekomme ich für den Prototyp:</p>
<pre><code>void readtoarray(FILE *fp,double ***C,unsigned int &amp;n);
</code></pre>
<p>und den Aufruf</p>
<pre><code>readtoarray(fp,&amp;C,n);
</code></pre>
<p>error: cannot convert 'double**' to 'double***' in assignment<br />
error: cannot convert 'double*' to 'double**' in assignment</p>
<p>in den beiden Zeilen:</p>
<pre><code>C = new double*[n];
for(unsigned int i=0;i&lt;n;i++) C[i] = new double[2];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1887151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887151</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 10:14:52 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 10:27:55 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>jetzt bekomme ich für den Prototyp:</p>
<pre><code>void readtoarray(FILE *fp,double ***C,unsigned int &amp;n);
</code></pre>
<p>und den Aufruf</p>
<pre><code>readtoarray(fp,&amp;C,n);
</code></pre>
<p>error: cannot convert 'double**' to 'double***' in assignment<br />
error: cannot convert 'double*' to 'double**' in assignment</p>
<p>in den beiden Zeilen:</p>
<pre><code>C = new double*[n];
for(unsigned int i=0;i&lt;n;i++) C[i] = new double[2];
</code></pre>
</blockquote>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Wobei Fall 1 besser geeignet ist, weil du da außer dem Funktionskopf nichts zu verändern brauchst, <strong>während du im zweiten Fall Änderungen an der Funkton selbst vornehmen musst.</strong></p>
</blockquote>
<p>Ich verrate dir aber nicht, wie das jetzt richtig ist. Das Thema ist viel zu wichtig, als dass du einfach eine Lösung vorgesetzt bekommst und diese ohne tieferes Verständnis benutzt.</p>
<p>Da dein Buch ja anscheinend mächtig viel mit Pointern macht, solltest du dir die entsprechenden Kapitel nochmal genau durchlesen. Dann wirst du auch auf die Lösung kommen.</p>
<p>Oder du schmeißt das Buch weg, vergisst alles was du daraus gelernt hast und holst dir ein gutes C++-Buch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887155</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 23 Apr 2010 10:27:55 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 10:31:33 GMT]]></title><description><![CDATA[<p>Was ist ein gutes C++ BUch?</p>
<p>Ich habe mit C angefangen<br />
C von A bis Z von Jürgen Wolf.<br />
und bin jetzt mit<br />
C++ von A bis Z von Jürgen Wolf</p>
<p>Im Prinzip bin ich zufrieden weil er entsprechend dem neuen C/C++ Standard schreibt. Könnte zwar besser sein aber man muss es erstmal selber besser machen können <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>Ich bin für Empfehlungen offen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887159</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 10:31:33 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 10:45:17 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>Was ist ein gutes C++ BUch?</p>
</blockquote>
<p>Jedenfalls nicht C++ von A bis Z. <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 />
Hier hast du eine Liste:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-251551.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-251551.html</a></p>
<p>Ansonsten hatten wir gerade erst ein Thema zu C zu C++ Umsteiger:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-265356.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-265356.html</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887171</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 23 Apr 2010 10:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 11:13:54 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>darkfate schrieb:</p>
<blockquote>
<p>Was ist ein gutes C++ BUch?</p>
</blockquote>
<p>Jedenfalls nicht C++ von A bis Z. <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 />
Hier hast du eine Liste:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-251551.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-251551.html</a></p>
<p>Ansonsten hatten wir gerade erst ein Thema zu C zu C++ Umsteiger:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-265356.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-265356.html</a></p>
<p>Grüssli</p>
</blockquote>
<p>Ich weiß nicht was ich von Büchern halten soll die teilweise 1992 veröffentlicht wurden. In der Liste ist nur ein einziges Buch, dass von 2009 ist. Von so etwas würde ich jedem grundsätzlich abraten. Ich würde die untere Grenze bei 2006 ziehen. Danach ist einfach zu viel in der Compilerwelt und in der Rechnerarchitektur passiert.</p>
<p>Damit verwirrt man doch jeden Einsteiger. Es wird weder auf die C99 C-0x Standards eingegangen, noch auf parallele Programmierung oder QT,wXwidgets.</p>
<p>Gerade diese Dinge machen heute eine gute Anwendung und den Sinn von C++ aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887191</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 11:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 11:40:20 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>Im Prinzip bin ich zufrieden weil er entsprechend dem neuen C/C++ Standard schreibt.</p>
</blockquote>
<p>Es gibt keine Sprache C/C++, wie oft muss das den noch gesagt werden. Und auch wenn C++ viele C-Konstrukte zulässt, ist C++ dennoch nicht 100%ig zu C kompatibel.</p>
<p>darkfate schrieb:</p>
<blockquote>
<p>Ich weiß nicht was ich von Büchern halten soll die teilweise 1992 veröffentlicht wurden. In der Liste ist nur ein einziges Buch, dass von 2009 ist.</p>
</blockquote>
<p>Die erste Liste ist durchaus INHALTLICH aktuell (zumindest was Mitleid geschrieben hat, habe ich gerade mal überflogen), man sollte aber (wenn vorhanden) auf aktuelle Auflagen zugreifen.</p>
<p>darkfate schrieb:</p>
<blockquote>
<p>Ich würde die untere Grenze bei 2006 ziehen. Danach ist einfach zu viel in der Compilerwelt und in der Rechnerarchitektur passiert.</p>
</blockquote>
<p>Der aktuelle C++ Standard ist von 1998, der kommende Standard ist noch nicht fertig (wenn auch kurz vor der Fertigstellung) und Bücher dafür sollten wohl erst um 2011 herum erscheinen (Bis die Compilerhersteller den Standard umsetzen wird dann noch ein wenig dauern).</p>
<p>Wichtig ist weniger das Erscheinungsdatum, sondern die &quot;Aktualität&quot; des Autors (es gibt noch immer viele aktuelle C++ Bücher, die nicht mal dem C++98 Standard entsprechen).</p>
<p>darkfate schrieb:</p>
<blockquote>
<p>Damit verwirrt man doch jeden Einsteiger. Es wird weder auf die C99 C-0x Standards eingegangen,...</p>
</blockquote>
<p>C99 ist NICHT Bestandteil von C++, gehört also auch nicht in C++ Lektüre.</p>
<p>darkfate schrieb:</p>
<blockquote>
<p>...noch auf parallele Programmierung oder QT,wXwidgets.</p>
</blockquote>
<p>Was allesamt nicht zum Standard gehört, sondern Bibliotheksabhängig ist. Ein Buch das auf die Umsetzung der Threadbibliothek des kommenden Standards eingeht ist <a href="http://www.manning.com/williams/" rel="nofollow">C++ Concurrency in Action</a> das aber noch nicht erschienen, und nur als Vorabversion verfügbar ist. Wenn man nahe am kommenden Standard sein möchte was Threading &amp; Co angeht, sollte man sich die Boost-Bibliotehk (und ggf. die Internetseite <a href="http://www.highscore.de/cpp/boost/" rel="nofollow">Die Boost C++ Bibliotheken (Onlinebuch)</a> anschauen).</p>
<p>UI ist erst dann sinnvoll wenn man die C++ Grundlagen beherrscht, und dann muss man sich erst einmal überlegen WELCHE Bibliothek für seine Aufgaben die sinnvollste ist, da es keine Standardbibliothek hierfür gibt.</p>
<p>darkfate schrieb:</p>
<blockquote>
<p>Gerade diese Dinge machen heute eine gute Anwendung und den Sinn von C++ aus.</p>
</blockquote>
<p>Aber erfordern zumindest ein Grundlagenwissen von C++. Und was UI Bibliotheken angeht, gibt es hier eigene Unterforen (schon alleine weil sie eben nicht Bestandteil von Standard C++ sind).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887206</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 23 Apr 2010 11:40:20 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 11:33:34 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>Ich weiß nicht was ich von Büchern halten soll die teilweise 1992 veröffentlicht wurden. In der Liste ist nur ein einziges Buch, dass von 2009 ist. Von so etwas würde ich jedem grundsätzlich abraten. Ich würde die untere Grenze bei 2006 ziehen. Danach ist einfach zu viel in der Compilerwelt und in der Rechnerarchitektur passiert.</p>
</blockquote>
<p>Ironischerweise vermittelt dein aktuell verwendetes, modernes Buch offenbar ein Wissen über C++, das schon 1992 als rückständig gegolten hätte.</p>
<blockquote>
<p>Damit verwirrt man doch jeden Einsteiger. Es wird weder auf die C99 C-0x Standards eingegangen, noch auf parallele Programmierung oder QT,wXwidgets.</p>
</blockquote>
<p>Außer C++0x (falls du das mit C-0x gemeint hast) hat das alles nichts mit C++ zu tun und nichts in einem C++-Lehrbuch zu suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887207</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Fri, 23 Apr 2010 11:33:34 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 11:38:33 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22362">@darkfate</a>,<br />
Es zeigt sich, dass du keine Ahnung hast:<br />
1. Der letzte vollständige C++ Standard stammt aus dem Jahr 1998.<br />
2. Es gibt Dinge, welche sich auch in den letzten 20 Jahren nicht geändert haben, wobei man natürlich genau wissen muss, was es ist. So kann auch noch ein etwas älteres Buch sehr aktuell und gut sein.<br />
3. C gehört in kein C++ Buch rein. Jedes Buch, welches C und C++ lernt kann man grundsätzlich gleich in die Tonne schmeissen. C99 hat schon gar nichts im aktuellen C++ zu suchen.<br />
4. Bevor man mit QT oder wxWidgets anfängt, sollte man zuerst GRÜNDLICH C++ auf der Konsole lernen. Die Empfehlungen variieren, aber befinden sich im Bereich von 6 bis 12 Monate.<br />
5. C++ wird bei weitem nicht nur für GUI-Programmierung verwendet.<br />
6. Parallele Programmierung ist ein Thema für sich, über welches man ein eigenes Buch schreiben kann.<br />
7. Sinnvolle Bücher über den nächsten Standard gibt es noch nicht. Wie auch? Das Ding ist ja noch nicht mal verabschiedet.</p>
<p>C++ ist eine sehr komplexe und schwere Sprache. Man sollte sehr behutsam an diese Sprache herangehen. Zuviel auf einmal verwirrt den Anfänger nur oder führt dazu, dass er ein schreckliches C++ schreibt. Zum Beispiel übernimmt er dann das schreckliche C++ von wxWidgets, welches völlig veraltet ist.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887213</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 23 Apr 2010 11:38:33 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 11:55:07 GMT]]></title><description><![CDATA[<p>Einverstanden.. Vielleicht setze ich mich zu stark auf das vorangegangene C Buch. Ich möchte meine Beratungsresistenz ablegen und gelobe Besserung.</p>
<p>Könnte mir jetzt einer mal sagen warum:</p>
<pre><code>void readtoarray(FILE *fp, unsigned int &amp;n);

int main(int argc, char **argv){
	...
	double ***C;
	FILE *fp;

	readtoarray(fp,&amp;C,n);

	cout &lt;&lt; C[0][0] &lt;&lt; C[0][1] &lt;&lt; endl;

	// free Coordinate Array **C
	for(unsigned int i=0;i&lt;n;i++) delete C[i];
	delete [] C;
	...
}

void readtoarray(FILE *fp,double ***C,unsigned int &amp;n){

	...
	C = new double*[n];
	for(unsigned int i=0;i&lt;n;i++) C[i] = new double[2];
	...
}
</code></pre>
<p>Irgendwie kriege ich es selber nicht gebacken und möchte eigentlich vorankommen anstatt mich stundenlang damit zu beschäftigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887228</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 11:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 12:02:55 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>C++ ist eine sehr komplexe und schwere Sprache. Man sollte sehr behutsam an diese Sprache herangehen. Zuviel auf einmal verwirrt den Anfänger nur oder führt dazu, dass er ein schreckliches C++ schreibt. Zum Beispiel übernimmt er dann das schreckliche C++ von wxWidgets, welches völlig veraltet ist.</p>
<p>Grüssli</p>
</blockquote>
<p>Hoppla. Wäre dir dankbar wenn du mir das mal näher erläuterst. Ich bin gerade frisch in ein ebenfalls frisches C/C++ Projekt basierend wxWidgets hineingeworfen worden. Habe gerade mal grundlegende Erfahrungen in C sammeln können und kann dazu noch kein Urteil abgeben. Warum soll wxWidgets so schrecklich sein? Was nimmt man stattdessen lieber? Ich benötige OpenGL Beschleunigung.</p>
<p>Eigenartigerweise sind beide Bücher von Wolf für C++ gar nicht so schlecht bewertet. Wie kommts? Hat es von euch Jemand schon in der Hand gehabt? Vielleicht ist ja die aktuelle Ausgabe doch gar nicht so schlecht?!?<br />
<a href="http://www.amazon.de/gp/product/3836214296" rel="nofollow">http://www.amazon.de/gp/product/3836214296</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887233</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 12:02:55 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 12:11:58 GMT]]></title><description><![CDATA[<p>Zu deinem Problem:<br />
Wie SeppJ gesagt hat, solltest du nochmals das Thema zu Zeigern durchlesen. Auch ein Zeiger kann kopiert werden, da er auch nichts anderes darstellt, als ein paar Bytes im Speicher, welcher eine Adresse speichern. Auch wichtig dürfte dann für dich die Möglichkeit der Derefenzierung sein.</p>
<p>Zu wxWidgets:<br />
wxWidgets wurde begonnen noch bevor der erste C++ Standard da war. Die Bibliothek ist also wirklich uralt. Die Entwickler wollen auch immer noch Kompiler unterstützten, welche vor 1998 existiert haben, wodurch sie nicht auf alle Möglichkeiten des C++ Standards setzen können. Sie setzen somit ein völlig veraltest C++ für ihre Bibliothek ein. Die Liste was an wxWidgets schrecklich ist, geht ins unendliche, daher liste ich die jetzt nicht auf <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>Gute GUI Alternativen gibt es leider nicht. Viele schwören auf Qt, was ich persönlich aber auch nicht so der Hit finde. Es setzt zumindest etwas moderneres C++ ein. Weder wxWidgets noch Qt bauen auf OpenGL auf. Ein gutes C++ Framework für OpenGL ist SFML. Allerdings hast du in SFML kein GUI.</p>
<p>Zur Amazon Bewertung:<br />
Die wird von Laien gemacht ohne irgendwelche Ahnung. C++ von A bis Z täuscht dem Lernenden vor, dass er C++ könnte, weil man schnell mit wxWidgets grossartig aussehendes machen kann. Der Lernende merkt aber nicht, dass er so gar kein richtiges und schönes C++ lernt. Dadurch gibt er eine gute Bewertung ab bei Amazon, ist sich aber nicht bewusst, dass das Buch ihm nur geschadet hat.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887240</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 23 Apr 2010 12:11:58 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 12:13:25 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>Irgendwie kriege ich es selber nicht gebacken und möchte eigentlich vorankommen anstatt mich stundenlang damit zu beschäftigen.</p>
</blockquote>
<p>Guck doch mal selber hin, der Compiler sagt doch schon, was nicht stimmt:</p>
<pre><code>error: cannot convert 'double**' to 'double***' in assignment
</code></pre>
<p>Jetzt gucken wir mal in die Zeile:</p>
<pre><code class="language-cpp">C = new double*[n];
</code></pre>
<p>Gucken wir im Funktionskopf, so sehen wir, C ist vom Typ double***. Und <code>new double*[n]</code> liefert bekanntlich einen double**. Und jetzt beschwert sich der Compiler zurecht, dass dies nicht zusammenpasst, denn wie sollte man einem double*** einen double** zuweisen? Das geht einfach nicht.<br />
Wenn du jetzt meine Lösung nicht blind übernommen hättest, wüsstest du, warum ich dir im Funktionskopf aus dem double** einen double*** gemacht habe. Und dann wüsstest du auch, wie du deine Zuweisung abändern müsstest, damit es funktioniert wie es soll.<br />
Aber da dieses thema dermaßen elementar ist, dass du das verstehen musst, verweise ich dich nochmals auf dein Buch. Meinetwegen auch das C Buch, denn du machst hier (bis auf Kleinigkeiten) C kein C++. Guck dort mal die Begriffe call-by-reference und call-by-value nach, dann weißt du Bescheid.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887241</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 23 Apr 2010 12:13:25 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 12:20:24 GMT]]></title><description><![CDATA[<p>Ich frage mich wozu es dieses Forum gibt wenn man es sich selber erarbeiten soll. Wenn ich hier nicht weiterkomme dann hat der Herr Wolf es anscheinend nicht gut genug rübergebracht.</p>
<p>Wenn mir jemand zu Mathematik/Physik eine Frage stellt, dann versuche ich ihm auch zu antworten und verweise ihn nicht auf ein Kapitel aus dem Buch. Spart zwar Mühe, hat aber Null Lerneffekt.</p>
<p>Man könnte zumindest mal Tips geben woran es scheitert. Einfach zu sagen überlege doch selber ist ein Unding.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887248</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 12:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 12:34:15 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>....</p>
</blockquote>
<p>Immerhin ein Anhaltspunkt. Danke.</p>
<p>PS:<br />
Achso, was das Thema Elementar angeht. Da hat jeder seine eigenen Stärken. Ich kann auch nicht sagen Tensoren oder die Geometrische 5D Algebra gehören zu elementaren Dingen in der Mathematik, sie sind einfach und jeder sollte Sie können bevor er anfängt vernünftig zu rechnen. Ein bisschen Feingefühl wäre da nicht schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887250</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 12:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 12:44:17 GMT]]></title><description><![CDATA[<p>darkfate schrieb:</p>
<blockquote>
<p>Ich frage mich wozu es dieses Forum gibt wenn man es sich selber erarbeiten soll.</p>
</blockquote>
<p>Weil man es so lernt, sonst konsumiert man nur und lernt nichts. Wir haben hier ziemlich viel Erfahrung mit Anfängern. Wenn man ihnen die Lösung gibt, sind sie zufrieden gehen weg und kommen Tage darauf mit dem gleichen Problem wieder, weil sie die Lösung nicht verstanden haben.</p>
<p>darkfate schrieb:</p>
<blockquote>
<p>Man könnte zumindest mal Tips geben woran es scheitert. Einfach zu sagen überlege doch selber ist ein Unding.</p>
</blockquote>
<p>Es wurden doch verschiedene Tipps gegeben. Viel mehr kann man fast nicht sagen, ausser dir die fertige Lösung zu präsentieren. Und Zeiger könnte man in der Mathematik mit dem Addieren und Subtrahieren vergleichen. Du wirst daher wohl begriefen, dass es wirkliche Grundlagen sind, denn ohne Addition kommst du in der Mathematik überhaupt nirgends hin.</p>
<p>Falls du zusätzliche Literatur willst, dann findet sich zum Beispiel etwas hier (Kapitel 5):<br />
<a href="http://tutorial.schornboeck.net/inhalt.htm" rel="nofollow">http://tutorial.schornboeck.net/inhalt.htm</a></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887268</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 23 Apr 2010 12:44:17 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 12:54:13 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Du wirst daher wohl begriefen, dass es wirkliche Grundlagen sind, denn ohne Addition kommst du in der Mathematik überhaupt nirgends hin.</p>
</blockquote>
<p>Na da siehst du mal, hier haben wir den ersten gravierenden Fehler <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="🙂"
    /> so einfach ist es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887274</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 12:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 14:28:49 GMT]]></title><description><![CDATA[<p>Irgendwie komme ich von selber nicht drauf. Habe jetzt mal das ganze ein wenig abstrahiert.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstring&gt;

using namespace std;

void array1d(int &amp;n);
void array2d(double *A1, int &amp;n);

int main(int argc, char **argv){

	int n;
	double *A1;

	array1d(n);
	array2d(A1,n);

	cout &lt;&lt; &quot;n : &quot; &lt;&lt; n &lt;&lt; endl;
	cout &lt;&lt; &quot;A[0] : &quot; &lt;&lt; A1[0] &lt;&lt; &quot;A[1] : &quot; &lt;&lt; A1[1] &lt;&lt; endl;

	return EXIT_SUCCESS;
}

void array1d(int &amp;n){
	n = 2;
}

void array2d(double *A1, int &amp;n){

	A1 = new double[n];
	A1[0] = 0.1234;
	A1[1] = 0.5678;
}
</code></pre>
<p>In der Zeile 30 bekommt A1 immer eine neue Speicheradresse. So dass ich beim verlassen der Funktion nicht mehr darauf zugreifen kann. Es funktioniert wenn A1 = new double[n] vor der Funktion aufgerufen wird.</p>
<p>Mit einem Zeiger auf Zeiger habe ich es selber nicht hingekriegt. Wäre nett wenn mal einer einfach die Antwort postet. Wenn die Zeit noch erlaubt, eine kurze Begründung warum das so ist.</p>
<p>Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887319</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 14:28:49 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 14:38:11 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich hab dein Programm so modifiziert, dass der Zeiger als Referenz übergeben wird:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstring&gt;

using namespace std;

void array1d(int &amp;n);
void array2d(double *&amp;A1, int &amp;n);

int main(int argc, char **argv){

    int n;
    double *A1;

    array1d(n);
    array2d(A1,n);

    cout &lt;&lt; &quot;n : &quot; &lt;&lt; n &lt;&lt; endl;
    cout &lt;&lt; &quot;A[0] : &quot; &lt;&lt; A1[0] &lt;&lt; &quot;A[1] : &quot; &lt;&lt; A1[1] &lt;&lt; endl;

    return EXIT_SUCCESS;
}

void array1d(int &amp;n){
    n = 2;
}

void array2d(double *&amp;A1, int &amp;n){

    A1 = new double[n];
    A1[0] = 0.1234;
    A1[1] = 0.5678;
}
</code></pre>
<p>Beachte die Zeilen 8 und 28. Hier wurde die Funktion so verändert, dass nun der Zeiger selbst und nicht eine Kopie des Zeigers an die Funktion übergeben wird.<br />
Bei mir klappt es. Ich hoffe ich konnte dir weiterhelfen.</p>
<p>MfG, Jochen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887323</guid><dc:creator><![CDATA[Jochen S.]]></dc:creator><pubDate>Fri, 23 Apr 2010 14:38:11 GMT</pubDate></item><item><title><![CDATA[Reply to Gültigkeitsbereich on Fri, 23 Apr 2010 14:46:17 GMT]]></title><description><![CDATA[<p>Hallo Jochen, danke für die schnelle Hilfe. Hat in jedem Fall weitergeholfen.</p>
<p>Referenzen werden doch intern mit Zeigern realisiert, also müsste es doch eine Zeier auf Zeiger Lösung (**A1) Lösung geben. Vielleicht könnte hier mal jemand auch daszu was posten. Ich möchte wissen was ich hier so lange falsch gemacht habe.</p>
<p>Nachtrag:<br />
Verstehe ich das jetzt richtig dass bei &quot;&amp;A1&quot; die Adresse vom Zeiger genommen wird (nicht worauf er zeigt). Mit &quot;*&amp;A1&quot; wird ein Zeiger auf die Adresse vom Zeiger an die Funktion weitergegeben? Bin ein wenig verwirrt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1887324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1887324</guid><dc:creator><![CDATA[darkfate]]></dc:creator><pubDate>Fri, 23 Apr 2010 14:46:17 GMT</pubDate></item></channel></rss>