<?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[Frage zu Quelltext&#x2F;Zeigerarrays]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zu folgenden beiden Quelltexten:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

void main(int argc, char *argv[])
{
	int i;

	for (i=1; i&lt;argc; i++)
		printf(&quot;%c\n&quot;,122-(*argv[i]-97));

	system (&quot;pause&quot;);
}
</code></pre>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

void main(int argc, char *argv[])
{
	int i;

	for(i=0; i&lt;argc; i++)
		printf(&quot;%c\n&quot;,219 - argv[1][i]);

	system(&quot;pause&quot;);  
}
</code></pre>
<p>Die Funktion ist bei beiden Programmen die gleiche: Ich rufe über die Konsole (cmd.exe) in dem entsprechenden Pfad meine von Microsoft Visual C++ erstellte *.exe auf (nennen wir sie mal &quot;Wandle.exe&quot;). Nach Eingabe von z. B. &quot;Wandle a b c&quot; im oberen Programm bzw. &quot;Wandle abc&quot; im unteren Programm bekomme ich als Ausgabe &quot;z y x&quot; bzw. &quot;zyx&quot;.</p>
<p>Nun meine Frage: Im oberen Programm brauche ich vor &quot;argv[i]&quot; ein &quot;<em>&quot;, weil ich das Array vorher ja als Zeigerarray deklariert habe, richtig?<br />
Aber warum muss vor &quot;argv[1][i]&quot; kein &quot;</em>&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286584/frage-zu-quelltext-zeigerarrays</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 21:31:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286584.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 May 2011 15:45:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 15:45:26 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zu folgenden beiden Quelltexten:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

void main(int argc, char *argv[])
{
	int i;

	for (i=1; i&lt;argc; i++)
		printf(&quot;%c\n&quot;,122-(*argv[i]-97));

	system (&quot;pause&quot;);
}
</code></pre>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

void main(int argc, char *argv[])
{
	int i;

	for(i=0; i&lt;argc; i++)
		printf(&quot;%c\n&quot;,219 - argv[1][i]);

	system(&quot;pause&quot;);  
}
</code></pre>
<p>Die Funktion ist bei beiden Programmen die gleiche: Ich rufe über die Konsole (cmd.exe) in dem entsprechenden Pfad meine von Microsoft Visual C++ erstellte *.exe auf (nennen wir sie mal &quot;Wandle.exe&quot;). Nach Eingabe von z. B. &quot;Wandle a b c&quot; im oberen Programm bzw. &quot;Wandle abc&quot; im unteren Programm bekomme ich als Ausgabe &quot;z y x&quot; bzw. &quot;zyx&quot;.</p>
<p>Nun meine Frage: Im oberen Programm brauche ich vor &quot;argv[i]&quot; ein &quot;<em>&quot;, weil ich das Array vorher ja als Zeigerarray deklariert habe, richtig?<br />
Aber warum muss vor &quot;argv[1][i]&quot; kein &quot;</em>&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062307</guid><dc:creator><![CDATA[Harry87]]></dc:creator><pubDate>Thu, 12 May 2011 15:45:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 15:50:38 GMT]]></title><description><![CDATA[<p>Erst mal, das was du hier machst stinkt nur so nach C.<br />
Zweitens ist system böse.<br />
Drittens ist a[n] dasselbe wie <em>(a + n), daher ist [][] schon eine doppelte Dereferenzierung.<br />
Viertens, heißt es int main(int argc, char</em>* argv).</p>
<p>Fünftens, hier die C++ Variante: <a href="http://ideone.com/nxEZM" rel="nofollow">http://ideone.com/nxEZM</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062312</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 12 May 2011 15:50:38 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 15:54:26 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Fünftens, hier die C++ Variante: <a href="http://ideone.com/nxEZM" rel="nofollow">http://ideone.com/nxEZM</a></p>
</blockquote>
<p>Das Beispiel ist (noch) nicht Standardkonform, außerdem tut er was ganz anderes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062314</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 12 May 2011 15:54:26 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 15:56:36 GMT]]></title><description><![CDATA[<p>Du kannst auch auto durch std::vector<a href="std::string" rel="nofollow">std::string</a>::const_iterator ersetzen wenns dir Spaß macht, ich habe auto verwendet, um mich auf das Wesentliche zu konzentrieren. Und was er jetzt mit den einzelnen Argumenten tut, tut nichts zu Sache - ich wollte lediglich die allgemeine Verarbeitung in C++ vorzeigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062320</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 12 May 2011 15:56:36 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 16:02:35 GMT]]></title><description><![CDATA[<p>Danke für eure schnellen Antworten.<br />
Sorry, hab ich aus Versehen ins falsche Forum geschrieben.</p>
<p>Aber so wirklich kapiere ich das trotzdem noch nicht, warum ich jetzt einmal &quot;*&quot; brauche und einmal nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062327</guid><dc:creator><![CDATA[Harry87]]></dc:creator><pubDate>Thu, 12 May 2011 16:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 16:10:41 GMT]]></title><description><![CDATA[<p>Harry87 schrieb:</p>
<blockquote>
<p>Aber so wirklich kapiere ich das trotzdem noch nicht, warum ich jetzt einmal &quot;*&quot; brauche und einmal nicht.</p>
</blockquote>
<p>Das * steckt in dem einen Fall schon im [] mit drin. Falsch, eigentlich in beiden. Jedes [] enthält ein * aufgrund der folgenden Definition: <code>a[b] := *(a+b)</code> . Wenn du also <code>argv[1][i]</code> hast, ist das gleichbedeutend mit <code>*(*(argv + 1) + i)</code> (schreibt so aber keiner, nur fürs Verständnis).</p>
<p>Der Code ist trotzdem ... nicht besonders. Man versteht durch scharfes Nachdenken noch viel zu gut, was er machen soll. <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/2062336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062336</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 12 May 2011 16:10:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 16:19:18 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Fünftens, hier die C++-Variante: <a href="http://ideone.com/nxEZM" rel="nofollow">http://ideone.com/nxEZM</a></p>
</blockquote>
<p>Wenn jemand schon etwas als C++ Variante anpreist, soll er auch die echte nehmen: <a href="http://ideone.com/fDuJ2" rel="nofollow">http://ideone.com/fDuJ2</a></p>
<p>Ein <code>std::vector</code> als Wrapper eines Arrays ist eigentlich nie sinnvoll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062344</guid><dc:creator><![CDATA[fDuJ2]]></dc:creator><pubDate>Thu, 12 May 2011 16:19:18 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 17:05:39 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Viertens, heißt es int main(int argc, char** argv).</p>
</blockquote>
<p>Bullshit! Ob man <code>char* argv[]</code> oder <code>char** argv</code> schreibt ist dem Standard egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062378</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 12 May 2011 17:05:39 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 17:08:34 GMT]]></title><description><![CDATA[<p>Bashar schrieb:</p>
<blockquote>
<p>Das * steckt in dem einen Fall schon im [] mit drin. Falsch, eigentlich in beiden. Jedes [] enthält ein * aufgrund der folgenden Definition: <code>a[b] := *(a+b)</code> . Wenn du also <code>argv[1][i]</code> hast, ist das gleichbedeutend mit <code>*(*(argv + 1) + i)</code> (schreibt so aber keiner, nur fürs Verständnis).</p>
<p>Der Code ist trotzdem ... nicht besonders. Man versteht durch scharfes Nachdenken noch viel zu gut, was er machen soll. <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>Hm okay also die Definitionen hab ich soweit verstanden. Aber das erklärt mir irgendwie immer noch nicht, warum das * dann bei dem anderen Array wegfällt...?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062380</guid><dc:creator><![CDATA[Harry87]]></dc:creator><pubDate>Thu, 12 May 2011 17:08:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 17:29:58 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Bullshit!</p>
</blockquote>
<p>Ruhig, Mr pi bezog sich doch wahrscheinlich lediglich auf das void vor dem main.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062391</guid><dc:creator><![CDATA[yahendrik]]></dc:creator><pubDate>Thu, 12 May 2011 17:29:58 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 17:31:42 GMT]]></title><description><![CDATA[<p>Harry87 schrieb:</p>
<blockquote>
<p>Hm okay also die Definitionen hab ich soweit verstanden. Aber das erklärt mir irgendwie immer noch nicht, warum das * dann bei dem anderen Array wegfällt...?</p>
</blockquote>
<p>Dann wende die Definition doch mal auf deinen Fall an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062393</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 12 May 2011 17:31:42 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 17:33:16 GMT]]></title><description><![CDATA[<p>yahendrik schrieb:</p>
<blockquote>
<p>Ruhig, Mr pi bezog sich doch wahrscheinlich lediglich auf das void vor dem main.</p>
</blockquote>
<p>Ups, das habe ich übersehen. Ich nehme alles zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062396</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 12 May 2011 17:33:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Quelltext&#x2F;Zeigerarrays on Thu, 12 May 2011 18:46:34 GMT]]></title><description><![CDATA[<p>fDuJ2 schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Fünftens, hier die C++-Variante: <a href="http://ideone.com/nxEZM" rel="nofollow">http://ideone.com/nxEZM</a></p>
</blockquote>
<p>Wenn jemand schon etwas als C++ Variante anpreist, soll er auch die echte nehmen: <a href="http://ideone.com/fDuJ2" rel="nofollow">http://ideone.com/fDuJ2</a></p>
<p>Ein <code>std::vector</code> als Wrapper eines Arrays ist eigentlich nie sinnvoll.</p>
</blockquote>
<p>Im Normalfall will man die Argumente irgendwo speichern und damit etwas tun. <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/2062440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062440</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 12 May 2011 18:46:34 GMT</pubDate></item></channel></rss>