<?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[Konstanten neu definieren]]></title><description><![CDATA[<p>Hallo allerseits</p>
<p>Ich hab eine für mich aussergewöhnliche Frage.</p>
<p>Ist es möglich eine Konstante zu definieren? Ich hoffe es erklärt mein Vorhaben.</p>
<p>Danke für die Hilfe</p>
<p>wachs</p>
<pre><code>//array.cpp
int _ARRAY_SIZE;

//Lässt sich eine Konstante mit einer 
//präprocessor directive definieren?
#if ARRAY_SIZE  _ARRAY_SIZE * 2
#undef ARRAY_SIZE
#define ARRAY_SIZE _ARRAY_SIZE * 2
#endif

int *entry_func(const int *Arr,int &amp;arr_size)
{
	_ARRAY_SIZE = arr_size;
	static int array_new[ARRAY_SIZE];

	arr_size *= 2;
	//Mach was ....

	return array_new;
}
</code></pre>
<pre><code>//main.cpp
int main()
{
	int arr_size = 4;
	int arr[] = {1, 2, 3, 4};
	int *arr_new = entry_func(arr, arr_size);

	//usw.

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/338785/konstanten-neu-definieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 04:37:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338785.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Jul 2016 09:56:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstanten neu definieren on Mon, 11 Jul 2016 09:56:28 GMT]]></title><description><![CDATA[<p>Hallo allerseits</p>
<p>Ich hab eine für mich aussergewöhnliche Frage.</p>
<p>Ist es möglich eine Konstante zu definieren? Ich hoffe es erklärt mein Vorhaben.</p>
<p>Danke für die Hilfe</p>
<p>wachs</p>
<pre><code>//array.cpp
int _ARRAY_SIZE;

//Lässt sich eine Konstante mit einer 
//präprocessor directive definieren?
#if ARRAY_SIZE  _ARRAY_SIZE * 2
#undef ARRAY_SIZE
#define ARRAY_SIZE _ARRAY_SIZE * 2
#endif

int *entry_func(const int *Arr,int &amp;arr_size)
{
	_ARRAY_SIZE = arr_size;
	static int array_new[ARRAY_SIZE];

	arr_size *= 2;
	//Mach was ....

	return array_new;
}
</code></pre>
<pre><code>//main.cpp
int main()
{
	int arr_size = 4;
	int arr[] = {1, 2, 3, 4};
	int *arr_new = entry_func(arr, arr_size);

	//usw.

	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2501826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501826</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 11 Jul 2016 09:56:28 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten neu definieren on Mon, 11 Jul 2016 12:21:27 GMT]]></title><description><![CDATA[<p>ja, es ist möglich, eine konstante zu definieren, also einen wert, der schon zur compile-zeit feststeht und sich nicht mehr ändern wird.</p>
<pre><code class="language-cpp">int main ()
  constexpr int SIZE = 42;
  std::array&lt;int, SIZE&gt; array;
}
</code></pre>
<p>wenn du den präprozessor dafür verwendest, dann beachte, dass dieser ein &quot;einfacher&quot; textersetzer ist. du verlierst schon während dem kompilieren jegliche information darüber, was &quot;hinter&quot; der konstante steckt. du kannst z.b. die präprozessor-&quot;konstante&quot; nicht so verwenden, wie normale constexpr ints.</p>
<pre><code class="language-cpp">#define KONSTANTE 42

constexpr int Konstante = 42;

void foo () {
   const int* zeiger = &amp;KONSTANTE; //falsch, &quot;42&quot; ist kein objekt.
   const int* richtig = &amp;Konstante;
}
</code></pre>
<p>der unterschied zwischen constexpr und const ist, dass du mit constexpr ganz explizit sagst, dass du dein objekt als compile-time-konstante verwenden willst. bei const ist das nicht immer/automatisch der fall. mit &quot;const&quot; versprichst nur _du_ als programmierer, dass du den wert einer variablen nicht ändern wirst.</p>
<p>stiltipp:<br />
verwende constexpr für diese art von konstante, verwende std::array anstelle von plain-old-arrays für arrays von konstanter größe.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;array&gt;
using namespace std;

template &lt;int, size_t Size&gt;
std::array&lt;int, Size&gt; entry_func(std::array&lt;int, Size&gt; array) //kopiere das übergebene array
{
    for(auto&amp; i: array) i *= 2; //multipliziere jedes element mit 2
    return array; //gib das neue array zurück
}

//main.cpp
int main()
{
    constexpr int arr_size = 4;
    std::array&lt;int, arr_size&gt; arr = {1, 2, 3, 4};
    std::array&lt;int, arr_size&gt; arr_new = entry_func(arr);
}
</code></pre>
<p>dieser code ist *nicht* äquivalent zu deinem code, aber ich vermute, dass du das eigentlich so wolltest. hast du einen bestimmten grund, das von entry_func produzierte array als static zu deklarieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501841</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Mon, 11 Jul 2016 12:21:27 GMT</pubDate></item><item><title><![CDATA[Reply to Konstanten neu definieren on Mon, 11 Jul 2016 13:45:05 GMT]]></title><description><![CDATA[<p>Guten Tag dove</p>
<p>Danke für die ausführliche Erklärung.</p>
<p>Ich habs jetzt total umgeschrieben, und anders gelöst. Ist aber für mich trotzdem sehr interessant sowas zu wissen.</p>
<p>Einen bestimmten Grund gibt es nicht. Ich hab mich nur gefragt, ob so was überhaupt möglich ist.</p>
<p>Die Funktion entry_func(); nutze ich nicht nur um eine neue Array zu erzeugen in dem Sinne, sondern ich fülle sie komplett mit Zahlen aus Berechnungen.</p>
<p>Ich weiss, ein std::array&lt;T, arr_size&gt; oder ein new oder sogar ein std::vector wären da weniger kompliziert und genau so gut gelöst.</p>
<p>Gut zu wissen. Danke. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>wachs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2501862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2501862</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 11 Jul 2016 13:45:05 GMT</pubDate></item></channel></rss>