<?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 ausdruecke in pointer umschreiben]]></title><description><![CDATA[<p>hall erstmal, hab da ne aufgabe die ich gerne bisschen diskutieren wuerde.</p>
<pre><code class="language-cpp">definition:         rewrite:

    a.      int x[6] --&gt;             x[3] = x[2];
    b.      char *argv[] --&gt;         cout &lt;&lt; argv[2];
    c.      int x[] --&gt;             &amp;x[10] - &amp;x[3];
    d.      char *argv[] --&gt;        argv[0]++;
    e.      char *argv[] --&gt;        argv++[0];
    f.      char *argv[] --&gt;       ++argv[0];
    g.      char **argv --&gt;         ++argv[0][2];
</code></pre>
<p>es soll so kmopakt wie moeglich sein, keine unnoetigen klammern oder pointer.</p>
<pre><code class="language-cpp">a.      int x[6] --&gt;             x[3] = x[2];
*(x+3) = *(x+2)
</code></pre>
<p>der name des arrays ist ja die erste speicheradresse. da ich das vierte bzw. dritte element des array haben moechte muss ich zu erster speicheradresse jeweils drei bzw. zwei(integer) addieren.</p>
<pre><code class="language-cpp">b.      char *argv[]  --&gt;        cout &lt;&lt; argv[2];
cout &lt;&lt; *(argv+sizeof(char)*2)
</code></pre>
<p>hier bin ich mir nicht sicher. ich habe ja hier ein array names argv welches pointer vom typ char enthaelt oder? aber ich hab keine ahnung von der dimension. aber da ich durch sizeof(char) genau weiß wie viel speciherplatz ein char benoetigt kann ich einfach die groeße mal zwei weitergehn.<br />
wuerde es auch reichen einfach *(argv+2) zu machen?</p>
<pre><code class="language-cpp">c.      int x[] --&gt;             &amp;x[10] - &amp;x[3];
(x + 10) - (x + 3);
</code></pre>
<p>da ich hier die speicheradressen der elemente benoetige kann ich einfach zur startadresse weiterzaehlen und bekomme diese.</p>
<pre><code class="language-cpp">d.      char *argv[] --&gt;        argv[0]++;
</code></pre>
<p>hmm hier habe ich wieder ein array mit pointer zu diversen chars;<br />
ich will das erste element des array inkrementieren.<br />
also</p>
<pre><code class="language-cpp">(*argv)++;
</code></pre>
<pre><code class="language-cpp">e.      char *argv[] --&gt;        argv++[0];
</code></pre>
<p>hier verstehe ich die frage nicht ganz, was bedeutet argv++[0]?</p>
<pre><code class="language-cpp">f.      char *argv[];       ++argv[0];
</code></pre>
<p>ich denke wie d. nur postfix.<br />
also</p>
<pre><code class="language-cpp">++(*argv);
</code></pre>
<pre><code class="language-cpp">g.      char **argv --&gt;        ++argv[0][2];
</code></pre>
<p>hier wirds spannend <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 />
ein zwei dimensionales array.<br />
ich moechte in der ersten zweile das dritte element erhoehen.<br />
soweit verstehe ich es nur wie spreche ich das an?<br />
mit argv habe ich die erste adresse, da ich in der ersten zeile bleibe muesste ich doch theoretisch wie vorhin einfach um 2 weitergehen (je nachdem mit +2 oder +sizeof(char) *2)<br />
--&gt;</p>
<pre><code class="language-cpp">++(*(argv+2))
</code></pre>
<p>falls es richtig ist, wie spreche ich zb das element der dritten zeile an, also</p>
<pre><code class="language-cpp">++argv[2][2];
</code></pre>
<p>ich dachte ich komme in die zweite zeile indem ich zu dem ersten elemetn die anzahl an elementen der zweiten dimension addirer. bp array: arr[3][4]<br />
indem ich arr + 5 mach (+4 waeren die elemente der ersten zeile, +5 das erste in der naechsten)<br />
aber ich habe hie ja keine dimension, also wie geht das dann?</p>
<p>sorry ich weiß ist ein langer post geworden bin aber jedem helfer dankbar <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 />
(falls wer einen link hat welcher das problem mehrdimensionale arrays mit pointern beschreibt wuerde mir das sehr helfen!)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/226030/array-ausdruecke-in-pointer-umschreiben</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 03:24:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/226030.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 28 Oct 2008 13:29:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Tue, 28 Oct 2008 17:00:32 GMT]]></title><description><![CDATA[<p>hall erstmal, hab da ne aufgabe die ich gerne bisschen diskutieren wuerde.</p>
<pre><code class="language-cpp">definition:         rewrite:

    a.      int x[6] --&gt;             x[3] = x[2];
    b.      char *argv[] --&gt;         cout &lt;&lt; argv[2];
    c.      int x[] --&gt;             &amp;x[10] - &amp;x[3];
    d.      char *argv[] --&gt;        argv[0]++;
    e.      char *argv[] --&gt;        argv++[0];
    f.      char *argv[] --&gt;       ++argv[0];
    g.      char **argv --&gt;         ++argv[0][2];
</code></pre>
<p>es soll so kmopakt wie moeglich sein, keine unnoetigen klammern oder pointer.</p>
<pre><code class="language-cpp">a.      int x[6] --&gt;             x[3] = x[2];
*(x+3) = *(x+2)
</code></pre>
<p>der name des arrays ist ja die erste speicheradresse. da ich das vierte bzw. dritte element des array haben moechte muss ich zu erster speicheradresse jeweils drei bzw. zwei(integer) addieren.</p>
<pre><code class="language-cpp">b.      char *argv[]  --&gt;        cout &lt;&lt; argv[2];
cout &lt;&lt; *(argv+sizeof(char)*2)
</code></pre>
<p>hier bin ich mir nicht sicher. ich habe ja hier ein array names argv welches pointer vom typ char enthaelt oder? aber ich hab keine ahnung von der dimension. aber da ich durch sizeof(char) genau weiß wie viel speciherplatz ein char benoetigt kann ich einfach die groeße mal zwei weitergehn.<br />
wuerde es auch reichen einfach *(argv+2) zu machen?</p>
<pre><code class="language-cpp">c.      int x[] --&gt;             &amp;x[10] - &amp;x[3];
(x + 10) - (x + 3);
</code></pre>
<p>da ich hier die speicheradressen der elemente benoetige kann ich einfach zur startadresse weiterzaehlen und bekomme diese.</p>
<pre><code class="language-cpp">d.      char *argv[] --&gt;        argv[0]++;
</code></pre>
<p>hmm hier habe ich wieder ein array mit pointer zu diversen chars;<br />
ich will das erste element des array inkrementieren.<br />
also</p>
<pre><code class="language-cpp">(*argv)++;
</code></pre>
<pre><code class="language-cpp">e.      char *argv[] --&gt;        argv++[0];
</code></pre>
<p>hier verstehe ich die frage nicht ganz, was bedeutet argv++[0]?</p>
<pre><code class="language-cpp">f.      char *argv[];       ++argv[0];
</code></pre>
<p>ich denke wie d. nur postfix.<br />
also</p>
<pre><code class="language-cpp">++(*argv);
</code></pre>
<pre><code class="language-cpp">g.      char **argv --&gt;        ++argv[0][2];
</code></pre>
<p>hier wirds spannend <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 />
ein zwei dimensionales array.<br />
ich moechte in der ersten zweile das dritte element erhoehen.<br />
soweit verstehe ich es nur wie spreche ich das an?<br />
mit argv habe ich die erste adresse, da ich in der ersten zeile bleibe muesste ich doch theoretisch wie vorhin einfach um 2 weitergehen (je nachdem mit +2 oder +sizeof(char) *2)<br />
--&gt;</p>
<pre><code class="language-cpp">++(*(argv+2))
</code></pre>
<p>falls es richtig ist, wie spreche ich zb das element der dritten zeile an, also</p>
<pre><code class="language-cpp">++argv[2][2];
</code></pre>
<p>ich dachte ich komme in die zweite zeile indem ich zu dem ersten elemetn die anzahl an elementen der zweiten dimension addirer. bp array: arr[3][4]<br />
indem ich arr + 5 mach (+4 waeren die elemente der ersten zeile, +5 das erste in der naechsten)<br />
aber ich habe hie ja keine dimension, also wie geht das dann?</p>
<p>sorry ich weiß ist ein langer post geworden bin aber jedem helfer dankbar <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 />
(falls wer einen link hat welcher das problem mehrdimensionale arrays mit pointern beschreibt wuerde mir das sehr helfen!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606049</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606049</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Tue, 28 Oct 2008 17:00:32 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Tue, 28 Oct 2008 13:50:39 GMT]]></title><description><![CDATA[<p>Du musst nur folgende Regel anwenden:</p>
<pre><code class="language-cpp">Array[Index] == *(Array+Index)
</code></pre>
<p>Benutze bitte in Zukunft CPP-Tags, dann werden sich auch sicher mehr Leute deinen Thread anschauen.<br />
Zu Zeigern gibt es <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-124532.html" rel="nofollow">hier</a> einen Artikel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606063</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 28 Oct 2008 13:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Tue, 28 Oct 2008 18:23:37 GMT]]></title><description><![CDATA[<p>done <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 />
danke fuer die erste rueckmeldung.<br />
ich lese mir mal den artikel durch, danke fuer den link!<br />
werde mich sicher noch melden <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1606209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606209</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Tue, 28 Oct 2008 18:23:37 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Tue, 28 Oct 2008 21:08:22 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>ok die konkreten fragen:<br />
a sollte passen.</p>
<pre><code class="language-cpp">b.      char *argv[]  --&gt;        cout &lt;&lt; argv[2];
cout &lt;&lt; *(argv+sizeof(char)*2)
</code></pre>
<p>dh es wuerde hier reichen</p>
<pre><code class="language-cpp">cout &lt;&lt; *(argv+2)
</code></pre>
<p>zu machen da der compiler check dass es ein char ist und somit selbst die groeße weiß wie viele bytes er weiter gehen soll oder?</p>
<pre><code class="language-cpp">c.      int x[] --&gt;             &amp;x[10] - &amp;x[3];
(x + 10) - (x + 3);
</code></pre>
<p>da ich hier die speicheradressen der elemente benoetige kann ich einfach zur startadresse weiterzaehlen und bekomme diese.</p>
<p>is flasch oder, ich muss ja noch ein &amp; davor geben, also:</p>
<pre><code class="language-cpp">&amp;(x + 10) - &amp;(x + 3);
</code></pre>
<pre><code class="language-cpp">d.      char *argv[] --&gt;        argv[0]++;
</code></pre>
<pre><code class="language-cpp">(*argv)++;
</code></pre>
<p>sollte passen..</p>
<pre><code class="language-cpp">e.      char *argv[] --&gt;        argv++[0];
</code></pre>
<p>immer noch offen:<br />
hier verstehe ich die frage nicht ganz, was bedeutet argv++[0]?</p>
<pre><code class="language-cpp">f.      char *argv[];       ++argv[0];
</code></pre>
<p>ich denke wie d. nur postfix.<br />
also</p>
<pre><code class="language-cpp">++(*argv);
</code></pre>
<p>sollte auch passen....</p>
<pre><code class="language-cpp">g.      char **argv --&gt;        ++argv[0][2];
</code></pre>
<p>also wenn ich es nach dem pointer thread richtig verstanden habe:<br />
ein pointer (zeile) zeigt auf einen anderen pointer der die elemente pro zeile anspricht.<br />
argv hat die adresse des ersten elementes in der ersten zeile, weiter weiß ich trotzdem nich und verweiße auf meine vorherige frage:</p>
<p>ich moechte in der ersten zweile das dritte element erhoehen.<br />
soweit verstehe ich es nur wie spreche ich das an?<br />
mit argv habe ich die erste adresse, da ich in der ersten zeile bleibe muesste ich doch theoretisch wie vorhin einfach um 2 weitergehen</p>
<pre><code class="language-cpp">++(*(argv+2))
</code></pre>
<p>falls es richtig ist, wie spreche ich zb das element der dritten zeile an, also</p>
<pre><code class="language-cpp">++argv[2][2];
</code></pre>
<p>ich dachte ich komme in die zweite zeile indem ich zu dem ersten elemetn die anzahl an elementen der zweiten dimension addirer. bp array: arr[3][4]<br />
indem ich arr + 5 mach (+4 waeren die elemente der ersten zeile, +5 das erste in der naechsten)<br />
aber ich habe hier ja keine dimension, also wie geht das dann?</p>
</blockquote>
<p>vielen dank schon mal.<br />
ein thread ueber mehr dimensionale array waere nett, der vorherige bringt mich nicht weiter <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/1606298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606298</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Tue, 28 Oct 2008 21:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 06:31:19 GMT]]></title><description><![CDATA[<p>zu c.<br />
<code>(x+10)-(x+3)</code> ist schon richtig. Du bildest ja die Differenz der Adressen des zehnten und dritten Elements ( <code>x[10] &lt;=&gt; *(x+10) =&gt; &amp;x[10] &lt;=&gt; (x+10)</code> ). <code>&amp;(x+10)</code> ist sowieso Unsinn, da man die Adresse von einem Zwischenergebnis nicht bilden kann ( <code>(x+10)</code> wird ja nirgendwo gespeichert).</p>
<p>zu e.<br />
Das Ergebnis des Ausdrucks ist der Wert des ersten Arrayelements, da <code>argv++</code> den alten Zeigerwert von <code>argv</code> zurückgibt. <code>argv</code> selbst zeigt danach auf das zweite Arrayelement. Die Lösung sieht fast wie bei d. aus <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="🙂"
    /> ACHTUNG: Das ganze ist nur gültig, wenn <code>argv</code> ein Funktionsparameter ist.</p>
<p>zu g.<br />
Eigentlich musst Du nur die Indirektionsstufen nacheinander auflösen. Behandle die innere Indirektion zuerst, dann substituiere das Ergebnis. Bei der äusseren Dimension tust Du so, als ob es ein Eindimensionales Array wäre und schleppst das, was innen steht, einfach mit.</p>
<p>Betrachten wir also <code>++argv[0][2]</code> . Die innere Indirektion ist <code>argv[0]</code> , also <code>(*argv)</code> (siehe a.). Wir haben jetzt <code>++(*argv)[2]</code> . Nun erklären wir: <code>z entspricht (*argv)</code> , haben also <code>++z[2]</code> . Jetzt machst Du das, was Du bei f. schon gemacht hast und ersetzt danach <code>z</code> wieder durch <code>(*argv)</code> .</p>
<p>Der Rest stimmt, wenn ich nichts übersehen habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606357</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 29 Oct 2008 06:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 08:40:56 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>ein thread ueber mehr dimensionale array waere nett, der vorherige bringt mich nicht weiter <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>
</blockquote>
<p>Das hilft ev. auch weiter, wenn du mal das ganze noch übergeben willst:</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-211534-and-highlight-is-.html" rel="nofollow">3D</a></p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-212469-and-highlight-is-array+2+dimensionales.html" rel="nofollow">2D</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606402</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 29 Oct 2008 08:40:56 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 09:42:51 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>zu c.<br />
<code>(x+10)-(x+3)</code> ist schon richtig. Du bildest ja die Differenz der Adressen des zehnten und dritten Elements ( <code>x[10] &lt;=&gt; *(x+10) =&gt; &amp;x[10] &lt;=&gt; (x+10)</code> ). <code>&amp;(x+10)</code> ist sowieso Unsinn, da man die Adresse von einem Zwischenergebnis nicht bilden kann ( <code>(x+10)</code> wird ja nirgendwo gespeichert).</p>
</blockquote>
<p>hmm ich denke eher da</p>
<pre><code class="language-cpp">x+10
</code></pre>
<p>ja schon eine adresse ist kann ich nicht</p>
<pre><code class="language-cpp">&amp;(x+10)
</code></pre>
<p>machen oder? denn was ist die adresse der adresse <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>
<blockquote>
<p>zu e.<br />
Das Ergebnis des Ausdrucks ist der Wert des ersten Arrayelements, da <code>argv++</code> den alten Zeigerwert von <code>argv</code> zurückgibt. <code>argv</code> selbst zeigt danach auf das zweite Arrayelement. Die Lösung sieht fast wie bei d. aus <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="🙂"
    /> ACHTUNG: Das ganze ist nur gültig, wenn <code>argv</code> ein Funktionsparameter ist.</p>
</blockquote>
<p>hae?!<br />
dh ich spreche den char pointer dann an wie ein array?!<br />
ich habe ja</p>
<pre><code class="language-cpp">argv[0]
</code></pre>
<p>auszugeben (da das postix erst spaeter wirkt) dass waere dann mit</p>
<pre><code class="language-cpp">*argv
</code></pre>
<p>getan - richtig?!</p>
<blockquote>
<p>zu g.<br />
Betrachten wir also <code>++argv[0][2]</code> . Die innere Indirektion ist <code>argv[0]</code> , also <code>(*argv)</code> (siehe a.). Wir haben jetzt <code>++(*argv)[2]</code> . Nun erklären wir: <code>z entspricht (*argv)</code> , haben also <code>++z[2]</code> . Jetzt machst Du das, was Du bei f. schon gemacht hast und ersetzt danach <code>z</code> wieder durch <code>(*argv)</code> .</p>
</blockquote>
<p>also stimmt</p>
<pre><code class="language-cpp">++(*((argv)+2))
</code></pre>
<p>oder?</p>
<p>meine gedanken:<br />
mit argv bekomme ich die speicher adresse des elementes [0][0],da ich in dieser zeile das dritte element moecht noch +2 addieren und ich habe die adresse dieses elements.<br />
durch den * bekomme ich den wert des elements und inkreentiere es.<br />
die klammern um argv mache ich darum da ich ja mit argv+2 die uebernaechste zeile des arrays ansprechen wuerde oder nicht? da ich das nicht will druecke ich somit aus, bleib in der zeile argv und gehe zwei &quot;schritte&quot; (ints) weiter</p>
<p>danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606468</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:42:51 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 09:51:58 GMT]]></title><description><![CDATA[<p>Bei argv hast du nichts mit Zeilen und Spalten und was weiß ich, da es kein mehrdimensionales Array ist das sequentiell im Speicher steht. Denn es ist ein stumpfes Array von char*. Das heißt im Speicher hast du nur sequentiell die Adressen der jeweiligen char-Arrays der Parameterwerte stehen.</p>
<p>Mit argv+2 bekommst du die Adresse an der die Adresse des ersten Buchstaben des dritten Parameters liegt.<br />
Mit <em>(argv+2) bekommst du die Adresse des ersten Buchstaben des dritten Parameters.<br />
Mit ++(</em>(argv+2)) veränderst du diese Adresse, so daß sie von da an auf den zweiten Buchstaben des dritten Parameters zeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606475</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 29 Oct 2008 09:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 10:09:27 GMT]]></title><description><![CDATA[<p>Fellhuhn schrieb:</p>
<blockquote>
<p>Mit argv+2 bekommst du die Adresse an der die Adresse des ersten Buchstaben des dritten Parameters liegt.</p>
</blockquote>
<p>nur um sicher zu gehen ob ich &quot;Adresse an der die Adresse des&quot; richtig verstehe:<br />
argv = erste adresse im speicher, +2 komme ich zum dritten array.<br />
also adresse des ersten buchstabens vom dritten wert.</p>
<blockquote>
<p>Mit *(argv+2) bekommst du die Adresse des ersten Buchstaben des dritten Parameters.</p>
</blockquote>
<p><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="😕"
    /> waere ja dann wie oben wenn ich nur eine adresse bekommen.<br />
ich dachte durch * gehe ich eine ebene hoeher, also dachte ich wuerde hier den ersten buchstaben des dritten arrays bekommen - nicht?</p>
<blockquote>
<p>Mit ++(*(argv+2)) veränderst du diese Adresse, so daß sie von da an auf den zweiten Buchstaben des dritten Parameters zeigt.</p>
</blockquote>
<p>also auch hier wuerde ich das char des dritten arrays an der ersten stelle um eines erhoehen (1 wert weiter in der ascii tabelle)</p>
<p>wo ist mein denkfehler?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606488</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606488</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 10:09:27 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 10:42:06 GMT]]></title><description><![CDATA[<p>AbsoluterBeginner schrieb:</p>
<blockquote>
<p>nur um sicher zu gehen ob ich &quot;Adresse an der die Adresse des&quot; richtig verstehe:<br />
argv = erste adresse im speicher, +2 komme ich zum dritten array.<br />
also adresse des ersten buchstabens vom dritten wert.</p>
</blockquote>
<p>Mit +2 hast du dann die Adresse an der die Adresse des dritten Parameters steht (char Array).</p>
<blockquote>
<p><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="😕"
    /> waere ja dann wie oben wenn ich nur eine adresse bekommen.<br />
ich dachte durch * gehe ich eine ebene hoeher, also dachte ich wuerde hier den ersten buchstaben des dritten arrays bekommen - nicht?</p>
</blockquote>
<p>Durch den *-Operator auf einen Zeiger bekommst du das, was an der Adresse auf die verwiesen wird steht. Also wenn argv+2 die Adresse der Adresse des dritten Parameters ist, dann ist *(argv+2) dann nur noch die Adresse des dritten Parameters.</p>
<blockquote>
<p>also auch hier wuerde ich das char des dritten arrays an der ersten stelle um eines erhoehen (1 wert weiter in der ascii tabelle)</p>
<p>wo ist mein denkfehler?!</p>
</blockquote>
<p>Das du noch nicht bei den Chars bist. Weil eben <em>(argv+2) dir nur einen Zeiger auf das erste Element des Char-Arrays gibt aber nicht den Char selbst. Wolltest du den Char verändern, müsstest du den Zeiger selbst auch noch einmal dereferenzieren: ++(</em>(*(argv+2))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606516</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606516</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 29 Oct 2008 10:42:06 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 11:08:13 GMT]]></title><description><![CDATA[<p>ok, eine dimension vergessen <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 />
nochmal zum konkreten beispiel:</p>
<pre><code class="language-cpp">char **argv; --&gt; ++argv[0][2];
</code></pre>
<p>ich moechte den dritten buchstaben des ersten arrays erhoehen.<br />
argv zeigt auf einen weiteren zeiger der mir die adresse des ersten arrays gibt.<br />
also ich muss</p>
<pre><code class="language-cpp">*argv
</code></pre>
<p>habe ich die adresse des ersten arrays, von dort aus muss ich um zwei weitergehen --&gt;</p>
<pre><code class="language-cpp">((*argv)+2)
</code></pre>
<p>da ich aber nicht die adresse haben moechte (sondern den char selbst) noch ein * davor --&gt;</p>
<pre><code class="language-cpp">*((*argv)+2)
</code></pre>
<p>ist der char welcher im ersten array an dritter position steht.<br />
da ich diesen inkrementieren moechte noch ein ++ davor --&gt;</p>
<pre><code class="language-cpp">++(*((*argv)+2))
</code></pre>
<p>endergebnis.</p>
<p>vielen dank, waere super wenn es jetzt richtig waere <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606531</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 11:20:46 GMT]]></title><description><![CDATA[<p>Genau. Wobei du bedenken musst das der erste (bzw. &quot;nullte&quot;) Parameter immer der Programmname an sich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1606535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606535</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to array ausdruecke in pointer umschreiben on Wed, 29 Oct 2008 11:23:38 GMT]]></title><description><![CDATA[<p>danke <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/1606536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1606536</guid><dc:creator><![CDATA[AbsoluterBeginner]]></dc:creator><pubDate>Wed, 29 Oct 2008 11:23:38 GMT</pubDate></item></channel></rss>