<?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[Datatypes, Pointers und 2D Arrays]]></title><description><![CDATA[<p>Hallöchen,</p>
<p>ich bin neu in der Welt des C++ und gewissermassen auch in der des Programmierens.</p>
<p>Daher gleich meine ersten Fragen und ich hoffe, dass mir das niemand Übel nimmt, wenn ich viele davon stelle(n werde).</p>
<p>Es gibt ja diese Datatypes: bool (true/false), char (1 byte), short integer (2 bytes), integer (4 bytes), long integer (4 bytes), float (4 bytes), double (8 bytes).</p>
<p>Ist es wichtig zu wissen, wieviele Bytes man in einem Datatype abspeichern kann? Kann man in allen Buchstaben, wie auch Zahlen abspeichern? Char ist ja glaub immer nur für ein Zeichen, int das &quot;Normale&quot; und in float werden Dezimalzahlen gespeichert, stimmt das? Was hat es mit &quot;sigend&quot; und &quot;unsigned&quot; Datatypes auf sich? Signed sind soweit ich weiss auch die negativen und unsigned nur die positiven?!</p>
<p>Wofür sind enum und void genau?</p>
<p>256 = 0400 = 0x100</p>
<p>Kann mir das jemand erklären? Hat das mit Dezimal, Oktal und Hexadecimal zu tun?</p>
<p>Wenn man einen Pointer deklariert, ist dann das * nicht vor der Bezeichnung des Pointers? Im folgenden Beispiel ist das * eben beim Datatype. Was stimmt denn nun? Oder verwechsel ich da was? --&gt;</p>
<pre><code class="language-cpp">char d[] = {'e', 'f', 'g'};
char* x = d;
char* y = &amp;d[0];
</code></pre>
<pre><code class="language-cpp">int A[15][30];
A [i][j]
</code></pre>
<p>A ist ein Array mit 30 Objekten, jedes mit 15 Integern.</p>
<p>Wie kommt es, dass i in 0-14 ist und j in 0-29? Und wie ist das überhaupt zu verstehen? Um zu zitieren aus meinem Buch: &quot;where i is in the range 0-14, and j is in the range 0-29&quot;.</p>
<p>Viele Grüsse</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291816/datatypes-pointers-und-2d-arrays</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 13:03:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291816.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 Aug 2011 21:44:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sat, 27 Aug 2011 21:54:38 GMT]]></title><description><![CDATA[<p>Hallöchen,</p>
<p>ich bin neu in der Welt des C++ und gewissermassen auch in der des Programmierens.</p>
<p>Daher gleich meine ersten Fragen und ich hoffe, dass mir das niemand Übel nimmt, wenn ich viele davon stelle(n werde).</p>
<p>Es gibt ja diese Datatypes: bool (true/false), char (1 byte), short integer (2 bytes), integer (4 bytes), long integer (4 bytes), float (4 bytes), double (8 bytes).</p>
<p>Ist es wichtig zu wissen, wieviele Bytes man in einem Datatype abspeichern kann? Kann man in allen Buchstaben, wie auch Zahlen abspeichern? Char ist ja glaub immer nur für ein Zeichen, int das &quot;Normale&quot; und in float werden Dezimalzahlen gespeichert, stimmt das? Was hat es mit &quot;sigend&quot; und &quot;unsigned&quot; Datatypes auf sich? Signed sind soweit ich weiss auch die negativen und unsigned nur die positiven?!</p>
<p>Wofür sind enum und void genau?</p>
<p>256 = 0400 = 0x100</p>
<p>Kann mir das jemand erklären? Hat das mit Dezimal, Oktal und Hexadecimal zu tun?</p>
<p>Wenn man einen Pointer deklariert, ist dann das * nicht vor der Bezeichnung des Pointers? Im folgenden Beispiel ist das * eben beim Datatype. Was stimmt denn nun? Oder verwechsel ich da was? --&gt;</p>
<pre><code class="language-cpp">char d[] = {'e', 'f', 'g'};
char* x = d;
char* y = &amp;d[0];
</code></pre>
<pre><code class="language-cpp">int A[15][30];
A [i][j]
</code></pre>
<p>A ist ein Array mit 30 Objekten, jedes mit 15 Integern.</p>
<p>Wie kommt es, dass i in 0-14 ist und j in 0-29? Und wie ist das überhaupt zu verstehen? Um zu zitieren aus meinem Buch: &quot;where i is in the range 0-14, and j is in the range 0-29&quot;.</p>
<p>Viele Grüsse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111448</guid><dc:creator><![CDATA[c+++ 3]]></dc:creator><pubDate>Sat, 27 Aug 2011 21:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sat, 27 Aug 2011 21:59:24 GMT]]></title><description><![CDATA[<p>c+++ schrieb:</p>
<blockquote>
<p>Hallöchen,</p>
<p>ich bin neu in der Welt des C++ und gewissermassen auch in der des Programmierens.</p>
<p>Daher gleich meine ersten Fragen und ich hoffe, dass mir das niemand Übel nimmt, wenn ich viele davon stelle(n werde).</p>
<p>Es gibt ja diese Datatypes: bool (true/false), char (1 byte), short integer (2 bytes), integer (4 bytes), long integer (4 bytes), float (4 bytes), double (8 bytes).</p>
<p>Ist es wichtig zu wissen, wieviele Bytes man in einem Datatype abspeichern kann? Kann man in allen Buchstaben, wie auch Zahlen abspeichern? Char ist ja glaub immer nur für ein Zeichen, int das &quot;Normale&quot; und in float werden Dezimalzahlen gespeichert, stimmt das? Was hat es mit &quot;sigend&quot; und &quot;unsigned&quot; Datatypes auf sich? Signed sind soweit ich weiss auch die negativen und unsigned nur die positiven?!</p>
</blockquote>
<p>Erstmal sind die Größenangaben nur Mindestwerte und in den meisten Fällen unwichtig. Ansonsten speichern char, short, int und long ganze Zahlen bis zu einer bestimmten Größe (daß die char-Werte auch als ASCII-Zeichen interpretiert werden können, ist dem PC bei Rechnungen egal), float, double und logn double sind für Kommazahlen geeignet. Der Unterschied zwischen signed und unsigned besteht darin, daß ersteres auch negative Werte enthalten kann, im Gegenzug dazu ist der Maximalwert bei unsigned-Typen größer.</p>
<blockquote>
<p>Wofür sind enum und void genau?</p>
</blockquote>
<p>enum dient dazu, eine Aufzählung von benannten Werten zusammenzufassen, void steht für &quot;hier ist nichts&quot; (als Rückgabetyp oder einzige Parameter einer Funktion - letzteres ist in C++ nichtmal notwendig) oder &quot;mir ist egal, was hier ist&quot; (als Zeiger - ein void* verweist auf Speicher mit unbekannten Daten).</p>
<blockquote>
<p>256 = 0400 = 0x100</p>
<p>Kann mir das jemand erklären? Hat das mit Dezimal, Oktal und Hexadecimal zu tun?</p>
</blockquote>
<p>Ja, hat es. In C/C++ steht die 0 am Anfang einer Zahl für oktale und das 0x für hexadezimale Literale.</p>
<blockquote>
<p>Wenn man einen Pointer deklariert, ist dann das * nicht vor der Bezeichnung des Pointers? Im folgenden Beispiel ist das * eben beim Datatype. Was stimmt denn nun? Oder verwechsel ich da was? --&gt;</p>
<pre><code class="language-cpp">char d[] = {'e', 'f', 'g'};
char* x = d;
char* y = &amp;d[0];
</code></pre>
</blockquote>
<p>Dem Compiler ist es egal, ob du &quot;char* x&quot; oder &quot;char *x&quot; schreibst, falls du darauf hinauswolltest. Der Unterschied wird nur klarer, wenn du mehrere Variablen am Stück definierst: &quot;char* x,y;&quot; erzeugt <strong>keine</strong> zwei Zeiger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111449</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 27 Aug 2011 21:59:24 GMT</pubDate></item><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sat, 27 Aug 2011 22:23:27 GMT]]></title><description><![CDATA[<p>Schonmal vielen Dank für die fixe Antwort!</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>c+++ schrieb:</p>
<blockquote>
<p>Hallöchen,</p>
<p>ich bin neu in der Welt des C++ und gewissermassen auch in der des Programmierens.</p>
<p>Daher gleich meine ersten Fragen und ich hoffe, dass mir das niemand Übel nimmt, wenn ich viele davon stelle(n werde).</p>
<p>Es gibt ja diese Datatypes: bool (true/false), char (1 byte), short integer (2 bytes), integer (4 bytes), long integer (4 bytes), float (4 bytes), double (8 bytes).</p>
<p>Ist es wichtig zu wissen, wieviele Bytes man in einem Datatype abspeichern kann? Kann man in allen Buchstaben, wie auch Zahlen abspeichern? Char ist ja glaub immer nur für ein Zeichen, int das &quot;Normale&quot; und in float werden Dezimalzahlen gespeichert, stimmt das? Was hat es mit &quot;sigend&quot; und &quot;unsigned&quot; Datatypes auf sich? Signed sind soweit ich weiss auch die negativen und unsigned nur die positiven?!</p>
</blockquote>
<p>Erstmal sind die Größenangaben nur Mindestwerte und in den meisten Fällen unwichtig. Ansonsten speichern char, short, int und long ganze Zahlen bis zu einer bestimmten Größe (daß die char-Werte auch als ASCII-Zeichen interpretiert werden können, ist dem PC bei Rechnungen egal), float, double und logn double sind für Kommazahlen geeignet. Der Unterschied zwischen signed und unsigned besteht darin, daß ersteres auch negative Werte enthalten kann, im Gegenzug dazu ist der Maximalwert bei unsigned-Typen größer.</p>
</blockquote>
<p>Der Maximalwert bei signed int ist soweit ich weiss 127 und bei unsigned int 255. Heisst das, dass ich in signed int 130 speichern kann und in unsigned int nicht?</p>
<blockquote>
<blockquote>
<p>Wofür sind enum und void genau?</p>
</blockquote>
<p>enum dient dazu, <strong>eine Aufzählung von benannten Werten zusammenzufassen</strong>, void steht für &quot;hier ist nichts&quot; (als Rückgabetyp oder einzige Parameter einer Funktion - letzteres ist in C++ nichtmal notwendig) oder &quot;mir ist egal, was hier ist&quot; (als Zeiger - ein void* verweist auf Speicher mit unbekannten Daten).</p>
<blockquote>
<p>256 = 0400 = 0x100</p>
</blockquote>
</blockquote>
<p>Kannst Du mir ein Beispiel für enum geben mit einer Erklärung, wie der fettgedruckte Satz zu verstehen ist? Oder vielleicht anhand dieses Codes:</p>
<pre><code class="language-cpp">enum Day { MON, TUE, WED, THU, FRI, SAT, SUN };
Day today = THU;
</code></pre>
<blockquote>
<blockquote>
<p>Kann mir das jemand erklären? Hat das mit Dezimal, Oktal und Hexadecimal zu tun?</p>
</blockquote>
<p>Ja, hat es. In C/C++ steht die 0 am Anfang einer Zahl für oktale und das 0x für hexadezimale Literale.</p>
</blockquote>
<blockquote>
<blockquote>
<p>Wenn man einen Pointer deklariert, ist dann das * nicht vor der Bezeichnung des Pointers? Im folgenden Beispiel ist das * eben beim Datatype. Was stimmt denn nun? Oder verwechsel ich da was? --&gt;</p>
<pre><code class="language-cpp">char d[] = {'e', 'f', 'g'};
char* x = d;
char* y = &amp;d[0];
</code></pre>
</blockquote>
<p>Dem Compiler ist es egal, ob du &quot;char* x&quot; oder &quot;char *x&quot; schreibst, falls du darauf hinauswolltest. Der Unterschied wird nur klarer, wenn du mehrere Variablen am Stück definierst: &quot;char* x,y;&quot; erzeugt <strong>keine</strong> zwei Zeiger.</p>
</blockquote>
<p>Achso, das leuchtet ein. Danke Dir nochmals!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111460</guid><dc:creator><![CDATA[c+++ 3]]></dc:creator><pubDate>Sat, 27 Aug 2011 22:23:27 GMT</pubDate></item><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sat, 27 Aug 2011 22:36:41 GMT]]></title><description><![CDATA[<p>c+++ schrieb:</p>
<blockquote>
<p>Der Maximalwert bei signed int ist soweit ich weiss 127 und bei unsigned int 255. Heisst das, dass ich in signed int 130 speichern kann und in unsigned int nicht?</p>
</blockquote>
<p>Für int ist der Maimalwert schonmal deutlich größer (afair mindestens 32767 bzw 65535), außerdem hast du im letzten Teilsatz signed und unsigned verwechselt.</p>
<blockquote>
<blockquote>
<p>Wofür sind enum und void genau?</p>
</blockquote>
<p>enum dient dazu, <strong>eine Aufzählung von benannten Werten zusammenzufassen</strong>, void steht für &quot;hier ist nichts&quot; (als Rückgabetyp oder einzige Parameter einer Funktion - letzteres ist in C++ nichtmal notwendig) oder &quot;mir ist egal, was hier ist&quot; (als Zeiger - ein void* verweist auf Speicher mit unbekannten Daten).</p>
<blockquote>
<p>256 = 0400 = 0x100</p>
</blockquote>
</blockquote>
<p>Kannst Du mir ein Beispiel für enum geben mit einer Erklärung, wie der fettgedruckte Satz zu verstehen ist? Oder vielleicht anhand dieses Codes:</p>
<pre><code class="language-cpp">enum Day { MON, TUE, WED, THU, FRI, SAT, SUN };
Day today = THU;
</code></pre>
<p>[/quote]Da hast du doch schon dein Beispiel selber geliefert <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="😉"
    /> intern vergibt der Compiler für jeden Bezeichner in der enum-Definition einen Zahlenwert, danach kannst du den Namen verwenden, wenn du diesen Wert meinst (z.B. in Zuweisungen oder Vergleichen), ohne in zwei Monaten raten zu müssen, welche Zahl tatsächlich für welchen Wochentag steht.</p>
<p>c+++ schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int A[15][30];
A [i][j]
</code></pre>
<p>A ist ein Array mit 30 Objekten, jedes mit 15 Integern.</p>
<p>Wie kommt es, dass i in 0-14 ist und j in 0-29? Und wie ist das überhaupt zu verstehen? Um zu zitieren aus meinem Buch: &quot;where i is in the range 0-14, and j is in the range 0-29&quot;.</p>
<p>Viele Grüsse</p>
</blockquote>
<p>Bei der Definition eines Arrays gibst du an, wieviele Elemente es haben soll, bei der Verwendung greifst du über einen Index (der bei 0 beginnt) auf einzelne Elemente zu. Wenn du z.B. ein <code>int array[10];</code> hast, ist &quot;array[0]&quot; das erste Element, &quot;array[9]&quot; das letzte - und &quot;array[10]&quot; wäre undefiniertes Verhalten.<br />
Zweidimensionale Arrays funktionieren genauso (exakter: Zweidimensionale Arrays gibt es gar nicht - es gibt nur Arrays, deren einzelne Elemente wiederum Arrays sind).</p>
<p>PS: Wenn du das nächste Mal noch Zusatzfragen hast, dann editier sie nicht in einen alten Beitrag rein - dort werden sie zu leicht übersehen <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/2111464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111464</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 27 Aug 2011 22:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sun, 28 Aug 2011 06:35:58 GMT]]></title><description><![CDATA[<p>c+++ schrieb:</p>
<blockquote>
<p>ich bin neu in der Welt des C++ und gewissermassen auch in der des Programmierens.<br />
[...]</p>
</blockquote>
<p><a href="http://jk-technology.com/c/inttypes.html" rel="nofollow">http://jk-technology.com/c/inttypes.html</a></p>
<blockquote>
<p>[... 256 0400 0x100 ...]<br />
Hat das mit Dezimal, Oktal und Hexadecimal zu tun?</p>
</blockquote>
<p>Ja.</p>
<blockquote>
<p>Wenn man einen Pointer deklariert, ist dann das * nicht vor der Bezeichnung des Pointers? Im folgenden Beispiel ist das * eben beim Datatype</p>
</blockquote>
<p>Das ist egal.</p>
<blockquote>
<p>A ist ein Array mit 30 Objekten, jedes mit 15 Integern.</p>
</blockquote>
<p>Nein. A ist ein 15-elementiges Array von 30-elementigen Arrays von int.</p>
<p>Du kannst nicht erwarten, dass Dir jemand das, was in vielen schlauen Bücher steht, runterbetet. Dafür ist die Zeit zu schade. Besorg Dir diese schlauen Bücher selbst und lese sie. Wenn Du aber nach einer gewissen Zeit, in der Du Dich selbst angestregt hast, etwas zu verstehen, nicht weiterkommst, darfst Du hier fragen. Wenn Du dann in der Frage rüberkommen lässt, dass und wie Du selbst versucht hast, das Problem zu lösen, ist die Chance auf eine gute Antwort groß.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111507</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 28 Aug 2011 06:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sun, 28 Aug 2011 06:37:38 GMT]]></title><description><![CDATA[<p>c+++ schrieb:</p>
<blockquote>
<p>Es gibt ja diese Datatypes: bool (true/false), char (1 byte), short integer (2 bytes), integer (4 bytes), long integer (4 bytes), float (4 bytes), double (8 bytes).</p>
</blockquote>
<p>Falsch.<br />
bool ist genau sizeof(bool) Bytes groß.<br />
char ist genau sizeof(char)==1 Bytes groß.<br />
short ist genau sizeof(short) Bytes groß.<br />
int ist genau sizeof(int) Bytes groß.<br />
...</p>
<p>c+++ schrieb:</p>
<blockquote>
<p>Ist es wichtig zu wissen, wieviele Bytes man in einem Datatype abspeichern kann?</p>
</blockquote>
<p>Das kannst nur du selber in der Anwendung entscheiden. Im Allgemeinen schon, wenn du z.B. diese Daten extern weitergeben willst (Datei,Netzwerk,...). Dabei sollte das empfangene Programm schon wissen, wieviele Bytes in welcher Reihenfolge vorliegen um sie genau wie du in deinem Programm interpretieren zu können.</p>
<p>c+++ schrieb:</p>
<blockquote>
<p>Kann man in allen Buchstaben, wie auch Zahlen abspeichern?</p>
</blockquote>
<p>Unsinn. Du hast wesentliche Grundlagen der Datenverarbeitung nicht verstanden. Gespeichert werden Bitfolgen, meist zusammengefasst als Bytefolgen die man als char, int, ... <strong>interpretieren kann</strong>.</p>
<p>c+++ schrieb:</p>
<blockquote>
<p>Signed sind soweit ich weiss auch die negativen und unsigned nur die positiven?!</p>
</blockquote>
<p>Richtig.</p>
<p>c+++ schrieb:</p>
<blockquote>
<p>Der Maximalwert bei signed int ist soweit ich weiss 127 und bei unsigned int 255.</p>
</blockquote>
<p>Falsch.<br />
Der Maximalwert von int ist INT_MAX.<br />
Der Maximalwert von unsigned int ist UINT_MAX.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111508</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Sun, 28 Aug 2011 06:37:38 GMT</pubDate></item><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sun, 28 Aug 2011 08:26:27 GMT]]></title><description><![CDATA[<p>Super. Danke Euch, Leute. <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/2111526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111526</guid><dc:creator><![CDATA[c+++ 3]]></dc:creator><pubDate>Sun, 28 Aug 2011 08:26:27 GMT</pubDate></item><item><title><![CDATA[Reply to Datatypes, Pointers und 2D Arrays on Sun, 28 Aug 2011 16:07:52 GMT]]></title><description><![CDATA[<p>Wutz schrieb:</p>
<blockquote>
<p>Falsch.<br />
Der Maximalwert von int ist INT_MAX.<br />
Der Maximalwert von unsigned int ist UINT_MAX.</p>
</blockquote>
<p>Oder allgemeiner: Der maximalwert von Typ T ist std::numeric_limits&lt;T&gt;::max()</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2111662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2111662</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 28 Aug 2011 16:07:52 GMT</pubDate></item></channel></rss>