<?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[Struct und Arrays]]></title><description><![CDATA[<p>Ich wünsch euch einen schönen guten abend. Ich hab schon einiges über Structs und Arrays gelesen(u.a. in diesem Forum) und auch umgesetzt(unabhängig voneinander), allerdings habe ich schwierigkeiten wenn ich in meiner Struktur ein Array habe.</p>
<pre><code class="language-cpp">///////////////////////////////////////////////////////////////////////////
// wenn ich das richtig verstanden habe ist 'kleinesfeld' keine Variable vom typ // matrix sondern ein anderer Bezeichner von matrix(liegt am typedef) jupp? :&gt;
// weiter gehts

#include &lt;iostream&gt;
using namespace std;

typedef struct matrix
{
    // nun lege ich ein Array mit 4 zeilen und 4 spalten an
    char carray[4][4];

}kleinesfeld;

int main()
{
   // deklaration der variable muster vom type kleinesfeld
   kleinesfeld muster;

   // Problem ist das fuellen des 'kleinesfeld'
   // einen Zugriff bekomme ich doch ueber die namen getrennt von einem Punkte oder?

   muster.carry[4][4] = {
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                        };

    for(int i = 0; i &lt; 5; i++){
      for(int j = 0; j &lt; 5; j++){
            cout &lt;&lt; muster.carry[i][j] &lt;&lt; endl;
       }
     };
   return 0;
}
</code></pre>
<p>Mein Problem dabei ist, ich bekomme Fehlermeldung das in der Zeile wo ich auf das Array zugreife, Semikolons und geschweifte Klammer fehlen bzw. zu viele sind.</p>
<p>Ist es möglich das das Array in der Strukur mit Zufallswerten gefüllt ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>vielen dank erstmal fürs durchlesen :&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197123/struct-und-arrays</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 01:18:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197123.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Nov 2007 21:34:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Struct und Arrays on Tue, 06 Nov 2007 21:34:47 GMT]]></title><description><![CDATA[<p>Ich wünsch euch einen schönen guten abend. Ich hab schon einiges über Structs und Arrays gelesen(u.a. in diesem Forum) und auch umgesetzt(unabhängig voneinander), allerdings habe ich schwierigkeiten wenn ich in meiner Struktur ein Array habe.</p>
<pre><code class="language-cpp">///////////////////////////////////////////////////////////////////////////
// wenn ich das richtig verstanden habe ist 'kleinesfeld' keine Variable vom typ // matrix sondern ein anderer Bezeichner von matrix(liegt am typedef) jupp? :&gt;
// weiter gehts

#include &lt;iostream&gt;
using namespace std;

typedef struct matrix
{
    // nun lege ich ein Array mit 4 zeilen und 4 spalten an
    char carray[4][4];

}kleinesfeld;

int main()
{
   // deklaration der variable muster vom type kleinesfeld
   kleinesfeld muster;

   // Problem ist das fuellen des 'kleinesfeld'
   // einen Zugriff bekomme ich doch ueber die namen getrennt von einem Punkte oder?

   muster.carry[4][4] = {
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                        };

    for(int i = 0; i &lt; 5; i++){
      for(int j = 0; j &lt; 5; j++){
            cout &lt;&lt; muster.carry[i][j] &lt;&lt; endl;
       }
     };
   return 0;
}
</code></pre>
<p>Mein Problem dabei ist, ich bekomme Fehlermeldung das in der Zeile wo ich auf das Array zugreife, Semikolons und geschweifte Klammer fehlen bzw. zu viele sind.</p>
<p>Ist es möglich das das Array in der Strukur mit Zufallswerten gefüllt ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>vielen dank erstmal fürs durchlesen :&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398914</guid><dc:creator><![CDATA[Keydo]]></dc:creator><pubDate>Tue, 06 Nov 2007 21:34:47 GMT</pubDate></item><item><title><![CDATA[Reply to Struct und Arrays on Tue, 06 Nov 2007 21:43:08 GMT]]></title><description><![CDATA[<p>Also, eine Struktur wird mit &quot;struct &gt;Strukturname&gt;&quot; deklariert. Die struktureigenen Elemente werden dann über den Punktoperator angesprochen.</p>
<p>Sprich: struct Struktur { int array[10][10]; }; überhalb der main-Funktion,<br />
Struktur.array[0][0] = 100; bspw. dann in der main-Funktion, um dem Feld an der Stelle (0,0) den Wert 100 zuzuweisen.</p>
<p>PS: Wenn du das Array nicht explizit mit Werten initialisierst, wird da nix gefüllt. <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/1398920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398920</guid><dc:creator><![CDATA[moagnus]]></dc:creator><pubDate>Tue, 06 Nov 2007 21:43:08 GMT</pubDate></item><item><title><![CDATA[Reply to Struct und Arrays on Tue, 06 Nov 2007 21:48:13 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

struct matrix
{
    char data[4][4];
    matrix(char default='x')
    {
        for (std::size_t x = 0; x &lt; 4; ++x)
            for (std::size_t y = 0; y &lt; 4; ++y)
                data[x][y] = default;
    }
    friend std::ostream&amp; operator &lt;&lt; (std::ostream&amp; out, matrix const&amp; data)
    {
        for (std::size_t x = 0; x &lt; 4; ++x)
        {
            for (std::size_t y = 0; y &lt; 4; ++y)
                out &lt;&lt; data[x][y];
            out &lt;&lt; &quot;\n&quot;;
        }
    }
};
</code></pre>
<pre><code class="language-cpp">int main()
{
    matrix muster;
    std::cout &lt;&lt; muster &lt;&lt; std::endl;
}
</code></pre>
<p>Ehm ein Array [4] bedeutet, du hast einen Index von 0 ... 3 ... also 4 Elemente bei 0 anfangend <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398925</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Tue, 06 Nov 2007 21:48:13 GMT</pubDate></item><item><title><![CDATA[Reply to Struct und Arrays on Tue, 06 Nov 2007 21:57:59 GMT]]></title><description><![CDATA[<p>Keydo schrieb:</p>
<blockquote>
<p>...</p>
<pre><code class="language-cpp">///////////////////////////////////////////////////////////////////////////
// wenn ich das richtig verstanden habe ist 'kleinesfeld' keine Variable vom typ // matrix sondern ein anderer Bezeichner von matrix(liegt am typedef) jupp? :&gt;
// weiter gehts
</code></pre>
</blockquote>
<p>typedef &lt;typ&gt; &lt;name&gt;;</p>
<p>==&gt; Definiert den Typ unter den angegebenen Namen. In deinen Fall ist das meines erachtens reine Verschwendung. Ich würde es wie folgt schreiben (da struct bereits einen Typ definiert):</p>
<pre><code class="language-cpp">struct kleinesfeld // &lt;-- Wie soll es wirklich heißen?
{
    char carray[4][4];
};
</code></pre>
<p>Keydo schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...
int main()
{
   // deklaration der variable muster vom type kleinesfeld
   kleinesfeld muster;

   // Problem ist das fuellen des 'kleinesfeld'
   // einen Zugriff bekomme ich doch ueber die namen getrennt von einem Punkte oder?

   muster.carry[4][4] = {
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                        };
</code></pre>
</blockquote>
<p>Hier hast du gleich mehrere Fehler:<br />
1. In der Struktur nennst du das Array noch &quot;carray&quot;, in deiner main-Funktion aber &quot;carry&quot;.<br />
2. Eine Initialisierung eines Arrays geht nur bei der Deklaration. Nachträglich ist eine Initialisierung nur durch setzen aller einzelwerte separat möglich.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">int main()
{
   char carray[4][4] = { // Deklaration UND Initialisierung
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                           {'x','x','x','x'},
                        };
}
</code></pre>
<p>3. Mittels &quot;muster.carry[4][4] = ...&quot; weist du der 5ten! Spalte/5ten Zeile etwas zu. Hierzu gleich mehr den einen weiteren Irrtum in dem Gebiet begehst du auch in der folgenden Schleife.</p>
<p>Keydo schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for(int i = 0; i &lt; 5; i++){
      for(int j = 0; j &lt; 5; j++){
            cout &lt;&lt; muster.carry[i][j] &lt;&lt; endl;
       }
     };
</code></pre>
</blockquote>
<p>Wenn du ein Array Deklarierst, stehen die Zahlen für die Anzahl der Elemente:</p>
<p>char carray[4][4]; // ==&gt; 4 Zeilen, 4 Spalten</p>
<p>ABER: der Zugriff beginnt bei dem Index 0. Zulässige Werte sind daher jeweils 0..3 nicht aber 4. Deine Schleife würde mit hoher Wahrscheinlichkeit eine &quot;Access Violation&quot; auslösen, da der Zugriff außerhalb des Arrays erfolgt.</p>
<p>Keydo schrieb:</p>
<blockquote>
<p>Mein Problem dabei ist, ich bekomme Fehlermeldung das in der Zeile wo ich auf das Array zugreife, Semikolons und geschweifte Klammer fehlen bzw. zu viele sind.</p>
</blockquote>
<p>Eine nachträgliche Initialisierung hättest du z.B. so machen müssen:</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; 4; ++i)
   {
      for(int j = 0; j &lt; 4; ++j)
      {
         muster.carray[i][j] = 'x';
      }
   }
</code></pre>
<p>Wenn es einzeln für sich steht ist es besser immer ++i als i++ zu schreiben. Bei int noch relativ uninteressant, aber bei Klassen bedeutet dies das eine zusätzliche Kopie erfolgt.</p>
<pre><code class="language-cpp">Ist es möglich das das Array in der Strukur mit Zufallswerten gefüllt ist?  :rage:
</code></pre>
<p>Ja, da es nicht initialisiert wurde. Konstruktoren helfen <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="😉"
    /><br />
Aber nichts desto trotz: &quot;Arrays stinken&quot; <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="😉"
    /><br />
Letzteres meine ich hauptsächlich deshalb weil sich Arrays etwas anders verhalten als man vielleicht erwartet (siehe Initialisierung, siehe Unterschied Deklaration und Zugriff...).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1398931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1398931</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Tue, 06 Nov 2007 21:57:59 GMT</pubDate></item><item><title><![CDATA[Reply to Struct und Arrays on Wed, 07 Nov 2007 12:43:21 GMT]]></title><description><![CDATA[<p>Super vielen dank, bei (D)Evil muss ich noch 2-3 Kapitel vor switchen um das alles nachzuvollziehen :&gt; aber ich bin motiviert ^^</p>
<p>Die Initialisierung eines Arrays in einem sruct ist aber ganz schön tricky...</p>
<p>(kleinere Zusammenfassung): Wenn ich einen neuen Datentype mittels struct erstellen möchte welches als Element ein Array mit x*x Feldern hat, so bleibt <strong>mir entwerder</strong> die Option, die Initialisierung der Elemente im Array bereits bei der Deklaration vorzunehmen <strong>oder</strong> später im Program, da aber dann nur jedes Feld einzeln für sich. Was unter umständen bei mehreren Eintraege vlt. etwas unuebersichtlich wird.</p>
<p>So nun habe ich ein Array mit 3 Zeilen und 3 Spalten. Wenn ich das Array in main() deklariere und Initialisiere kann ich Problemlos damit arbeiten.</p>
<p>Möchte ich nun einen neuen Datentype matrix anlegen welches ein Array mit dem namen c_array beinhaltet.<br />
Mit Hilfe des neuen Datentypes und dem element Array, soll nun ein &quot;+&quot;-Pluszeichen dargestellt werden.</p>
<p>Also Initialisiere ich c_array bereits bei der Deklaration mit den entsprechenden Zeilen und Spalten.</p>
<p>Das merkwürdige dabei ist, deklariere und initialisiere ich mein Array in main() kann ich damit problemlos arbeiten(also ausgeben ^^), packe ich das gleiche array in struct... nölt der Compiler.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

struct matrix{

		char c_array[3][3] = {        
								{' ', 'x', ' '},
								{'x', 'x', 'x'},
								{' ', 'x', ' '}
						};

};

int main(){

		for(int i = 0; i &lt; 3; ++i)
		{
			for(int j = 0; j &lt; 3; ++j)
			{
				cout &lt;&lt; matrix.c_array[i][j];
			}
			cout &lt;&lt; &quot;\n&quot;;
		}

	return 0;
}
</code></pre>
<p>Fehler:</p>
<pre><code>... -struct_array\main.cpp(7) : error C2059: Syntaxfehler: '{'
... -struct_array\main.cpp(7) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionstext wird übersprungen
... -struct_array\main.cpp(24) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
... -struct_array\main.cpp(24) : error C2143: Syntaxfehler: Es fehlt ';' vor '.'
</code></pre>
<p>fuuu !</p>
<p>oh mann... 2 int variablen hbaen nicht so rumgezickt im struct wie ein array 8P</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399109</guid><dc:creator><![CDATA[Keydo]]></dc:creator><pubDate>Wed, 07 Nov 2007 12:43:21 GMT</pubDate></item><item><title><![CDATA[Reply to Struct und Arrays on Wed, 07 Nov 2007 12:49:30 GMT]]></title><description><![CDATA[<p>Wenn du die struct deklarierst, hast du ja auch noch keine Variable, die du befüllen könntest - die wird erst später angelegt. Und erst beim Anlegen der Variable kannst du deren Elemente füllen (entweder per Ctor oder mit einer Initialisierungsliste):</p>
<pre><code class="language-cpp">//Möglichkeit a:
struct matrix1
{
  char c_array [3][3];

  matrix1()
  {
    for(int i=0;i&lt;3;++i) for(int j=0;j&lt;3;++j) c_array[i][j]=(i==1||j==1)?'x':' ';
  }
};

...
matrix1 m1;
for(int i = 0; i &lt; 3; ++i)
{
  for(int j = 0; j &lt; 3; ++j)
  {
    cout &lt;&lt; m.c_array[i][j]; // Zeile 24
  }
  cout &lt;&lt; &quot;\n&quot;;
}

//Variante 2:
strct matrix2
{
  char c_array[3][3];
};

...
matrix2 m = {{' ','x',' '},{'x','x','x'},{' ','x','x}};
for(...)//Ausgabeschleife wie oben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1399122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399122</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 07 Nov 2007 12:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to Struct und Arrays on Wed, 07 Nov 2007 12:50:34 GMT]]></title><description><![CDATA[<p>Keydo schrieb:</p>
<blockquote>
<p>Möchte ich nun einen neuen Datentype matrix anlegen welches ein Array mit dem namen c_array beinhaltet...<br />
Also Initialisiere ich c_array bereits bei der Deklaration mit den entsprechenden Zeilen und Spalten.</p>
</blockquote>
<p>Leider geht das auch nicht. Wie gesagt, &quot;Arrays stinken&quot; <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>Du kannst in einer Struct/Class kein Element direkt initialisieren, die Initialisierung kann man im Konstruktor machen, letzteres geht für Arrays aber nicht wie du das willst. Wohl oder übel: Konstruktor mit Schleife für die Initialisierung.</p>
<p>Arrays haben noch andere Einschränkungen, und man merkt sehr deutlich das Arrays für C konzepiert sind. In deinem Fall wären die Alternativen aber etwas übertrieben (std::vector ist z.B. eine solche Alternative).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399124</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 07 Nov 2007 12:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to Struct und Arrays on Wed, 07 Nov 2007 13:14:49 GMT]]></title><description><![CDATA[<p>auch dir vielen dank CStoll !</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14941">@asc</a> oh je ^^, die alterntavie sprengt momentan sicherlich den Rahmen, können ma nächste Nacht machen *hust* ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399147</guid><dc:creator><![CDATA[Keydo]]></dc:creator><pubDate>Wed, 07 Nov 2007 13:14:49 GMT</pubDate></item></channel></rss>