<?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[pointer 2 dimensionales array]]></title><description><![CDATA[<p>hallo, ich habe zwar zu dem thema schon eine thread aber hier ein bisschen anderes problem mit konkretem beispiel:<br />
ich habe folgenden code...</p>
<pre><code class="language-cpp">int main()
{
 int square[10][10];
 int *row = &amp;(square[0][0]);

 cout &lt;&lt; &quot;Adresse von square (square): &quot; &lt;&lt; square &lt;&lt; endl;
 cout &lt;&lt; &quot;Adresse von square (*row): &quot; &lt;&lt; row &lt;&lt; endl;

 return 0;
}
</code></pre>
<p>compiliert und rennt...<br />
was ich aber nicht verstehe und jetzt schon seit stunden herumprobiere ist warum es mit nicht moeglich ist folgendes zu machen:</p>
<pre><code class="language-cpp">int *row = square
</code></pre>
<p>der name des arrays sollte doch die speicheradresse des ersten elementes sein.<br />
laut meinem code ist es das auch (die beiden cout's geben die gleiche adresse an)<br />
also soweit ich es verstehe sollte diese zuweisung gueltig sein, da ich mit <em>square</em> eine adresse eines ints bekomme und diese einem pointer vom typ int <em>row</em> zuweisen kann.</p>
<p>bitte um aufklärung warum es nicht geht - bin echt am verzweifeln.</p>
<p>falls wen der hintergrund interessiert, hier die aufgabenstellung:</p>
<blockquote>
<p>Purpose: Construct and use a pointer to a multi (2) dimensional matrix.</p>
<p>In main(), define the array int square[10][10] (even though arrays should not normally be defined locally in functions). Next, define and initialize a pointer row, pointing to this array. Note that row[0] should therefore point to the first of square's rows and row[9] should point to the last of square's rows. Pass this pointer to a function identity() which initializes the full array square to mere zeros, except for the elements on the main diagonal (i.e., square[0][0], square[1][1], square[2][2], etc., should be set to 1).</p>
</blockquote>
<p>falls ich es uebersetzen soll einfach sagen, wills nur nicht unnoetig machen. aber ich denke nicht das die aufgabenstellung fuer die loesung meines problems gebraucht wird. hilfreich waere mir zu sagen ob ich total in die verkehrte richtung unterwegs bin <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 />
ich dachte nachdem ich den pointer auf das erste element des arrays habe, kann ich (da ich die genaue groeße weiß) in der funkton element fuer element des arrays ansprechen.</p>
<p>danke schon mal...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226067/pointer-2-dimensionales-array</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 01:59:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226067.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 29 Oct 2008 00:09:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 00:09:19 GMT]]></title><description><![CDATA[<p>hallo, ich habe zwar zu dem thema schon eine thread aber hier ein bisschen anderes problem mit konkretem beispiel:<br />
ich habe folgenden code...</p>
<pre><code class="language-cpp">int main()
{
 int square[10][10];
 int *row = &amp;(square[0][0]);

 cout &lt;&lt; &quot;Adresse von square (square): &quot; &lt;&lt; square &lt;&lt; endl;
 cout &lt;&lt; &quot;Adresse von square (*row): &quot; &lt;&lt; row &lt;&lt; endl;

 return 0;
}
</code></pre>
<p>compiliert und rennt...<br />
was ich aber nicht verstehe und jetzt schon seit stunden herumprobiere ist warum es mit nicht moeglich ist folgendes zu machen:</p>
<pre><code class="language-cpp">int *row = square
</code></pre>
<p>der name des arrays sollte doch die speicheradresse des ersten elementes sein.<br />
laut meinem code ist es das auch (die beiden cout's geben die gleiche adresse an)<br />
also soweit ich es verstehe sollte diese zuweisung gueltig sein, da ich mit <em>square</em> eine adresse eines ints bekomme und diese einem pointer vom typ int <em>row</em> zuweisen kann.</p>
<p>bitte um aufklärung warum es nicht geht - bin echt am verzweifeln.</p>
<p>falls wen der hintergrund interessiert, hier die aufgabenstellung:</p>
<blockquote>
<p>Purpose: Construct and use a pointer to a multi (2) dimensional matrix.</p>
<p>In main(), define the array int square[10][10] (even though arrays should not normally be defined locally in functions). Next, define and initialize a pointer row, pointing to this array. Note that row[0] should therefore point to the first of square's rows and row[9] should point to the last of square's rows. Pass this pointer to a function identity() which initializes the full array square to mere zeros, except for the elements on the main diagonal (i.e., square[0][0], square[1][1], square[2][2], etc., should be set to 1).</p>
</blockquote>
<p>falls ich es uebersetzen soll einfach sagen, wills nur nicht unnoetig machen. aber ich denke nicht das die aufgabenstellung fuer die loesung meines problems gebraucht wird. hilfreich waere mir zu sagen ob ich total in die verkehrte richtung unterwegs bin <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 />
ich dachte nachdem ich den pointer auf das erste element des arrays habe, kann ich (da ich die genaue groeße weiß) in der funkton element fuer element des arrays ansprechen.</p>
<p>danke schon mal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606340</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 00:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 06:51:43 GMT]]></title><description><![CDATA[<p>so:</p>
<pre><code class="language-cpp">int (*row)[10]=square;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606361</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 29 Oct 2008 06:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 08:26:48 GMT]]></title><description><![CDATA[<p>danke, eine erklaerung waere auch recht nett <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/1606392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606392</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 08:43:00 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>danke, eine erklaerung waere auch recht nett <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>Statische Arrays liegen prinzipiell erstmal linear (hintereinander) im Speicher. Dabei ist es egal, ob es mehrere Dimensionen hat.<br />
Der Typ eines Arrays ist mit nichten vom Typ <code>Element_Typ*</code> . Sondern von Typ <code>Element_Typ[Dim]</code> . Konkretes Beispiel: Ein Array <code>int a[10]</code> ist vom Typ <code>int[10]</code> und nicht vom Typ <code>int*</code> .<br />
Bei einem zweidimisionalen Array <code>int aa[10][10]</code> hat man demnach auch den Typen <code>int[10][10]</code> . Genaugenommen hast Du ein Array aus 10 <code>int[10]</code> Elementen.<br />
aa enthält also nicht die Startadresse vom ersten <code>int</code> Wert, sondern vom ersten <code>int[10]</code> -Array. Da ein <code>int[10]*</code> nicht das gleiche ist, wie ein <code>int*</code> geht die Zuweisung nicht.<br />
In Deinem Quelltext oben führst Du aber explizit eine Referenzierung durch. Du holst Dir erst das erste Element im Array mit <code>square[0][0]</code> und dann holst Du Dir mit dem &amp;-Operator die Adresse darauf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606405</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606405</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 08:43:20 GMT]]></title><description><![CDATA[<p>kleines update, habe jetzt diesen code:</p>
<pre><code class="language-cpp">int main()
{
 int square[10][10];
 int (*row)[10] = square;

 for(int i = 0; i &lt; 10; ++i)
 	cout &lt;&lt;*(row+i) &lt;&lt; endl;

 cout &lt;&lt; endl;
 return 0;
}
</code></pre>
<p>macht soweit mal was ich brauche denk ich, also das array row hat jetzt alle speicheradressen der jeweiligen zeilen oder?<br />
also output ist folgender:</p>
<blockquote>
<p>0x22cb50<br />
0x22cb78<br />
0x22cba0<br />
0x22cbc8<br />
0x22cbf0<br />
0x22cc18<br />
0x22cc40<br />
0x22cc68<br />
0x22cc90<br />
0x22ccb8</p>
</blockquote>
<p>warum immer 28 abstaende?!<br />
muss ja irgendt etwas mit 10 ints zu tun haben. int is aber 4 byte, also sollte es mmn schritte um jeweils 40 sein, was verstehe ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606406</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 08:47:10 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>...warum immer 28 abstaende?!...</p>
</blockquote>
<p>Das sind Hex-Zahlen. 28<sub>16</sub> = 40<sub>10</sub>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606409</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 08:54:42 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>danke, eine erklaerung waere auch recht nett <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>Statische Arrays liegen prinzipiell erstmal linear (hintereinander) im Speicher. Dabei ist es egal, ob es mehrere Dimensionen hat.<br />
Der Typ eines Arrays ist mit nichten vom Typ <code>Element_Typ*</code> . Sondern von Typ <code>Element_Typ[Dim]</code> . Konkretes Beispiel: Ein Array <code>int a[10]</code> ist vom Typ <code>int[10]</code> und nicht vom Typ <code>int*</code> .<br />
Bei einem zweidimisionalen Array <code>int aa[10][10]</code> hat man demnach auch den Typen <code>int[10][10]</code> . Genaugenommen hast Du ein Array aus 10 <code>int[10]</code> Elementen.</p>
</blockquote>
<p>danke, so weit habe ich es (glaube ich :D) verstanden....</p>
<blockquote>
<p>aa enthält also nicht die Startadresse vom ersten <code>int</code> Wert, sondern vom ersten <code>int[10]</code> -Array.</p>
</blockquote>
<p>hier problem <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="😃"
    /><br />
entweder ich verstehe es falsch aber du meinst hier</p>
<pre><code class="language-cpp">aa != &amp;(square[0][0])
</code></pre>
<p>aber mein erster code zeigt das dies das selbe ist (durch die ausgabe der adressen) also adresse gleich auch gleiches element...</p>
<blockquote>
<p>Da ein <code>int[10]*</code> nicht das gleiche ist, wie ein <code>int*</code> geht die Zuweisung nicht.</p>
</blockquote>
<p>ich verstehe nicht was mit int[10]* für ein typ ist ist, auch ein int array das 10 pointer auf int beinhalten kann?</p>
<p>fragen ueber fragen <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>update zu vorerigem post haha ich bin ein trottel <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="😉"
    /> danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606412</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:54:42 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 09:05:08 GMT]]></title><description><![CDATA[<p>Wir bauen das <code>int[10][10]</code> mal von Hand:</p>
<pre><code class="language-cpp">typedef int int_10[10]; //neuer Typ int_10 der ein int[10] widerspiegelt
typedef int_10 int_10_10[10] // neuer Typ int_10_10 der 10 int_10 Elemente speichert

int_10 a; //a ist vom Typ int[10]
int_10_10 aa; //aa ist vom Typ int_10_10 -&gt; int[10][10]

a[0] = 50;
aa[0][0] = 1000;

int* pa = a; //okay, a wird implizit umgewandelt in int* aufs erste Element

int* paa = aa; //Fehler aa wird implizit umgewandelt in int[10]* auf das erste int_10. int[10]* ist aber != int*
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606417</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:05:08 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 09:05:41 GMT]]></title><description><![CDATA[<p>Die Startadressen vom ersten int[10]-Array und vom ersten int sind natürlich &quot;zufällig&quot; die gleichen. <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/1606418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606418</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:05:41 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 09:12:11 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>entweder ich verstehe es falsch aber du meinst hier</p>
<pre><code class="language-cpp">aa != &amp;(square[0][0])
</code></pre>
<p>aber mein erster code zeigt das dies das selbe ist (durch die ausgabe der adressen) also adresse gleich auch gleiches element...</p>
<blockquote>
<p>Da ein <code>int[10]*</code> nicht das gleiche ist, wie ein <code>int*</code> geht die Zuweisung nicht.</p>
</blockquote>
<p>ich verstehe nicht was mit int[10]* für ein typ ist ist, auch ein int array das 10 pointer auf int beinhalten kann?</p>
<p>fragen ueber fragen <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>update zu vorerigem post haha ich bin ein trottel <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="😉"
    /> danke!</p>
</blockquote>
<p>Es kommt auf dasselbe raus, wenn du es castest. Es ist &quot;lediglich&quot; ein Typproblem, auf das dich der Compiler hinweist.</p>
<pre><code class="language-cpp">int[10]* a;
</code></pre>
<p>liest sich:<br />
a ist ein Zeiger auf ein Array von 10 ints.</p>
<p>EDIT:<br />
I-net ist hier wirklich saulahm.. Beim letzen aktualisieren waren die letzen 2 Posts noch nicht da..<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/4465">@Tachyon</a>:<br />
Sorry für Wiederholung.. <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/1606427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606427</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:12:11 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 09:17:57 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>Die Startadressen vom ersten int[10]-Array und vom ersten int sind natürlich &quot;zufällig&quot; die gleichen. <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>
</blockquote>
<p>hae? <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>Tachyon schrieb:</p>
<blockquote>
<p>Wir bauen das <code>int[10][10]</code> mal von Hand:</p>
</blockquote>
<p>danke fuer den code.<br />
also ist es nicht moeglich mit einem normalen int pointer das komplette array zu durchlaufen, sollte schon oder?<br />
also zb:</p>
<pre><code>int *p = &amp;(square[0][0]);
 for(int i = 0; i &lt; 100; i+=10)
  cout &lt;&lt; p+i &lt;&lt; endl;
</code></pre>
<p>liefert selben output wie vorhin, aber wie zeige ich auf die adresse des ersten int[10] wertes ohne</p>
<pre><code>&amp;(square[0][0])
</code></pre>
<p>denn array indizes soll ich vermeiden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606442</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 09:26:43 GMT]]></title><description><![CDATA[<p>Nochmal als Nachtrag:<br />
Der Compiler kann viele Dinge selbst umwandeln. Das setzt aber voraus, dass er auch eine passende Umwandlung dafür kennt.</p>
<pre><code class="language-cpp">int a[10];
int* pa = a; //hierfuer kennt der Compiler eine Umwandlung, obwohl int* NICHT das gleiche ist, wie int[10]

int aa[10][10];
int* paa = aa; //hierfür hat der Compiler keine Umwandlung parat, deshalb gibt es einen Fehler.
int* paa2 = &amp;(aa[10][10]); //hier machst Du selbst eine Umwandlung in den passenden Typen.

//anderes Beispiel ohne Arrays:
int i = 10;
float f = i; //hiefür kennt der Compiler eine Umwandlung und wandelt int -&gt; float
std::string s = i; //Fehler: Hierfür gibts keine Umwandlung
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606448</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 09:30:48 GMT]]></title><description><![CDATA[<p>aaah langsam glaube ich es zu verstehen <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="😃"
    /><br />
also nicht moeglich auf das erste element des 2dim arrays zu zeigen ohne selbst umzuwandeln und somit die indizes ([0][0]) brauche?</p>
<p>wage mich mal weiter im code, mal sehen ob ich es schaffe <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>echt vielen dank, pointer dacht ich sind halbwegs klar, aber in verbindung mit arrays brauch ich noch denke ich <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/1606455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606455</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:30:48 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 10:36:20 GMT]]></title><description><![CDATA[<p>lange hats nicht gebraucht <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 />
also ich soll das array jetzt initialisieren.<br />
mit lauter nullen, in der diagonale 1, aber im mom nicht das problem.<br />
mein problem ist, dass ich nur zwei zusaetzliche pointer variablen verwenden darf, welche jeweils in den zwei for schleichen verwendet werden.</p>
<pre><code class="language-cpp">//bp code

for(int *p1;....)
{
  for(int *p2;....)

}
</code></pre>
<p>moeglich sollte es ja sein, alles ist moeglich ^^</p>
<p>ich habe mal auf funktionen versichter und versuche alles in einer main zu machen, hier mein code:</p>
<pre><code>int main()
{
 int square[10][10];
 int (*row)[10] = square; //save all ten row addresses in this array

  //show the addresses of each row (works!)
  for(int i = 0; i &lt; 10; ++i)
 	cout &lt;&lt; *(row+i) &lt;&lt; endl; 
  //distance is exactly 28hex (40dec) 
  //which is 10times a int per row

 //nun will ich hier mit einem pointer das selbe machen
 for(int *rw = *row; *rw; rw += 10)
 {
  cout &lt;&lt; &quot;RW: &quot; &lt;&lt; rw &lt;&lt; endl;
 }
 cout &lt;&lt; endl;
 return 0;
}
</code></pre>
<p>output:</p>
<blockquote>
<p>0x22cb50<br />
0x22cb78<br />
0x22cba0<br />
0x22cbc8<br />
0x22cbf0<br />
0x22cc18<br />
0x22cc40<br />
0x22cc68<br />
0x22cc90<br />
0x22ccb8<br />
RW: 0x22cb50<br />
RW: 0x22cb78<br />
RW: 0x22cba0<br />
RW: 0x22cbc8</p>
</blockquote>
<p>warum wird hier gestoppt?!<br />
mein gedanke zu der for schleife:</p>
<pre><code class="language-cpp">for(int *rw = *row; *rw; rw += 10)
</code></pre>
<p>einen pointer auf ein int. dieser zeigt auf das erste element der ersten zeile.<br />
ich mache es so lange so lange der pointer auf etwas zeigt, zuerst hatte ich die bedenken dass es weiter geht also bis ans ende des array, weil es kann ja sein, dass im speicher nach dem array zufaellig weitere ints gespeichert sind oder?<br />
aber er hoert zu frueh auf, was mir nicht eingeht <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>ist mein gedanke ueberhaupt richtig ein array auf diese art mit pointern durchzugehen?</p>
<p>kann ja nicht sein dass ich es einfach nicht begreifen kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606511</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 10:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 11:44:41 GMT]]></title><description><![CDATA[<p>Ne. Normalerweise gehst du da über den Index rein.</p>
<pre><code class="language-cpp">for (int y ..
   for (int x ..
    a[y*width+x] = 2;
...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606542</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:44:41 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 11:47:31 GMT]]></title><description><![CDATA[<p>aber irgend eine moeglichkeit es mit pointern zu machen muss es doch gebn, sonst wuerde es mein prof nicht verlangen <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>
<p>btw. width ist die dimension des arrays oder was meinst du damit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606545</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:47:31 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 11:52:30 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>aber irgend eine moeglichkeit es mit pointern zu machen muss es doch gebn, sonst wuerde es mein prof nicht verlangen <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>
<p>btw. width ist die dimension des arrays oder was meinst du damit?</p>
</blockquote>
<p>Doch, doch. Geht schon, aber ist nicht üblich sich da unnötigerweise mit Pointern zu verrenken, wenn man das elegant über den Index machen kann. <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>Ich persönlich finde es unsinnig das unbedingt per Zeigernotation zu lösen. Das ist einfach nur unleserlich und unintuitiv. Vor allem kannst du den Indexzugriff ja ganz einfach auf Zeigernotation umwandeln. Das so in der Schleife zu machen finde ich auch nicht wirklich gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606550</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 11:55:34 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>aber irgend eine moeglichkeit es mit pointern zu machen muss es doch gebn...</p>
</blockquote>
<pre><code class="language-cpp">const size_t xDim = 10;
const size_t yDim = 10;
int a[xDim][yDim];
for(int *iter(&amp;(a[0][0])), *end(iter + xDim + yDim); iter != end; ++iter)
{
    *iter = 0;
}
</code></pre>
<p>drakon schrieb:</p>
<blockquote>
<p>Ich persönlich finde es unsinnig das unbedingt per Zeigernotation zu lösen. Das ist einfach nur unleserlich und unintuitiv. Vor allem kannst du den Indexzugriff ja ganz einfach auf Zeigernotation umwandeln. Das so in der Schleife zu machen finde ich auch nicht wirklich gut.</p>
</blockquote>
<p>Ich finde das gut. Das geht nämlich Hand in Hand mit der Iteratorennotation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606552</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:55:34 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 11:58:45 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Ich finde das gut. Das geht nämlich Hand in Hand mit der Iteratorennotation.</p>
</blockquote>
<p>Ja, wenn du das jetzt noch anständig verbirgst, bin ich einverstanden. Aber diesen Code da möchte ich nicht 2 mal schreiben müssen. <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/1606556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606556</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 12:04:09 GMT]]></title><description><![CDATA[<p>meine aufgabenstellung:<br />
funktion identity() welche ein 2dim array bekommt (bzw. ich denke ein array mit zeigern auf die jeweiligen zeilen).<br />
die funktion initialisiert das array mit lauter nullen, nur in der diagonale 1en.<br />
gefordert ist die funktion darf als variablen nur den parameter und jeweils einen pointer pro for schleife haben. und es soll in 2fors geloest werden mit nur einem zuweisungs operation.</p>
<p>als tipp steht pointer arethmetik verwenden, ich denke wird dann irgend etwas sein, wenn das ergebnis aus spalten pointer weniger zeilen pointer null ist bedeutet das ich hab ein element der diagonale...<br />
aber wie gesagt hab probleme mit den for's <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> (du verwendest ja zwei variablen)</p>
<p>danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606564</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:04:09 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 12:09:23 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>meine aufgabenstellung:<br />
funktion identity() welche ein 2dim array bekommt (bzw. ich denke ein array mit zeigern auf die jeweiligen zeilen).<br />
die funktion initialisiert das array mit lauter nullen, nur in der diagonale 1en.<br />
gefordert ist die funktion darf als variablen nur den parameter und jeweils einen pointer pro for schleife haben. und es soll in 2fors geloest werden mit nur einem zuweisungs operation.</p>
<p>als tipp steht pointer arethmetik verwenden, ich denke wird dann irgend etwas sein, wenn das ergebnis aus spalten pointer weniger zeilen pointer null ist bedeutet das ich hab ein element der diagonale...<br />
aber wie gesagt hab probleme mit den for's <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> (du verwendest ja zwei variablen)</p>
<p>danke!!</p>
</blockquote>
<p>Wieder so eine blödsinnige Aufgabe ohne wirklichen Sinn.<br />
Zeig mal alles, was Du dazu bis jetzt so gemacht hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606565</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:09:23 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 12:19:32 GMT]]></title><description><![CDATA[<p>hehe, nicht meine schuld <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="😃"
    /><br />
danke fuer die hilfe also hier mein code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

void identity(int *row); //ich dachte es funktioniert mit einem normalen pointer
//tut es aber nicht, gibt es ne andere moeglichkeit als den typ (*row)[10] zu verwenden?

int main()
{
 int square[10][10]; //das array
 int (*row)[10] = square; //adressen jeder zeile

  //show the addresses of each row 
  for(int i = 0; i &lt; 10; ++i)
 	cout &lt;&lt; *(row+i) &lt;&lt; endl; 
  //distance is exactly 28hex (40dec) 
  //which is 10times a int per row

  //das funktioniert in meinen vorherigen post wollte ich eben nur das problem der fors machen aber ok machen wir es gleich mit funktion

   identity(row);

void identity((*row)[10])
{
 for(...)
   for(...)

}
</code></pre>
<p>soweit die struktur, hier schon fehler?<br />
die erste for sollte doch nur reihe fuer reiher durchgehen, also den parameter durchgehen. aber wie?!<br />
oben in meiner testausgabe der werte des arrays sehe ich dass ich mit</p>
<pre><code class="language-cpp">(row+i)
</code></pre>
<p>die adressen bekommen, aber wie mache ich es nur mit pointern?</p>
<p>danke fuer deine hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606569</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:19:32 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 12:42:45 GMT]]></title><description><![CDATA[<p>update da ich gerade versuche das array bzw seine adressen zu uebergeben.<br />
ueber main definiert:</p>
<pre><code class="language-cpp">void identity(int (*row)[10]);
</code></pre>
<p>kein problem, implementiere ich die funktion</p>
<p>ich fuege unter main folgendes hinzu:</p>
<pre><code class="language-cpp">void identity(int (*row)[10] row)
{
 cout &lt;&lt; &quot;in identity\n&quot;;
}
</code></pre>
<p>lauter errors, warum?!</p>
<blockquote>
<p><a href="http://ex39.cc:30" rel="nofollow">ex39.cc:30</a>: error: variable or field <code>identity' declared void ex39.cc:30: error:</code>int identity' redeclared as different kind of symbol<br />
<a href="http://ex39.cc:8" rel="nofollow">ex39.cc:8</a>: error: previous declaration of <code>void identity(int (*)\[10\])' ex39.cc:30: error: declaration of</code>int identity'<br />
<a href="http://ex39.cc:8" rel="nofollow">ex39.cc:8</a>: error: conflicts with previous declaration <code>void identity(int (*)\[10\])' ex39.cc:30: error:</code>row' was not declared in this scope<br />
<a href="http://ex39.cc:31" rel="nofollow">ex39.cc:31</a>: error: expected <code>,' or</code>;' before '{' token</p>
</blockquote>
<p>ich sehe wenn ich das row entferne beim inmplementieren der funktion unter main kein error mehr aber ich muss ja in der funktion den parameter ansprechen koennen, ich dachte das ist der typ fuck ich kenn mich echt nimmer aus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606573</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:42:45 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 12:43:58 GMT]]></title><description><![CDATA[<p>Du hast in der Deklaration den Namen des Parameters (&quot;row&quot;) bereits drin. In der Implementierung dann zweimal, das muss krachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606577</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:43:58 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 12:46:17 GMT]]></title><description><![CDATA[<p>hallo ja sorry hab vorherigen post editiert, verzweifle echt langsam...<br />
was is dann jez der typ fuer die funktion?<br />
wenn ich es mit</p>
<pre><code class="language-cpp">void identity(int *[10]);
</code></pre>
<p>ueber main definiere klappt es, ist das richtig? kann ich das sagen dass es ein array mit 10 plaetzen fuer int zeiger ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606578</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:46:17 GMT</pubDate></item><item><title><![CDATA[Reply to pointer 2 dimensionales array on Wed, 29 Oct 2008 12:54:24 GMT]]></title><description><![CDATA[<p>ALLES NEU <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>habe es jetzt geschafft <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=";D"
      alt="😉"
    /></p>
<pre><code class="language-cpp">void identity(int (*)[10]); //muss ich das so definieren? geht mir nicht ganz ein, wie wird das gelesen? array von 10 elementen welche pointer auf ints sind?

int main()
{
 int square[10][10];
 int (*row)[10] = square;

  //show the addresses of each row 
  for(int i = 0; i &lt; 10; ++i)
 	cout &lt;&lt; *(row+i) &lt;&lt; endl; 
  //distance is exactly 28hex (40dec) 
  //which is 10times a int per row

 identity(row);

 cout &lt;&lt; endl;
 return 0;
}

void identity(int (*tst)[10]) //es war das prob dass ich die klammern rund um den pointer vergessen habe, warum brauche ich die klammern? also auch hier wieder die frage wie es interpretiert wird. ???
{
 cout &lt;&lt; &quot;in identity\n&quot; &lt;&lt; *tst;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1606581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606581</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 12:54:24 GMT</pubDate></item></channel></rss>