<?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[const Array mit Variablen initialisieren]]></title><description><![CDATA[<p>Hallo!</p>
<p>Folgendes Problem: (ich schwanke gerade zwischen &quot;bestimmt ganz leicht&quot; und &quot;geht das überhaupt?&quot;)</p>
<p>Ich programiere gerade mit VisualDSP++ (Compiler für Signalprozessoren) und der zugehörigen Run-TimeLibary. Eine der Funktionen verlangt ein Argument der folgenden Form: &quot;const float coeffs[]&quot;. (Soll heißen, er will einen Zeiger auf ein konstantes Array). Die verlangten Koeffizienten in coeffs kann ich allerdings erst zu Laufzeit ermitteln, wenn sie einmal da sind werden sie aber nicht mehr verändert, in sofern ist &quot;const&quot; schon richtig. Wie krieg ich meine berechneten Koeffizienten aus einem normalen Array am dümmsten in ein konstantes Array? Bei der Initialisierung kann ich sie ja nur explizit angeben, das wäre bei 1024 Werten aber etwas unkomfortabel.</p>
<p>Danke schonmal <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>Fledi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/280780/const-array-mit-variablen-initialisieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 00:17:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/280780.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Jan 2011 10:12:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 10:12:13 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Folgendes Problem: (ich schwanke gerade zwischen &quot;bestimmt ganz leicht&quot; und &quot;geht das überhaupt?&quot;)</p>
<p>Ich programiere gerade mit VisualDSP++ (Compiler für Signalprozessoren) und der zugehörigen Run-TimeLibary. Eine der Funktionen verlangt ein Argument der folgenden Form: &quot;const float coeffs[]&quot;. (Soll heißen, er will einen Zeiger auf ein konstantes Array). Die verlangten Koeffizienten in coeffs kann ich allerdings erst zu Laufzeit ermitteln, wenn sie einmal da sind werden sie aber nicht mehr verändert, in sofern ist &quot;const&quot; schon richtig. Wie krieg ich meine berechneten Koeffizienten aus einem normalen Array am dümmsten in ein konstantes Array? Bei der Initialisierung kann ich sie ja nur explizit angeben, das wäre bei 1024 Werten aber etwas unkomfortabel.</p>
<p>Danke schonmal <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>Fledi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009648</guid><dc:creator><![CDATA[Fledi]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:12:13 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 10:19:55 GMT]]></title><description><![CDATA[<blockquote>
<p>&quot;const float coeffs[]&quot;. (Soll heißen, er will einen Zeiger auf ein konstantes Array</p>
</blockquote>
<p>Nein das heißt es wird ein Array übergeben, welches du in der Funktion nicht verändern darfst. Eigentlich wird auch nur ein Zeiger auf ein Array übergeben. Und diesen kannst du sogar verändern, nur die Werte hinter dem Zeiger nicht. Deswegen finde ich diese Verwendung von const auch sehr naiv.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009652</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:19:55 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 10:35:27 GMT]]></title><description><![CDATA[<p>huhu,</p>
<p>irgendwie habe ich nicht ganz verstanden was du genau erreichen willst. Kannst du dein Problem nochmals in andere Worte fassen?</p>
<p>gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009661</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:35:27 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 10:39:39 GMT]]></title><description><![CDATA[<p>Ich kann in der Funktion sowieso nix ändern, die Funktion ist ja nicht von mir, sondern gehört zur Run-Time Libary. (Hatte ich wohl nicht explizit erwähnt, sorry dafür). Ob ich das jetzt schön finde oder nicht, ich muss nunmal damit arbeiten.</p>
<p>Ich muss ihm dafür aber eben zwingendermaßen ein Array des Datentypes const float übergeben(bzw. den Zeiger darauf) sonst meckert der Compiler. Und ich hab (ebenfalls zwingendermaßen) ein Array des Datentypes float. Die Frage ist: Wie mach ich aus dem einen das andere?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009664</guid><dc:creator><![CDATA[Fledi]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:39:39 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 10:41:26 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Deswegen finde ich diese Verwendung von const auch sehr naiv.</p>
</blockquote>
<p><code>[ ]</code> Du verstehst die Konzepte hinter const</p>
<p>Paul Müller schrieb:</p>
<blockquote>
<p>Und diesen kannst du sogar verändern, nur die Werte hinter dem Zeiger nicht.</p>
</blockquote>
<p><code>[ ]</code> Du verstehst den Begriff der Wertübergabe<br />
<code>[ ]</code> Du hast schon einmal etwas von <code>const_cast</code> gehört</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19879">@fledi</a>: Wenn du ein normales (nicht konstantes) Array übergibst, passt das schon. Ein nicht konstantes Array ist immer auch ein konstantes. Nur umgekehrt hast du ein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009666</guid><dc:creator><![CDATA[checklist]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:41:26 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 10:53:05 GMT]]></title><description><![CDATA[<p>Fledi schrieb:</p>
<blockquote>
<p>Ich muss ihm dafür aber eben zwingendermaßen ein Array des Datentypes const float übergeben(bzw. den Zeiger darauf) sonst meckert der Compiler. Und ich hab (ebenfalls zwingendermaßen) ein Array des Datentypes float. Die Frage ist: Wie mach ich aus dem einen das andere?</p>
</blockquote>
<p>Das geht automatisch:</p>
<pre><code class="language-cpp">void foo(const float coeffs[]) {}

int main() {
   float arr[5]= {.1,.2,.3,.4,.5};
   foo(arr);
}
</code></pre>
<p>foo sagt nur, dass es coeffs nicht ändert. Du kannst ihm aber natürlich ein array geben, dass DU ändern kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009668</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 10:58:27 GMT]]></title><description><![CDATA[<p>checklist schrieb:</p>
<blockquote>
<p>Paul Müller schrieb:</p>
<blockquote>
<p>Deswegen finde ich diese Verwendung von const auch sehr naiv.</p>
</blockquote>
<p><code>[ ]</code> Du verstehst die Konzepte hinter const</p>
</blockquote>
<p>Scheinbar besser als du. Deine Aussage bestätigt mich aber in meiner Vermutung, dass vielen nicht klar ist, was sie eigentlich damit bewirken.</p>
<p>checklist schrieb:</p>
<blockquote>
<p>Paul Müller schrieb:</p>
<blockquote>
<p>Und diesen kannst du sogar verändern, nur die Werte hinter dem Zeiger nicht.</p>
</blockquote>
<p><code>[ ]</code> Du verstehst den Begriff der Wertübergabe</p>
</blockquote>
<p>Im Gegensatz zu dir schon. Der Wert ist vom Typ nicht konstanter Zeiger auf konstanten Float. Und deswegen kannst du den Zeiger ändern, aber nicht den Wert.<br />
Ich verstehe auch nicht, was du mir eigentlich mitteilen willst.</p>
<p>checklist schrieb:</p>
<blockquote>
<p><code>[ ]</code> Du hast schon einmal etwas von <code>const_cast</code> gehört</p>
</blockquote>
<p>Das war nicht die Frage. Natürlich kann man jeden Datentyp casten bis es qualmt. Nur ob das Sinn macht ist eine andere Frage. Wenn er seine Koeffizienten aus einem ROM holt bringt dir auch dein Cast nichts mehr.</p>
<p>Noch was zum Nachdenken für dich:</p>
<pre><code class="language-cpp">/*
gcc -c -Wall -Wextra -pedantic const.c -o /tmp/const.o
*/

int main(void)
{
          int               a     ; /*   I */
          int const         b =  a; /*  II */
          int const *       c     ; /* III */
          int const * const d = &amp;a; /*  VI */
          int       * const e = &amp;a; /*   V */
    const int               f =  a; /*  II */
    const int       *       g     ; /* III */
    const int       * const h = &amp;a; /*  VI */

    a = 42;
    (void)b;
    c = &amp;a;
    (void)d;
    (void)e;
    (void)f;
    g = &amp;a;
    (void)h;

    /*
    Wie ersichtlich, sind alle Deklarationen mit const-Qualifizierer vor dem Bezeichner konstant.
    Diese Regel wird bei f durch die Schreibweise von const vor dem Typen verletzt.
    */

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2009672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009672</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 10:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 11:28:50 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>checklist schrieb:</p>
<blockquote>
<p>Paul Müller schrieb:</p>
<blockquote>
<p>Und diesen kannst du sogar verändern, nur die Werte hinter dem Zeiger nicht.</p>
</blockquote>
<p><code>[ ]</code> Du verstehst den Begriff der Wertübergabe</p>
</blockquote>
<p>Im Gegensatz zu dir schon. Der Wert ist vom Typ nicht konstanter Zeiger auf konstanten Float. Und deswegen kannst du den Zeiger ändern, aber nicht den Wert.<br />
Ich verstehe auch nicht, was du mir eigentlich mitteilen willst.</p>
</blockquote>
<p>Klar kannst du den Zeiger verändern, aber der Aufrufer bemerkt davon gar nichts, weil du ihn nicht als Referenz übergibst. Wenn ein <code>float *const coeffs</code> verlang wäre, dann ist das naiv (es behütet dich nur vor Flüchtigkeitsfehlern innerhalb der Funktion). Aber um das geht es ja nicht.</p>
<p>Ich gebe zu, deine Aufgabe stellt mich vor unlösbare Rätsel: Warum verrätst du die einzige Schwierigkeit schon durch Nummerierung? Warum codest du nicht direkt in tmp? Was hat das für einen Bezug zum Problem? Wo wird eine Regel verletzt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009683</guid><dc:creator><![CDATA[checklist]]></dc:creator><pubDate>Fri, 21 Jan 2011 11:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 12:08:43 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Wie ersichtlich, sind alle Deklarationen mit const-Qualifizierer vor dem Bezeichner konstant.<br />
Diese Regel wird bei f durch die Schreibweise von const vor dem Typen verletzt.</p>
</blockquote>
<p>Ich bin zwar auch fan von int const gegenüber const int - aber da wird nichts verletzt.</p>
<p>Du liest es einfach falsch. Richtig rum liest man von rechts nach links:<br />
const int</p>
<p>integer (, der) konstant (ist)<br />
int const<br />
konstanter integer</p>
<p>mit Zeigern gehts auch easy:<br />
const int * const<br />
konstanter zeiger auf integer (, der) konstant (ist)</p>
<p>int const * const<br />
ist schöner, weil man so liest:<br />
konstanter zeiger auf konstanten integer</p>
<p>aber falsch oder kompliziert oder so ist hier nichts. Einfach von rechts nach links lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009691</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 21 Jan 2011 12:08:43 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 12:21:39 GMT]]></title><description><![CDATA[<p>checklist schrieb:</p>
<blockquote>
<p>Klar kannst du den Zeiger verändern, aber der Aufrufer bemerkt davon gar nichts, weil du ihn nicht als Referenz übergibst. Wenn ein <code>float *const coeffs</code> verlang wäre, dann ist das naiv (es behütet dich nur vor Flüchtigkeitsfehlern innerhalb der Funktion). Aber um das geht es ja nicht.</p>
</blockquote>
<p>Dir scheint nicht ganz klar zu sein, welche Erwartungen im Allgemeinen an ein const gestellt werden. Vielen ist eben nicht klar, dass damit nicht der ganze Ausdruck konstant wird. Ganz zu schweigen davon, was bei der Parameterübergabe passiert. Und das sind nicht nur reine Anfängerfehler. Auch Leute die schon länger mit C oder C++ programmieren, wissen dies nicht. Umso wichtiger ist es einen Anfänger darauf hinzuweisen. Und ihn nicht schnell zu den Unwissenden mit abzustellen.</p>
<p>checklist schrieb:</p>
<blockquote>
<p>Ich gebe zu, deine Aufgabe stellt mich vor unlösbare Rätsel: Warum verrätst du die einzige Schwierigkeit schon durch Nummerierung?</p>
</blockquote>
<p>Weil es kein Rätsel ist. Wenn es dir aber Fragen aufwirft, so soll es dir helfen diese zu lösen.</p>
<p>checklist schrieb:</p>
<blockquote>
<p>Warum codest du nicht direkt in tmp?</p>
</blockquote>
<p>In was für ein temp und wozu? Hier geht es um Zuweisbar oder nicht Zuweisbar, und nicht um 100€ bei Wer wird Millionär.<br />
Zugegeben man hätte noch ein paar mehr Spielereien mit einbauen können, um alle Fälle zu zeigen. Du darfst aber gerne selber rum experimentieren.</p>
<p>checklist schrieb:</p>
<blockquote>
<p>Wo wird eine Regel verletzt?</p>
</blockquote>
<p>Wie man sieht schaust du nur halb hin. Der Text besteht aus zwei Sätzen.</p>
<p>Die aufgestellte Regel heißt:<br />
&quot;Ein Bezeichner ist konstant, wenn vor ihm const steht. Das funktioniert natürlich nur solange const hinter der Typenkennzeichnung steht.&quot;<br />
Ist da jetzt etwas falsch dran oder unverständlich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009697</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 12:21:39 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 12:46:50 GMT]]></title><description><![CDATA[<p>Btw, wer es noch nicht kennt: <a href="http://www.cdecl.org/" rel="nofollow">http://www.cdecl.org/</a> . C gibberish <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/2194.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--left-right_arrow"
      title=":left-right_arrow:"
      alt="↔"
    /> English</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009714</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 12:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 13:07:09 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Die aufgestellte Regel heißt:<br />
&quot;Ein Bezeichner ist konstant, wenn vor ihm const steht. Das funktioniert natürlich nur solange const hinter der Typenkennzeichnung steht.&quot;<br />
Ist da jetzt etwas falsch dran oder unverständlich?</p>
</blockquote>
<p>Ja und wessen Name auf r endet, der hat immer recht. Nur Paul Müller verletzt diese Regel. :p</p>
<p>Deine &quot;Regel&quot; ist einfach falsch. Das ist das Problem.</p>
<p>Wie gesagt: man liest von rechts nach links (bzw von innen nach aussen, wenn es klammern gibt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009720</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 21 Jan 2011 13:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 13:35:18 GMT]]></title><description><![CDATA[<p>Die Regel wäre falsch, wenn sie nicht stimmen würde. Sie schließt aber nicht aus, dass du const nicht davor schreiben darfst. Insofern macht sie also Sinn, dass man sagen kann, der Bezeichner ist <strong>immer</strong> konstant, wenn direkt const davor steht. Diese Eindeutigkeit ist aber bei einem const am Anfang nicht gegeben. Und zwar weder für den Bezeichner, noch für den Typ. Da es lediglich eine Ausnahme ist, die es erlaubt dort const davor zu schreiben.<br />
Ich hätte aber auch einfach den Kommentar aus dem Codeschnipsel vorher löschen können, dann gäbe es diese Diskussion nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009737</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 13:35:18 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 13:40:15 GMT]]></title><description><![CDATA[<p>Huch, was hab ich da angerichtet? Nicht streiten, bitte <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="🙄"
    /> Mein Problem lag an einer anderen Stelle, ich hab die Compilermeldung nur falsch interpretiert. Ihr habt trotzdem geholfen, sonst hätte ich noch ewig gesucht.<br />
Jetzt hab ich endlich ne Echtzeitfilterbank <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 schön!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009738</guid><dc:creator><![CDATA[Fledi]]></dc:creator><pubDate>Fri, 21 Jan 2011 13:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 13:49:22 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Die Regel wäre falsch, wenn sie nicht stimmen würde. Sie schließt aber nicht aus, dass du const nicht davor schreiben darfst. Insofern macht sie also Sinn, dass man sagen kann, der Bezeichner ist <strong>immer</strong> konstant, wenn direkt const davor steht.</p>
</blockquote>
<p>Nur der umkehrschluss ist nicht korrekt.<br />
Die variable ist zwar immer konstant wenn direkt links neben ihr const steht, aber sie ist noch lange nicht immer nicht-const wenn das nicht der Fall ist.</p>
<p>Die richtige Regel ist: von rechts nach links lesen (bzw von innen nach aussen, wenn es klammern gibt). Diese Regel ist immer korrekt.</p>
<p>Deine Regel ist zB in folgendem Code falsch:</p>
<pre><code class="language-cpp">int t(int const foo[]) {
  ++foo;
  return *foo;
}
</code></pre>
<p>foo ist nicht const. foo ist ein zeiger auf konstante ints.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009745</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 21 Jan 2011 13:49:22 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 14:15:29 GMT]]></title><description><![CDATA[<p>Das Problem liegt aber eher an deiner unkonventionellen Art einen Zeiger zu deklarieren, als an meiner Merkregel. Die zwar genauso valide ist, wie const davor zu schreiben, aber diese inkonsistente Syntax trägt nicht gerade zur Erleuchtung bei. Ich muss auch sagen, dass ich diese Art der Zeigerübergabe mittlerweile soweit verdrängt habe, dass ich neulich erst mal nachsehen musste, was das eigentlich sein soll.<br />
Ich will hier aber niemanden bekehren, sich eindeutig auszudrücken, was sonst eigentlich immer die Mathematiker gerne machen. Der Code-Schnipsel sollte lediglich zeigen, dass ein Wert nicht gleich const ist, nur weil const davor steht.<br />
Btw, hat dein Beispiel einen weiteren Nachteil. Es ist unmöglich den Zeiger konstant zu bekommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009756</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009756</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 14:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 14:52:18 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Das Problem liegt aber eher an deiner unkonventionellen Art einen Zeiger zu deklarieren, als an meiner Merkregel.</p>
</blockquote>
<p>Oder aber die Merkregel ist Schrott?<br />
Es gibt ja massig Ausnahmen was ich alles nicht darf damit die Merkregel passt...</p>
<p>Ich finde ebenfalls int const besser als const int. Aber das ändert nichts daran dass man C++ Code korrekt lesen können muss und deine &quot;Regel&quot; passt da einfach nicht rein. Viel einfacher ist es, es richtig zu lernen: von rechts nach links lesen. So lassen sich auch komplexe Typen lesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009770</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 21 Jan 2011 14:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 15:18:18 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<blockquote>
<p>&quot;const float coeffs[]&quot;. (Soll heißen, er will einen Zeiger auf ein konstantes Array</p>
</blockquote>
<p>Nein das heißt es wird ein Array übergeben, welches du in der Funktion nicht verändern darfst. Eigentlich wird auch nur ein Zeiger auf ein Array übergeben. Und diesen kannst du sogar verändern, nur die Werte hinter dem Zeiger nicht. Deswegen finde ich diese Verwendung von const auch sehr naiv.</p>
</blockquote>
<p>Warum? Dem Aufrufer wird garantiert, dass (aus seiner Sicht) nichts geändert wird, was er der Funktion übergibt. Was ist daran naiv?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009776</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 21 Jan 2011 15:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 15:36:50 GMT]]></title><description><![CDATA[<blockquote>
<p>Oder aber die Merkregel ist Schrott?</p>
</blockquote>
<p>Ja, okay du hast Recht.</p>
<p>Ich hasse es, wie in diesem Forum all meine Falschaussagen auseinandergenommen werden... Vielleicht sollte ich mir einen neuen Nick suchen. Unter diesem hier nimmt mich ja sowieso keiner mehr ernst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009781</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 15:36:50 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 15:47:49 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Ich hasse es, wie in diesem Forum all meine Falschaussagen auseinandergenommen werden...</p>
</blockquote>
<p>Das ist nichts persönliches, es liegt eher an dem &quot;Falsch&quot; in den Aussagen. Man ist hier eben sehr penibel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009789</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 21 Jan 2011 15:47:49 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 15:53:19 GMT]]></title><description><![CDATA[<p>Das war nicht ich, das hat jemand anderes geschrieben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Vielleicht sollte ich mich mal registrieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009799</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 15:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 19:11:31 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Das war nicht ich, das hat jemand anderes geschrieben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /><br />
Vielleicht sollte ich mich mal registrieren.</p>
</blockquote>
<p>Ist schon interessant, dass du weißt, dass das jemand anderes geschrieben hat? Könnte das vielleicht daran liegen, dass du der Nickdieb bist und den Beitrag doch geschrieben hast? Es ist eigentlich Schade, dass es Leute gibt, die hier das Niveau des Golem-Forum einführen möchten. Als ob es nicht schon genügend Spielwiesen für sinnlose Trollerei im Internet gäbe. Ich werde mich hier wohl dann zurück ziehen müssen, weil ich mich lächerlich mache. Aber mache ich mich den wirklich lächerlich, wenn hier ein Troll in meinem Namen postet? Wer weiß, ob nicht du der bist, der die falschen Aussagen streut? Ich finde es Schade, weil ich sicher den einen oder anderen helfen konnte, so hoffe ich. Und btw der echte Paul Müller hat nichts dagegen das seine falschen Aussagen korrigiert werden. Deswegen schreibt man ja auch mal dumme Dinge, damit man lernen kann, wie es richtig geht.<br />
Also tschüss Paul Müller, hallo Random-Nicks. Ist natürlich Mist für die, die gerne wissen möchten wer ihr Gegenüber ist.<br />
Der letzte ernst gemeinte Beitrag, ist der von 15:15. Wobei man an den beiden letzten Inhaltsleeren Posts auch erkennen kann, dass es sich um einen übereifrigen Troll handeln muss.<br />
Und nein ich registriere mich nicht deswegen, weil meine eigenen Fragen verschwindend gering waren und ich bei meinen Ansprechpartnern aus Fleisch und Blut keine Trolle befürchten muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009911</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 19:43:23 GMT]]></title><description><![CDATA[<p>Paul Müller schrieb:</p>
<blockquote>
<p>Aber mache ich mich den wirklich lächerlich, wenn hier ein Troll in meinem Namen postet?</p>
</blockquote>
<p>Ich wuesste nicht warum.<br />
Die Gefahr des Nick-Klau besteht eben wenn man sich nicht registriert. Sehe da aber kein Problem. Wenn du Leuten helfen willst, interessante Diskussionen fuehren und vielleicht auch etwas lernen - warum sollte da ein Name eine Rolle spielen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009945</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 21 Jan 2011 19:43:23 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 20:03:39 GMT]]></title><description><![CDATA[<p>Prinzipiell ist der Name egal. Nur zwei Personen mit dem selben Namen sind verwirrend.<br />
Aber um noch mal auf &quot;meine Merkregel&quot; zurück zu kommen. Mich würde dann doch stark interessieren, welche Fälle es noch gibt, außer diese Array-Deklaration?<br />
Mir ist es eigentlich auch wurscht was andere davon halten. Man sieht es nur recht selten, eigentlich nie, dass die anderen Teile des Datentypen konstant gemacht werden können, bzw bei Bedarf gemacht werden müssen. Statt dessen sieht man es umso häufiger, dass man ein const davor schreibt und hofft, dass sich die Sache damit erledigt hat.<br />
Und was die Sache mit der Lächerlichkeit betrifft. Wenns dich nicht interessiert, dann ignoriere es einfach. Wenns dich erheitert dann erfreu dich dran. Aber mit sinnlosem Nickklau, wirst du weder wissen, ob du mich ignorieren sollst, dich erheitern kannst oder etwas lernen kannst. Das ist eben das Los der sinnbefreiten Trollerei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009951</guid><dc:creator><![CDATA[Paul Müller]]></dc:creator><pubDate>Fri, 21 Jan 2011 20:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 20:09:34 GMT]]></title><description><![CDATA[<p><a href="http://www.parashift.com/c++-faq-lite/const-correctness.html" rel="nofollow">http://www.parashift.com/c++-faq-lite/const-correctness.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009954</guid><dc:creator><![CDATA[zeusosc]]></dc:creator><pubDate>Fri, 21 Jan 2011 20:09:34 GMT</pubDate></item><item><title><![CDATA[Reply to const Array mit Variablen initialisieren on Fri, 21 Jan 2011 20:40:53 GMT]]></title><description><![CDATA[<p>Ist so eine Merkregel überhaupt nötig/sinnvoll?</p>
<p>Im Grunde genommen gibt es doch nur drei Variablentypen (weiß nicht wie ich die besser unterscheiden kann):<br />
1. &quot;normale&quot; Variablen, also z.B. <code>int a; double b; MyClass c;</code><br />
2. Zeigervariablen, also z.B. <code>const int* a; double * const b;</code><br />
3. Referenzen, also z.B. <code>const int&amp; a = 1; MyClass&amp; b = MyClass()</code></p>
<p>1. und 3. verhalten sich im Bezug auf <code>const</code> exakt gleich; man kann sich auch gar nicht vertun, weil es nur eine Semantik gibt.<br />
Bei 2. gibt es zwei Möglichkeiten, wobei man beide sehr leicht unterscheiden kann:</p>
<ul>
<li><code>const</code> vor dem Sternchen -&gt; Zeiger zeigt auf konstantes Objekt</li>
<li><code>const</code> nach dem Sternchen -&gt; Zeiger selbst ist konstant</li>
</ul>
<p>Also wozu irgendwelche Merkregeln, wenn es doch beim entscheidenen Fall 2. (der einzige, bei dem man etwas falsch machen könnte) sowieso nur zwei Möglichkeiten gibt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2009959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2009959</guid><dc:creator><![CDATA[Merkregel]]></dc:creator><pubDate>Fri, 21 Jan 2011 20:40:53 GMT</pubDate></item></channel></rss>