<?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[Doppelstern-Operator bei main-Funktion]]></title><description><![CDATA[<p>Servus,</p>
<p>meine IDE legt die main-Methode so an: int main( int argc, char** argv){ ...}</p>
<p>Was hat es genau mit diesem Doppelstern auf sich?<br />
Wie funktioniert die Umwandlung in einen std::string?<br />
Ich habe gegoogelt aber kaum was gefunden, vielleicht weil Google die Sterne als Platzhalter interpretiert - keine Ahnung, im Breymann-Buch fand ich auch nichts dazu - komisch. Danke vorab für etwas Aufklärung.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/292442/doppelstern-operator-bei-main-funktion</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 02:58:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292442.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Sep 2011 17:02:31 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 17:02:31 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>meine IDE legt die main-Methode so an: int main( int argc, char** argv){ ...}</p>
<p>Was hat es genau mit diesem Doppelstern auf sich?<br />
Wie funktioniert die Umwandlung in einen std::string?<br />
Ich habe gegoogelt aber kaum was gefunden, vielleicht weil Google die Sterne als Platzhalter interpretiert - keine Ahnung, im Breymann-Buch fand ich auch nichts dazu - komisch. Danke vorab für etwas Aufklärung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117392</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Fri, 09 Sep 2011 17:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 17:06:23 GMT]]></title><description><![CDATA[<p>Lies ein Grundlagenbuch. Das ist ein Zeiger auf einen Zeiger.</p>
<p>Umwandlung:</p>
<pre><code class="language-cpp">int main(int argc, char *argv[])
{
  std::vector&lt;std::string&gt; argumente(argv, argv+argc);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2117394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117394</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Sep 2011 17:06:23 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 17:19:57 GMT]]></title><description><![CDATA[<p>Wenn man das so verkürzen kann, kann man ja eigentlich auch</p>
<pre><code class="language-cpp">int main(int argc,char argv[][])
</code></pre>
<p>schreiben, oder ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117403</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 09 Sep 2011 17:19:57 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 17:29:32 GMT]]></title><description><![CDATA[<p>verkürzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117414</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 09 Sep 2011 17:29:32 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 17:45:41 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>Wenn man das so verkürzen kann, kann man ja eigentlich auch</p>
<pre><code class="language-cpp">int main(int argc,char argv[][])
</code></pre>
<p>schreiben, oder ? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117424</guid><dc:creator><![CDATA[SG1]]></dc:creator><pubDate>Fri, 09 Sep 2011 17:45:41 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 18:56:40 GMT]]></title><description><![CDATA[<p>Ah okay, also ist char *argv[] und char ** argv identisch?!</p>
<p>Dann kommt sollte also meine umbenannte alte main-Funktion mit so einem Konstrukt klarkommen:</p>
<pre><code class="language-cpp">char * paras[] = {
        &quot;h2rtemp&quot;,
        &quot;--runmode&quot;,
        &quot;1031&quot;,
        &quot;--pathtomsa&quot;,
        &quot;/home/joba/Desktop/1X4J_A.fas&quot;,
        &quot;--pathtodesktop&quot;,
        &quot;/home/joba/Desktop/&quot;
    };
    char * argv[] = &amp;paras;
    int argc = 7;
    int res = mainProcessArgs(argc, argv);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2117435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117435</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Fri, 09 Sep 2011 18:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 19:23:27 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">char * argv[] = &amp;paras;
</code></pre>
</blockquote>
<p>Diese Zeile muss weg.<br />
Als Paramter wird ein Array zum Pointer auf das erste Element. Ein Array von Pointern auf Chars wird also zu einem Pointer auf einen Pointer auf einen Char.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117442</guid><dc:creator><![CDATA[Wurst]]></dc:creator><pubDate>Fri, 09 Sep 2011 19:23:27 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 19:26:46 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Ah okay, also ist char *argv[] und char ** argv identisch?!</p>
</blockquote>
<p>Ja. Lies ein Grundlagenbuch.</p>
<blockquote>
<p>Dann kommt sollte also meine umbenannte alte main-Funktion mit so einem Konstrukt klarkommen:</p>
<pre><code class="language-cpp">char * paras[] = {
        &quot;h2rtemp&quot;,
        &quot;--runmode&quot;,
        &quot;1031&quot;,
        &quot;--pathtomsa&quot;,
        &quot;/home/joba/Desktop/1X4J_A.fas&quot;,
        &quot;--pathtodesktop&quot;,
        &quot;/home/joba/Desktop/&quot;
    };
    char * argv[] = &amp;paras;
    int argc = 7;
    int res = mainProcessArgs(argc, argv);
</code></pre>
</blockquote>
<p>Technische Antwort: Ja, das geht (siehe Anmerkung von Wurst). Wobei: Solche Umwandlungen wie du sie da machst sind deprecated, was dir der Compiler warnen muss.<br />
Eindruck den das insgesamt hinterlässt: <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117443</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Sep 2011 19:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 19:25:51 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Ah okay, also ist char *argv[] und char ** argv identisch?!</p>
</blockquote>
<p>Nur als Parameter einer Funktion.</p>
<p>Jay1980 schrieb:</p>
<blockquote>
<p>Dann kommt sollte also meine umbenannte alte main-Funktion mit so einem Konstrukt klarkommen:</p>
<pre><code class="language-cpp">char * paras[] = {
        &quot;h2rtemp&quot;,
        &quot;--runmode&quot;,
        &quot;1031&quot;,
        &quot;--pathtomsa&quot;,
        &quot;/home/joba/Desktop/1X4J_A.fas&quot;,
        &quot;--pathtodesktop&quot;,
        &quot;/home/joba/Desktop/&quot;
    };
    char * argv[] = &amp;paras;
    int argc = 7;
    int res = mainProcessArgs(argc, argv);
</code></pre>
</blockquote>
<p>Natürlich nicht. Solche Verallgemeinerungen sind laienhaft.<br />
Ein Array ist ein unmodifizierbarer lvalue, dem kann man nichts zuweisen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117444</guid><dc:creator><![CDATA[Wutz]]></dc:creator><pubDate>Fri, 09 Sep 2011 19:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 19:55:51 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<p>Ah okay, also ist char *argv[] und char ** argv identisch?!</p>
</blockquote>
<p>Ein Array ist kein Zeiger, nein. Das ist nur ein Sonderfall bei <em>Funktionsparametern</em>. Wenn ein <em>Funktionsparameter</em> vom Typ T[] oder T[N] definiert wird, dann ersetzt der Compiler das automatisch durch ein *T -- egal, was T ist. Das hat man so geregelt, weil man rohe Arrays eh nicht (per Kopie) an Funtionen übergeben kann und weil man glaubte, dass das irgendwie mit der Ersetzung praktisch wäre und dass Anfäger noch nicht genug verwirrt sind.</p>
<p>Jay1980 schrieb:</p>
<blockquote>
<p>Dann kommt sollte also meine umbenannte alte main-Funktion mit so einem Konstrukt klarkommen:</p>
<pre><code class="language-cpp">char * paras[] = {
        &quot;h2rtemp&quot;,
        &quot;--runmode&quot;,
        &quot;1031&quot;,
        &quot;--pathtomsa&quot;,
        &quot;/home/joba/Desktop/1X4J_A.fas&quot;,
        &quot;--pathtodesktop&quot;,
        &quot;/home/joba/Desktop/&quot;
    };
    char * argv[] = &amp;paras;
    int argc = 7;
    int res = mainProcessArgs(argc, argv);
</code></pre>
</blockquote>
<p>Das gibt erstmal ein paar Warnungen (sollte es geben, wenn nicht, erhöhe die Warnstufe), weil Du hier die Elemente eines Arrays von Zeigern auf nicht-const char mit konstanten Stringliteralen initialisierst. Außerdem ergibt die darauf folgende Zeile keinen Sinn. Du deklarierst argv als Array, versuchst es aber mit einem Zeiger zu initialisieren. Das ist Unfug. Das hätte</p>
<pre><code class="language-cpp">char **argv = &amp;paras[0]; // oder einfach nur paras ohne &amp; und [0]
</code></pre>
<p>heißen müssen -- kannst Du dir aber auch ganz sparen und einfach</p>
<pre><code class="language-cpp">int res = mainProcessArgs(argc,paras);
</code></pre>
<p>schreiben.</p>
<p>Hast Du etwa erwartet, dass das Array/Zeiger-Thema intuitiv wäre? Willkommen in der hässlichen C-Welt. Wie das genau funktioniert, kann man sich gar nicht selbst zusammenreimen. Das muss man irgendwo gelesen haben. Vorzugsweise in einem schlauen Buch. (hint hint!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117454</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 09 Sep 2011 19:55:51 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 20:11:46 GMT]]></title><description><![CDATA[<p>Puh, ich lese gerade schon nach (habe ich vorher auch schon, aber schlau bin ich daraus noch nicht geworden). Ich hoffe darauf, dass mir einer mein Beispiel mit den richtigen Sternchen ausfüllt und ich es dann kapiere. Generell hoffe ich ja, dass ich diese char-Arrays nur ganz ganz selten antreffe. Danke bisher für die Tipps - mein Buch ist der C++-Programmierer von Breymann, das ist doch was ordentliches ... ich warte halt noch auf den Aha-Effekt.</p>
<p>Aktuell schaut es so aus:</p>
<pre><code class="language-cpp">// int mainProcessArgs( int argc, char** argv);
    int argc = 7;
    char ** argv;
    char par1[] = &quot;h2rtemp&quot;;
    char par2[] = &quot;--runmode&quot;;
    char par3[] = &quot;1031&quot;;
    char par4[] = &quot;--pathtomsa&quot;;
    char par5[] = &quot;/home/joba/Desktop/1X4J_A.fas&quot;;
    char par6[] = &quot;--pathtodesktop&quot;;
    char par7[] = &quot;/home/joba/Desktop/&quot;;
    argv[0] = par1;
    argv[1] = par2;
    argv[2] = par3;
    argv[3] = par4;
    argv[4] = par5;
    argv[5] = par6;
    argv[6] = par7;
    int res = mainProcessArgs(argc, argv);
    return res;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2117457</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117457</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Fri, 09 Sep 2011 20:11:46 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 20:22:54 GMT]]></title><description><![CDATA[<p>Mach es so, wie du es vorher hattest, nur mit der einen Zeile weg:</p>
<pre><code class="language-cpp">char * paras[] = {
        &quot;h2rtemp&quot;,
        &quot;--runmode&quot;,
        &quot;1031&quot;,
        &quot;--pathtomsa&quot;,
        &quot;/home/joba/Desktop/1X4J_A.fas&quot;,
        &quot;--pathtodesktop&quot;,
        &quot;/home/joba/Desktop/&quot;
    };
    int argc = 7;
    int res = mainProcessArgs(argc, paras);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2117460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117460</guid><dc:creator><![CDATA[Wurst]]></dc:creator><pubDate>Fri, 09 Sep 2011 20:22:54 GMT</pubDate></item><item><title><![CDATA[Reply to Doppelstern-Operator bei main-Funktion on Fri, 09 Sep 2011 21:36:00 GMT]]></title><description><![CDATA[<p>Jay1980 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// int mainProcessArgs( int argc, char** argv);

    int argc = 7;
    char ** argv;
    char par1[] = &quot;h2rtemp&quot;;
    char par2[] = &quot;--runmode&quot;;
    char par3[] = &quot;1031&quot;;
    char par4[] = &quot;--pathtomsa&quot;;
    char par5[] = &quot;/home/joba/Desktop/1X4J_A.fas&quot;;
    char par6[] = &quot;--pathtodesktop&quot;;
    char par7[] = &quot;/home/joba/Desktop/&quot;;
    argv[0] = par1;
    argv[1] = par2;
    argv[2] = par3;
    argv[3] = par4;
    argv[4] = par5;
    argv[5] = par6;
    argv[6] = par7;
    int res = mainProcessArgs(argc, argv);
    return res;
</code></pre>
</blockquote>
<p>argv hast Du gar nicht initialisiert. Wo zeigt denn argv hin? Wo landen denn die Start-Adressen der einzelnen Wörter bei den sieben Zuweisungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2117473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2117473</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Fri, 09 Sep 2011 21:36:00 GMT</pubDate></item></channel></rss>