<?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[Seltsames Verhalten von char (char != string dachte ich)]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>der Code ist ein Teil einer Aufgabe der Quersummenberechnung,<br />
man soll ein Wort eingeben und alle ASCII Werte addieren.<br />
Meine Idee war es ein char Array zu machen und dann jede Stelle zu betrachten und auszulese, allerdings muss ich einen Festen Array wählen (da ich noch keine Lösung dafür gefunden habe wie man bei Visual Studio dynamische Arrays macht).</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

char eingabe[1];
int  main()
{
        cin &gt;&gt; eingabe;
	getchar();

	cout &lt;&lt; sizeof(eingabe);
        cout &lt;&lt; eingabe;

	getchar();
	return 0;
}
</code></pre>
<p>Ich bin eigentlich der Überzeugung das man in einem Char nur ein Zeichen Speicher kann, wenn ich den char auch nicht zu enem Array mache speichert er auch nur das erste Zeichen, wenn man allerdings [1] an das char hängt speichert es alles sobald man es mit cout &lt;&lt; eingabe ausgibt, mehr als es zeichen beinhalten kann.<br />
Das ist für mich unverständlich...<br />
Leider habe ich nix dazu gefunden.</p>
<p>Ich würde gerne wissen warum das so ist.</p>
<p>Mfg Rarebit</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332709/seltsames-verhalten-von-char-char-string-dachte-ich</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 17:07:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332709.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 May 2015 13:38:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 13:49:18 GMT]]></title><description><![CDATA[<p>Guten Tag,</p>
<p>der Code ist ein Teil einer Aufgabe der Quersummenberechnung,<br />
man soll ein Wort eingeben und alle ASCII Werte addieren.<br />
Meine Idee war es ein char Array zu machen und dann jede Stelle zu betrachten und auszulese, allerdings muss ich einen Festen Array wählen (da ich noch keine Lösung dafür gefunden habe wie man bei Visual Studio dynamische Arrays macht).</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

char eingabe[1];
int  main()
{
        cin &gt;&gt; eingabe;
	getchar();

	cout &lt;&lt; sizeof(eingabe);
        cout &lt;&lt; eingabe;

	getchar();
	return 0;
}
</code></pre>
<p>Ich bin eigentlich der Überzeugung das man in einem Char nur ein Zeichen Speicher kann, wenn ich den char auch nicht zu enem Array mache speichert er auch nur das erste Zeichen, wenn man allerdings [1] an das char hängt speichert es alles sobald man es mit cout &lt;&lt; eingabe ausgibt, mehr als es zeichen beinhalten kann.<br />
Das ist für mich unverständlich...<br />
Leider habe ich nix dazu gefunden.</p>
<p>Ich würde gerne wissen warum das so ist.</p>
<p>Mfg Rarebit</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453939</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453939</guid><dc:creator><![CDATA[Rarebit]]></dc:creator><pubDate>Mon, 18 May 2015 13:49:18 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 13:55:34 GMT]]></title><description><![CDATA[<p>Ich vermute mal, dein Problem wird sein, dass dein char-Array nicht null-terminiert ist. Wenn dir das solche Schwierigkeiten macht, kannst du aber auch einfach direkt einen std::string einlesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453944</guid><dc:creator><![CDATA[str_forelle]]></dc:creator><pubDate>Mon, 18 May 2015 13:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 13:59:56 GMT]]></title><description><![CDATA[<p>Du übergibst an cin ein char - Array. Die Länge des Arrays kann cin nicht überprüfen. Wenn Du da also nun Zeichen eingibst, liest cin die in einen Bereich ein, der gar nicht mehr Dir (Deinem Programm) gehört. Das KANN gutgehen, MUSS es aber nicht.<br />
Es ist auf jeden Fall falsch!</p>
<p>Wie schon gesagt wurde: Lies in einen std::string ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453947</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453947</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 18 May 2015 13:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 16:58:49 GMT]]></title><description><![CDATA[<p>Das ist Problem ist das wir in der Vorlesung noch keinen String &quot;kennengelernt&quot; haben. Ich habe schon ab und zu mit C++ gemacht aber es soll halt mit einem Array gelöst werden.</p>
<p>Man soll ein Passwort vergleichen, daher benötige ich ein Char Array, um die einzelnen Zeichen zu vergleichen.</p>
<p>Daher ist es halt Problematisch wenn Zeichen weg fallen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453963</guid><dc:creator><![CDATA[Rarebit]]></dc:creator><pubDate>Mon, 18 May 2015 16:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 17:38:20 GMT]]></title><description><![CDATA[<p>Dann musst du eben einzelne Zeichen einlesen und Abspeichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453970</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 17:38:20 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 17:58:18 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Du übergibst an cin ein char - Array. Die Länge des Arrays kann cin nicht überprüfen.</p>
</blockquote>
<p>Er übergibt einen (const) char Zeiger, und zwar an <code>istream&amp; operator&gt;&gt; (istream&amp; is, char* s)</code> .</p>
<p>Belli schrieb:</p>
<blockquote>
<p>Wenn Du da also nun Zeichen eingibst, liest cin die in einen Bereich ein, der gar nicht mehr Dir (Deinem Programm) gehört. Das KANN gutgehen, MUSS es aber nicht.<br />
Es ist auf jeden Fall falsch!</p>
</blockquote>
<p>Ist falsch, ja.<br />
Man kann es allerdings richtig bekommen. z.B. indem man vorher mit <code>width()</code> die maximale Länge setzt oder einfach gleich <code>getline(char* s, streamsize n)</code> verwendet.<br />
Finde ich zwar beides grausig, aber grundsätzlich ist es möglich. (Und wie überall mag es auch hier sinnvolle Anwendungefälle geben.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453977</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 18 May 2015 17:58:18 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 18:25:42 GMT]]></title><description><![CDATA[<p>Also habe ich das jetzt richtig verstanden das mein char Array quasi einfach durch das &quot;befüllen&quot; von cin vergrößert wird, obwohl ich keinen Speicherplatz reserviert habe?</p>
<blockquote>
<p>Er übergibt einen (const) char Zeiger, und zwar an istream&amp; operator&gt;&gt; (istream&amp; is, char* s).</p>
</blockquote>
<p>Un wie genau ist das mit dem Zeigern, ich habe doch einfach nur einen Datentypen von char aber ohne Pointer, wie kommt da jetzt der Zeiger in spiel?</p>
<p>Sonst schon mal danke!!!</p>
<p>Um das Problem jetzt zu lösen, muss ich also mit width() die Größe angeben und dann schneidet es den Rest weg.<br />
Wenn ich das richtig verstanden habe werde ich mich da mal rein lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453983</guid><dc:creator><![CDATA[Rarebit]]></dc:creator><pubDate>Mon, 18 May 2015 18:25:42 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 18:39:31 GMT]]></title><description><![CDATA[<p>Rarebit schrieb:</p>
<blockquote>
<p>Also habe ich das jetzt richtig verstanden das mein char Array quasi einfach durch das &quot;befüllen&quot; von cin vergrößert wird, obwohl ich keinen Speicherplatz reserviert habe?</p>
</blockquote>
<p>Nein. Es wird einfach darüber hinaus geschrieben. Und das ist nicht gut.</p>
<blockquote>
<blockquote>
<p>Er übergibt einen (const) char Zeiger, und zwar an istream&amp; operator&gt;&gt; (istream&amp; is, char* s).</p>
</blockquote>
<p>Un wie genau ist das mit dem Zeigern, ich habe doch einfach nur einen Datentypen von char aber ohne Pointer, wie kommt da jetzt der Zeiger in spiel?</p>
</blockquote>
<p>Ein Array wird in fast jeder Art von Ausdrücken (bis auf ~4-5 Ausnahmen) als ein Zeiger auf sein erstes Element interpretiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453984</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 18:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 18:40:10 GMT]]></title><description><![CDATA[<p>Rarebit schrieb:</p>
<blockquote>
<p>Also habe ich das jetzt richtig verstanden das mein char Array quasi einfach durch das &quot;befüllen&quot; von cin vergrößert wird, obwohl ich keinen Speicherplatz reserviert habe?</p>
</blockquote>
<p>Für eine ziemlich merkwürdige Definition von &quot;vergrößern&quot;, ja. Es wird über das Ende des Arrays hinausgeschrieben. Wenn Du Pech hast, liegt da halt irgendwas anderes wichtiges.</p>
<blockquote>
<blockquote>
<p>Er übergibt einen (const) char Zeiger, und zwar an istream&amp; operator&gt;&gt; (istream&amp; is, char* s).</p>
</blockquote>
<p>Un wie genau ist das mit dem Zeigern, ich habe doch einfach nur einen Datentypen von char aber ohne Pointer, wie kommt da jetzt der Zeiger in spiel?</p>
</blockquote>
<p>Du kannst in C++ keine Arrays an Funktionen übergeben. Aus einem Array wird bei Übergabe an eine Funktion (und auch sonst fast immer, wenn man ein Array verwendet) ein Zeiger auf das erste Element.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453985</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Mon, 18 May 2015 18:40:10 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 18:50:22 GMT]]></title><description><![CDATA[<p>Wie bist Du denn auf das schmale Brett gekommen, die gesamte Zeichenkette in ein Array einlesen zu wollen?</p>
<p>Bleib doch bitte bei dem, was Du bisher gelernt hast. <code>getchar()</code> war ja offensichtlich dabei - benutz das!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453986</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Mon, 18 May 2015 18:50:22 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 18:52:55 GMT]]></title><description><![CDATA[<blockquote>
<p>Für eine ziemlich merkwürdige Definition von &quot;vergrößern&quot;, ja.</p>
</blockquote>
<p>Die Aussage ist falsch. Ein Array besitzt im Prinzip kein Speicherplatz, sondern ist einfach nur der Zeiger auf den Beginn einer Stelle im Speicher. Man kann diesen reservierten Speicher unmöglich vergrößern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453987</guid><dc:creator><![CDATA[X]]></dc:creator><pubDate>Mon, 18 May 2015 18:52:55 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 18:59:41 GMT]]></title><description><![CDATA[<p>X schrieb:</p>
<blockquote>
<blockquote>
<p>Für eine ziemlich merkwürdige Definition von &quot;vergrößern&quot;, ja.</p>
</blockquote>
<p>Die Aussage ist falsch.</p>
</blockquote>
<p>Ach! Deshalb schrieb ich ja &quot;Für eine ziemlich merkwürdige Definition von &quot;vergrößern&quot;&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453990</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Mon, 18 May 2015 18:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 19:06:10 GMT]]></title><description><![CDATA[<p>Kollege, egal wie &quot;merkwürdig&quot; man &quot;vergrößern&quot; auch definiert oder interpretiert, es wird für dieses Beispiel niemals zutreffen.</p>
<blockquote>
<p>Es wird einfach darüber hinaus geschrieben.</p>
</blockquote>
<p>Ist wesentlich zutreffender.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453994</guid><dc:creator><![CDATA[X]]></dc:creator><pubDate>Mon, 18 May 2015 19:06:10 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 19:17:47 GMT]]></title><description><![CDATA[<p>Das erklär einiges das ein Array keinen Speicherplatz hat sonder ein Zeiger ist, das hat man uns in der Uni aber als Datentyp erklärt...</p>
<blockquote>
<p>Wie bist Du denn auf das schmale Brett gekommen, die gesamte Zeichenkette in ein Array einlesen zu wollen?</p>
<p>Bleib doch bitte bei dem, was Du bisher gelernt hast. getchar() war ja offensichtlich dabei - benutz das!</p>
</blockquote>
<p>Wir haben in der Uni mit scanf() &quot;gelernt&quot;, wir machen so nen Crashkurs und lernen da halt kaum Sachen aber die Aufgaben sollen wir halt machen...<br />
Ich helfe meinen Kommillitonen halt aus, habe früher halt mal aus intresse ein Pong programmiert mit c++, wir leren aber nur c.<br />
Getchar() kenne ich halt nur dadruch das man es nutzt damit die Konsole nicht zu geht.<br />
Ich werde mich jetzt mal einlesen &quot;in&quot; getchar().</p>
<p>Danke!!!<br />
Das das<br />
Array ein Pointer ist, ist schon gut zu wissen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453995</guid><dc:creator><![CDATA[Rarebit]]></dc:creator><pubDate>Mon, 18 May 2015 19:17:47 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 19:28:08 GMT]]></title><description><![CDATA[<p>Rarebit schrieb:</p>
<blockquote>
<p>Das das Array ein Pointer ist, ist schon gut zu wissen.</p>
</blockquote>
<p>Es ist besser zu wissen, dass es <strong>nicht</strong> so ist.</p>
<p>Ein Array hat (nach der Definition) eine bestimmte Größe und eine Adresse.<br />
Beide kannst du zur Laufzeit <strong>nicht</strong> mehr <strong>ändern</strong>.<br />
Der Speicher besteht aus einem zusammenhängenden Block, der auch nur die Nutzdaten aufnimmt.<br />
Über den Arraynamen kommst du an die Adresse vom ersten Element.</p>
<p>Ein Pointer ist eine Variable, die eine Adresse aufnimmt.<br />
Diese Adresse kannst du auch <strong>ändern</strong>.<br />
Neben den Nutzdaten, auf die der Pointer verweist, braucht der Pointer selber auch Speicher, in der die Adresse steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453998</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Mon, 18 May 2015 19:28:08 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 19:38:27 GMT]]></title><description><![CDATA[<p>Rarebit schrieb:</p>
<blockquote>
<p>Das erklär einiges das ein Array keinen Speicherplatz hat sonder ein Zeiger ist, das hat man uns in der Uni aber als Datentyp erklärt...</p>
</blockquote>
<p>Die Aussage von X ist auch Quatsch. Sofort vergessen! Ein Array ist kein Zeiger und ein Zeiger ist kein Array. Das anders zu sehen bringt einen schnell in Schwierigkeiten. Ein Array ist ein zusammengesetzter Datentyp, der einer Zusammenstellung gleichartiger Objekte entspricht, die man über einen Index ansprechen kann.</p>
<blockquote>
<p>Wir haben in der Uni mit scanf() &quot;gelernt&quot;, wir machen so nen Crashkurs und lernen da halt kaum Sachen aber die Aufgaben sollen wir halt machen...<br />
Ich helfe meinen Kommillitonen halt aus, habe früher halt mal aus intresse ein Pong programmiert mit c++, wir leren aber nur c.</p>
</blockquote>
<p>Ist die Frage denn nun als C-Frage oder als C++-Frage zu verstehen? Mit scanf und C-Strings wäre dein Problem ganz einfach behebbar. Mit einem C++-String würde das Problem gar nicht erst auftauchen. Erst die Mischung aus C und C++ macht das Problem.</p>
<p>Und wie bereits mehrmals gesagt wurde, ist es ohnehin merkwürdig, hier nicht die Zeichen einzeln lesen zu wollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2453999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2453999</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 19:38:27 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 19:54:43 GMT]]></title><description><![CDATA[<p>Ich Code in C++ und daher auch als C++ Frage aufzufassen.<br />
Da ich immer mit C++ &quot;gearbeitet&quot; habe, möchte ich dies auch weiter so tun, in paar Wochen werden wir in der Uni auch darauf umsteigen.</p>
<p>Strings haben wir noch nicht in der Vorlesung behandelt daher mit Arrays, aber ich weiß was ein String ist, wenn das raus das Chaos resultiert das ich C++ mit den Arrays zusammenwerfe, dann mache ich es einfach mit den Strings und fertig. <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/2454004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454004</guid><dc:creator><![CDATA[Rarebit]]></dc:creator><pubDate>Mon, 18 May 2015 19:54:43 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 19:58:19 GMT]]></title><description><![CDATA[<blockquote>
<p>Die Aussage von X ist auch Quatsch. Sofort vergessen! Ein Array ist kein Zeiger und ein Zeiger ist kein Array. Das anders zu sehen bringt einen schnell in Schwierigkeiten. Ein Array ist ein zusammengesetzter Datentyp, der einer Zusammenstellung gleichartiger Objekte entspricht, die man über einen Index ansprechen kann.</p>
</blockquote>
<p>Das mit den &quot;Schwierigkeiten&quot; empfinde ich als besonders großen Schwachsinn. Ein Array wird in C++ syntaktisch immer wie ein konstanter Zeiger behandelt. Ob du das Array als konstante Adresse auf den Anfang dieses Bereichs definierst, oder als konstanten Zeiger auf den Anfang des Bereichs ist absolut gleichwertig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454006</guid><dc:creator><![CDATA[X]]></dc:creator><pubDate>Mon, 18 May 2015 19:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 20:17:43 GMT]]></title><description><![CDATA[<p>X schrieb:</p>
<blockquote>
<p>Ein Array wird in C++ syntaktisch immer wie ein konstanter Zeiger behandelt. Ob du das Array als konstante Adresse auf den Anfang dieses Bereichs definierst, oder als konstanten Zeiger auf den Anfang des Bereichs ist absolut gleichwertig.</p>
</blockquote>
<p>Nur mit einigen Ausnahmen. Der sizeof-Operator zum Beispiel. Über diese Sachen wird man dann irgendwann stolpern. Also besser das richtige lernen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2454010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454010</guid><dc:creator><![CDATA[ZoneRunner]]></dc:creator><pubDate>Mon, 18 May 2015 20:17:43 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 20:24:14 GMT]]></title><description><![CDATA[<p>X schrieb:</p>
<blockquote>
<blockquote>
<p>Die Aussage von X ist auch Quatsch. Sofort vergessen! Ein Array ist kein Zeiger und ein Zeiger ist kein Array. Das anders zu sehen bringt einen schnell in Schwierigkeiten. Ein Array ist ein zusammengesetzter Datentyp, der einer Zusammenstellung gleichartiger Objekte entspricht, die man über einen Index ansprechen kann.</p>
</blockquote>
<p>Das mit den &quot;Schwierigkeiten&quot; empfinde ich als besonders großen Schwachsinn.</p>
</blockquote>
<p>Sicher. Es gibt schließlich nur zehntausende Threads alleine in diesem Forum, die darauf beruhen, dass Leute Arrays für Pointer halten oder umgekehrt. Sind wohl alle dumm, außer dir, dass wir nie bemerkt haben, dass Arrays doch Pointer sind und es gar kein Problem gab! Selbst die Leute, die den Standard geschrieben haben, hätten sich viel Text sparen können, wenn sie das gewusst hätten.</p>
<p>Moment, was ist noch einmal Thema dieses Threads? Wieso hat der Threadersteller denn auf einmal Schwierigkeiten mit Arrays und Pointern, wenn das doch im Prinzip das gleiche ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454011</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 20:24:14 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 20:51:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Sicher. Es gibt schließlich nur zehntausende Threads alleine in diesem Forum, die darauf beruhen, dass Leute Arrays für Pointer halten oder umgekehrt. Sind wohl alle dumm, außer dir, dass wir nie bemerkt haben, dass Arrays doch Pointer sind und es gar kein Problem gab! Selbst die Leute, die den Standard geschrieben haben, hätten sich viel Text sparen können, wenn sie das gewusst hätten.</p>
</blockquote>
<p>Stell dir mal vor, ich habe mir sogar die Zeit genommen einen Blick auf diese Threads zu werfen. Lieber SeppJ, wenn ich sage, ein Array kann auch als ein konstanter Zeiger behandelt werden, setzt das voraus, dass man Zeiger auch versteht. Das trifft leider auf keinen dieser Threadersteller zu und damit ist dein Argument absolut wirkungslos.</p>
<blockquote>
<p>Nur mit einigen Ausnahmen. Der sizeof-Operator zum Beispiel.</p>
</blockquote>
<p>Gut, dann definieren wir ein Array jetzt eben als konstante Adresse. Ein Anfänger hat jetzt sicherlich bessere Chancen zu verstehen, warum die Größe des Arrays nicht außerhalb der Funktion, in der es definiert wurde, ermitteln kann *nicht*.</p>
<p>Die angesprochenen &quot;Schwierigkeiten&quot; wird jeder Anfänger haben, ganz Gleich, ob ein Array nun ein konstanter Zeiger auf die Startadresse ist, oder eine konstante Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454012</guid><dc:creator><![CDATA[X]]></dc:creator><pubDate>Mon, 18 May 2015 20:51:52 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 20:58:46 GMT]]></title><description><![CDATA[<p>X schrieb:</p>
<blockquote>
<p>Gut, dann definieren wir ein Array jetzt eben als konstante Adresse.</p>
</blockquote>
<p>Im Gegensatz zu? Das beschreibt jede Art von Objekt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454013</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 20:58:46 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 21:23:17 GMT]]></title><description><![CDATA[<blockquote>
<p>Im Gegensatz zu? Das beschreibt jede Art von Objekt.</p>
</blockquote>
<p>Jetzt kommt der interessante Teil. Prinzipiell würde die Definition dann etwa so lauten: Ein Array ist eine (konstante (gut, kann man sich wirklich sparen)) Adresse im Speicher, mit der Besonderheit, dass folgende Teile (bis Größe n) im Speicher mit einem Abstand von sizeof(Datentyp), reserviert werden.</p>
<p>Und jetzt mal ehrlich, wer soll daraus die Tücken durch z.B den sizeof Operator ableiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454014</guid><dc:creator><![CDATA[X]]></dc:creator><pubDate>Mon, 18 May 2015 21:23:17 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 21:31:48 GMT]]></title><description><![CDATA[<p>Du hast gerade auf ungenaue Art und Weise das wieder gegeben, was der Standard als ein Array definiert. Wo kommen nun deine Pointer ins Spiel? Zeiger sind keine Adressen, Adressen sind keine Zeiger. Der Unterschied ist wie der zwischen Verpackung und Inhalt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454015</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 21:31:48 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 21:41:57 GMT]]></title><description><![CDATA[<blockquote>
<p>Du hast gerade auf ungenaue Art und Weise das wieder gegeben, was der Standard als ein Array definiert.</p>
</blockquote>
<p>Dann erkläre mir jetzt bitte, wieso ein Anfänger Schwierigkeiten bekommen sollte, wenn er ein Array als konstanten Zeiger und nicht als Adresse interpretiert?<br />
Die sonderliche Behandlung durch den sizeof Operator ist nämlich ohne hin nicht ersichtlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454016</guid><dc:creator><![CDATA[X]]></dc:creator><pubDate>Mon, 18 May 2015 21:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to Seltsames Verhalten von char (char != string dachte ich) on Mon, 18 May 2015 22:07:45 GMT]]></title><description><![CDATA[<p>X schrieb:</p>
<blockquote>
<p>Dann erkläre mir jetzt bitte, wieso ein Anfänger Schwierigkeiten bekommen sollte, wenn er ein Array als konstanten Zeiger und nicht als Adresse interpretiert?<br />
Die sonderliche Behandlung durch den sizeof Operator ist nämlich ohne hin nicht ersichtlich.</p>
</blockquote>
<p>Bloß weil ein Anfänger es sowieso nicht richtig weiß, sollte man ihm nicht was falsches beibringen. Eigentlich gibt es fast nie einen Grund, jemandem was falsches bei zu bringen, die einzige Ausnahme die ich mir vorstellen kann ist, dass man dadurch einen Sachverhalt erheblich vereinfacht und dann später richtig stellen kann.</p>
<p>Stellen wir fest:<br />
-Anfänger haben Schwierigkeiten mit Arrays<br />
-Anfänger haben Schwierigkeiten mit Pointern<br />
-Arrays sind keine Pointer, Pointer sind keine Arrays.</p>
<p>Wieso sollte man einem Anfänger beibringen, dass Arrays Pointer wären?</p>
<p>Zumal wir wissen, dass Anfänger Probleme bekommen, wenn sie Arrays wie Pointer behandeln oder umgekehrt. Wir haben abertausende Threads wo jemand sizeof auf Zeiger anwendet; Probleme mit dem Typ des Adressoperators bekommt; oder sich fragt, wieso man einem Zeiger auf Zeiger kein 2D-Array zuweisen kann. Denn die vereinfachte Sichtweise Pointer = Arrays bricht eben bei der kleinsten Herausforderung zusammen. Im Gegenzug hilft sie nicht einmal bei anderen Gelegenheiten, denn so lange man nichts Herausforderndes macht, hat man sowieso keine Probleme mit Pointern oder Arrays.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454017</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 18 May 2015 22:07:45 GMT</pubDate></item></channel></rss>