<?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[Array of Structs]]></title><description><![CDATA[<p>Funktioniert etwas wie</p>
<pre><code>//...
printf(&quot;%s&quot;, meinestruktureins[meinestrukturzwei.einintegerwert].einchararray);
//...
</code></pre>
<p>in C++ nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240238/array-of-structs</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 00:57:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240238.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 May 2009 06:11:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 06:11:21 GMT]]></title><description><![CDATA[<p>Funktioniert etwas wie</p>
<pre><code>//...
printf(&quot;%s&quot;, meinestruktureins[meinestrukturzwei.einintegerwert].einchararray);
//...
</code></pre>
<p>in C++ nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705083</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 06:11:21 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 06:56:57 GMT]]></title><description><![CDATA[<p>Spacken schrieb:</p>
<blockquote>
<p>Funktioniert etwas wie</p>
<pre><code>//...
printf(&quot;%s&quot;, meinestruktureins[meinestrukturzwei.einintegerwert].einchararray);
//...
</code></pre>
<p>in C++ nicht?</p>
</blockquote>
<p>doch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705097</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 04 May 2009 06:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 07:21:00 GMT]]></title><description><![CDATA[<p>Das habe ich befürchtet, jetzt weiß ich nämlich nicht, wo der Fehler liegt xD</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705107</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 07:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 07:31:13 GMT]]></title><description><![CDATA[<p>Spacken schrieb:</p>
<blockquote>
<p>Das habe ich befürchtet, jetzt weiß ich nämlich nicht, wo der Fehler liegt xD</p>
</blockquote>
<p>Wissen wir auch nicht, so ganz ohne Code und Fehlermeldungen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705112</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 04 May 2009 07:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 07:38:22 GMT]]></title><description><![CDATA[<p>Jo, das habe ich auch nicht erwartet ^^</p>
<p>Ist aber ein wenig mehr Quelltext und ich bekomme so einen nichtssagenden Laufzeitfehler... trotzdem danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705119</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 07:38:22 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 07:59:20 GMT]]></title><description><![CDATA[<p>printf gegen cout ersetzen hilft da evtl., gibt zumindest einiges an Typsicherheit. Ein häufiger Fehler der vorkommen kann ist, dass beim char-Array die Nullterminierung vergessen wurde. std::strings können da Abhilfe schaffen, die kümmern sich da automatisch selber drum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705128</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 04 May 2009 07:59:20 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 08:53:24 GMT]]></title><description><![CDATA[<p>Mein Programm sieht vereinfacht (obwohl, so viel einfacher sieht es gar nicht aus) so aus:</p>
<pre><code class="language-cpp">/* main.h */
#include &lt;windows.h&gt;
#include &lt;cstdio&gt;

typedef int schwachsinnig;

struct abstruct {
  int a;
  int b;
};

extern abstruct *abtest;
void abthread(void);
schwachsinnig einefunktion(void);
</code></pre>
<pre><code class="language-cpp">/* lala.cpp */
#include &quot;main.h&quot;

schwachsinnig einefunktion(void)
{
  return 12;
}
</code></pre>
<pre><code class="language-cpp">/* main.cpp */
#include &quot;main.h&quot;

abstruct *abtest;

void abthread(void)
{
  while(true)
  {
    abtest-&gt;a = (int) einefunktion();
  }
}

int main(int argc, char **argv)
{
  CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE) abthread, NULL, NULL, NULL);

  while(true)
  {
    printf(&quot;\r  \r%02d&quot;, abtest-&gt;a); // std::cout bringt auch nichts :'-(
    Sleep(1000);
  }

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1705153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705153</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 08:53:24 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 09:22:18 GMT]]></title><description><![CDATA[<p>abtest ist ein Zeiger, den du weder initialisierst noch ihm eine Adresse zuweist. Dadurch zeigt er auf irgendwas im Speicher, sodass das Verhalten undefiniert ist, wenn du ihn dereferenzierst, was du mit abtest-&gt;a aber machst.<br />
Loesung: Initialisiere den Zeiger mit der Adresse eines abstruct-Objekts oder alloziere Speicher auf dem Heap fuer ein abstruct-Objekt, auf das der Zeiger dann zeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705161</guid><dc:creator><![CDATA[GyroGearloose]]></dc:creator><pubDate>Mon, 04 May 2009 09:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 09:35:12 GMT]]></title><description><![CDATA[<p>Und für alle, die Informatik noch nicht studiert haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705170</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 09:35:12 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 09:39:26 GMT]]></title><description><![CDATA[<p>Ich meine, kannst du mir das an dem Beispiel von oben erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705172</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 09:39:26 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 09:46:19 GMT]]></title><description><![CDATA[<p>Ist das richtig?</p>
<pre><code class="language-cpp">/* main.cpp */
#include &quot;main.h&quot;

abstruct *abtest = new abstruct;

// ...
</code></pre>
<p>Das funktioniert so :0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705175</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 09:46:19 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 09:53:15 GMT]]></title><description><![CDATA[<p>Mit abstruct *abtest deklarierst du einen sog. Zeiger auf ein abstruct-Objekt. Ein Zeiger ist erstmal nur ein Verweis - eine Referenz - auf eine Speicherstelle. D.h. an der Stelle, wo der Zeiger hinzeigt, sollten gueltige Daten des Typs, auf den dein Zeiger verweist, liegen. In deinem Fall sollte an der Stelle ein Objekt einer abstruct-Struktur liegen. Leider weist du nirgendwo in deinem Programm dem Zeiger abtest eine Speicheradresse zu. Soweit ich weiss, bekommen global deklarierte Zeiger den Defaultwert NULL (nicht zu verwechseln mit der mathematischen 0), was bedeutet, dass dein Zeiger nirgendwo hin zeigt. Lokal deklarierte Zeiger bekommen keinen Defaultwert, wenn du sie nicht initialisierst, d.h. sie zeigen &quot;irgendwo&quot; hin (abhaengig davon, was gerade im Speicher fuer den Zeiger stand).<br />
Wenn du nun auf das Objekt, auf das dein Zeiger verweist, zugreifen willst, musst du einen * vor den Namen des Zeigers schreiben. Das nennt man &quot;Dereferenzieren&quot;. Du musst also, um auf die Elementvariable a zuzugreifen, den Zeiger abtest dereferenzieren und dann mit dem Punktoperator a auswaehlen: (*abtest).a. Die Klammern sind noetig, da der Punktoperator eine hoehere Prioritaet hat als der *-Operator. Genau das tust du zweimal in deinem Programm, denn abtest-&gt;a ist nur eine Kurzform fuer (*abtest).a.<br />
Leider zeigt abtest - wie gesagt - auf nichts, sodass es kracht, wenn du versuchst, ihn zu dereferenzieren.<br />
Vielleicht ist es in deinem Fall auch ueberfluessig, einen Zeiger zu verwenden. Entferne den Stern in abstruct *abtest und mache aus abtest-&gt;a den Code abtest.a, dann sollte es auch funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705179</guid><dc:creator><![CDATA[GyroGearloose]]></dc:creator><pubDate>Mon, 04 May 2009 09:53:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 09:57:33 GMT]]></title><description><![CDATA[<p>Spacken schrieb:</p>
<blockquote>
<p>Ist das richtig?</p>
<pre><code class="language-cpp">/* main.cpp */
#include &quot;main.h&quot;

abstruct *abtest = new abstruct;

// ...
</code></pre>
<p>Das funktioniert so :0</p>
</blockquote>
<p>Ja, das ist fast richtig. Auf diese Weise laesst du deinen Zeiger auf ein abstruct-Objekt zeigen, das du mit Hilfe des new-Operators auf dem Heap erstellt hast. Da du diesen Speicher selbststaendig dynamisch &quot;alloziert&quot; hast, bist du auch dafuer verantwortlich, dass dieser Speicher wieder freigegeben wird.<br />
Dies kannst du mit</p>
<pre><code class="language-cpp">delete abtest;
</code></pre>
<p>erledigen; <strong>aber erst, wenn du den Speicher nicht mehr benoetigst.</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705180</guid><dc:creator><![CDATA[GyroGearloose]]></dc:creator><pubDate>Mon, 04 May 2009 09:57:33 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 10:04:51 GMT]]></title><description><![CDATA[<p>GyroGearloose schrieb:</p>
<blockquote>
<p>Spacken schrieb:</p>
<blockquote>
<p>Ist das richtig?</p>
<pre><code class="language-cpp">/* main.cpp */
#include &quot;main.h&quot;

abstruct *abtest = new abstruct;

// ...
</code></pre>
<p>Das funktioniert so :0</p>
</blockquote>
<p>Ja, das ist fast richtig. Auf diese Weise laesst du deinen Zeiger auf ein abstruct-Objekt zeigen, das du mit Hilfe des new-Operators auf dem Heap erstellt hast. Da du diesen Speicher selbststaendig dynamisch &quot;alloziert&quot; hast, bist du auch dafuer verantwortlich, dass dieser Speicher wieder freigegeben wird.<br />
Dies kannst du mit</p>
<pre><code class="language-cpp">delete abtest;
</code></pre>
<p>erledigen; <strong>aber erst, wenn du den Speicher nicht mehr benoetigst.</strong></p>
</blockquote>
<p>Irgendwie gibt printf, bevor &quot;einefunktion&quot; das erste Mal ausgeführt wird, eine merkwürdige Zahl (-842150451) aus... sollte das nicht zu dem Zeitpunkt 0 sein? <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705184</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 10:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 10:28:09 GMT]]></title><description><![CDATA[<p>Nein, das ist der gleiche Sachverhalt wie mit der zufaelligen Speicheradresse des Zeigers. Wenn du a nicht initialisierst, dann steht dort ein zufaelliger Wert, der beim Erzeugen der Variable gerade dort im Speicher steht (in deinem Fall -842150451). Ich <strong>glaube</strong>, dass <strong>nur</strong> global deklarierte Zeiger/Variablen/Objekte einen Default-Wert (i.d.R. 0) - sofern moeglich - erhalten. Sicherer und vor allem besserer Stil ist aber immer, alles zu initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705193</guid><dc:creator><![CDATA[GyroGearloose]]></dc:creator><pubDate>Mon, 04 May 2009 10:28:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 10:33:57 GMT]]></title><description><![CDATA[<p>Achso... ich glaube, dass ich das jetzt soweit verstanden habe. Danke für deine Zeit!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705201</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Mon, 04 May 2009 10:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Mon, 04 May 2009 13:52:17 GMT]]></title><description><![CDATA[<p>GyroGearloose schrieb:</p>
<blockquote>
<p>Ich <strong>glaube</strong>, dass <strong>nur</strong> global deklarierte Zeiger/Variablen/Objekte einen Default-Wert (i.d.R. 0) - sofern moeglich - erhalten. Sicherer und vor allem besserer Stil ist aber immer, alles zu initialisieren.</p>
</blockquote>
<p>Globale und statische Variablen (Speicherklassen <code>extern</code> , <code>static</code> ) sowie Instanzen von Klassen mit Standardkonstruktor werden auch automatisch mit ihrem Defaultwert initialisiert.</p>
<p>Edit: Wobei erstere je nachdem getrennt von der Deklaration definiert werden müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705330</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 04 May 2009 13:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Tue, 05 May 2009 05:37:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// ...
struct abstruct {
  int a;
  int b;
};

// ...
abstruct einefunktion(void) {
  abstruct abReturn = { 0, 0 };

  // ...
  return abReturn;
}

// ...
int main(int argc, char **argv) {
  // ...
  if(einefunktion() != { 0, 0 }) // &lt;--- Funktionierende Alternative?
    return 1;

  // ...
}
</code></pre>
<p>(Frage s. &quot;Funktionierende Alternative&quot; ^^)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705630</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Tue, 05 May 2009 05:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Tue, 05 May 2009 10:04:19 GMT]]></title><description><![CDATA[<p>Also ich möchte den Rückgabewert nicht speichern sondern nur schnell vergleichen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705725</guid><dc:creator><![CDATA[Spacken]]></dc:creator><pubDate>Tue, 05 May 2009 10:04:19 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Tue, 05 May 2009 10:24:00 GMT]]></title><description><![CDATA[<p>nein, mit {0, 0} alleine kann der nix anfangen.</p>
<pre><code class="language-cpp">bool operator==(abstruct const&amp; a, abstruct const&amp; b)
{
  return a.a == b.a &amp;&amp; a.b == b.b;
}

bool operator!=(abstruct const&amp; a, abstruct const&amp; b)
{
  return !(a == b);
}

struct abstruct {
  abstruct(int a, int b) : a(a), b(b) {}
  u.s.w.
}

if(einefunktion() == abstruct(0, 0))
...
</code></pre>
<p>so in etwa ungetestet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705733</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Tue, 05 May 2009 10:24:00 GMT</pubDate></item><item><title><![CDATA[Reply to Array of Structs on Tue, 05 May 2009 20:57:26 GMT]]></title><description><![CDATA[<p>Wenn du schön mit temporären Variablen arbeiten willst, kannst du in deiner Struktur einen Konstruktor einbauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1706135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1706135</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 05 May 2009 20:57:26 GMT</pubDate></item></channel></rss>