<?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[Alle variablen einer struct auf 0 setzen]]></title><description><![CDATA[<p>Ich möchte gerne alle variablen eine Struct (die nur aus int variablen besteht) auf 0 setzen, ohne so vorgehen zu müssen:</p>
<pre><code class="language-cpp">struct myStruct
{
	int a, b, c;
	int aa, bb, cc;
	// ...
} ms;

// ...

void Irgendwas(void)
{
	// ...
	if (aufNull == true)
	{
		ms.a = ms.b = ms.c = 0;
		// ...
	}
	// ...
}
</code></pre>
<p>also auf jeden wert einzeln zugreifen müssen... Wenn es dazu eine winapi o.ä. gibt, oder es nur mit windows funktioniert, dann bitte verschieben (programmiere unter windows)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260408/alle-variablen-einer-struct-auf-0-setzen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 23:34:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260408.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Feb 2010 18:45:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 18:45:20 GMT]]></title><description><![CDATA[<p>Ich möchte gerne alle variablen eine Struct (die nur aus int variablen besteht) auf 0 setzen, ohne so vorgehen zu müssen:</p>
<pre><code class="language-cpp">struct myStruct
{
	int a, b, c;
	int aa, bb, cc;
	// ...
} ms;

// ...

void Irgendwas(void)
{
	// ...
	if (aufNull == true)
	{
		ms.a = ms.b = ms.c = 0;
		// ...
	}
	// ...
}
</code></pre>
<p>also auf jeden wert einzeln zugreifen müssen... Wenn es dazu eine winapi o.ä. gibt, oder es nur mit windows funktioniert, dann bitte verschieben (programmiere unter windows)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850606</guid><dc:creator><![CDATA[ZeroM]]></dc:creator><pubDate>Thu, 04 Feb 2010 18:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 18:49:00 GMT]]></title><description><![CDATA[<p>Für den Initialwert einfach einen default-ctor und für die 0-Zuweisung einfach eine Methode anlegen... <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850610</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 04 Feb 2010 18:49:00 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:18:25 GMT]]></title><description><![CDATA[<p>dann muss ich ja wieder auf jedes einzelne element zugreifen... das kann bei 200 und mehr elementen schon mühsam sein und den code aufblähen <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850622</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850622</guid><dc:creator><![CDATA[ZeroM]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:18:25 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:19:38 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct myStruct
{
    int a, b, c;
    int aa, bb, cc;
    // ...
}; 

int main()
{
	myStruct ms = {0};
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1850623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850623</guid><dc:creator><![CDATA[804000]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:19:38 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:19:49 GMT]]></title><description><![CDATA[<p>Bei POD-Typen kannst du einfach <code>memset</code> verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850624</guid><dc:creator><![CDATA[memsetter]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:19:49 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:24:38 GMT]]></title><description><![CDATA[<p>ZeroM schrieb:</p>
<blockquote>
<p>dann muss ich ja wieder auf jedes einzelne element zugreifen... das kann bei 200 und mehr elementen schon mühsam sein und den code aufblähen <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=":/"
      alt="😕"
    /></p>
</blockquote>
<p>Wenn der Konstruktor alles auf 0 setzt, dann kannst du ja auch einfach die Zuweisung eines neuen, leeren Objektes benutzen.</p>
<p>Allerdings nehme ich mal an, dass das eher eine C artige (also POD) Struktur ist und daher kannst du memset benutzen. Wenn es allerdings kein POD ist, dann musst du das alles von Hand machen ja.</p>
<p>Was soll das überhaupt? Wenn es eine anständige Klasse ist, dann erreicht der Konstruktor die Invariante und somit brauchst du so ein &quot;auf-0-setzen&quot; gar nicht. Und wenn du dann auch noch einen Kopierkonstruktor hättest, kannst du ein Objekt auch ganz einfach auf seinen Anfangszustand zurücksetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850626</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:24:38 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:27:59 GMT]]></title><description><![CDATA[<p>ZeroM schrieb:</p>
<blockquote>
<p>das kann bei 200 und mehr elementen schon mühsam sein</p>
</blockquote>
<p>Arrays kennst du aber schon? Was sind das denn alles für Variablen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850630</guid><dc:creator><![CDATA[Badestrand_]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:27:59 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:35:58 GMT]]></title><description><![CDATA[<p>memset hilft nur bedingt und macht den Code unnötig komplex.</p>
<pre><code class="language-cpp">int main()
{
    T x1 = {0};     // (1)
    T x2 = {};      // (2)
    T x3 = T();     // (3)
    T* p = new T(); // (4)
}
</code></pre>
<p>(1) ist der Standardweg in C (sofern der Programmierer sich nicht schon &quot;aus Geschwindigkeitsgründen&quot; auf memset eingeschossen hat...).<br />
(2) ist nur in C++ möglich und dort allgemeiner als (1), weil es auch mit leeren Aggregaten zurecht kommt oder solchen, deren erstes Element nicht per konstantem 0 initialisiert werden kann (beides gibt es in C nicht).<br />
(3) funktioniert, falls T POD ist, oder einen entsprechend definierten Defaultkonstuktor besitzt.<br />
(4) dito; im Falle von Arrays, falls (4) für die Elemente gilt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850635</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:35:58 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:41:12 GMT]]></title><description><![CDATA[<p>Das kannst du ganz einfach so schreiben:</p>
<pre><code class="language-cpp">struct myStruct
{
    int a, b, c;
    int aa, bb, cc;
    // ...
} ms={};
</code></pre>
<p>Kein Tippfehler, zwischen den {} muss tatsächlich nix stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850638</guid><dc:creator><![CDATA[Burkhi]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Thu, 04 Feb 2010 19:55:00 GMT]]></title><description><![CDATA[<p>memsetter schrieb:</p>
<blockquote>
<p>Bei POD-Typen kannst du einfach <code>memset</code> verwenden.</p>
</blockquote>
<p>Das funktioniert auch so auf X64 oder X86. Auf anderen Platformen könnte das auch mal schiefgehen. Ich glaube, dass das nicht vom C++ Standard so garantiert wird. Zum Beispiel ist nicht gesagt, dass ein Nullzeiger durch eine Folge von Null-Bytes repräsentiert werden muss. Wenn Du eine Folge von Null-Bytes als Zeiger reinterpretierst, muss dass auch kein Nullzeiger sein. Bei Ganzzahlen aber erhältst Du durch das Löschen aller Bits der Repräsentierung auch wirklich die 0 als Wert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1850647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1850647</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 04 Feb 2010 19:55:00 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Sun, 07 Feb 2010 16:50:05 GMT]]></title><description><![CDATA[<p>Burkhi schrieb:</p>
<blockquote>
<p>Das kannst du ganz einfach so schreiben:</p>
<pre><code class="language-cpp">struct myStruct
{
    int a, b, c;
    int aa, bb, cc;
    // ...
} ms={};
</code></pre>
<p>Kein Tippfehler, zwischen den {} muss tatsächlich nix stehen.</p>
</blockquote>
<p>ich glaube ihr versteht mich falsch, ich möchte sie nicht von anfang an auf 0 haben, sondern beim aufruf von irgendwas...</p>
<p>arrays kenne ich schon, doch jede variable hat nen anderen namen und dann kenn ich mich mit arrays nicht mehr aus...</p>
<pre><code class="language-cpp">struct aaa
{
	int a, b;
} aA = {};
</code></pre>
<p>&lt;-- das klappt</p>
<pre><code class="language-cpp">struct aaa
{
	int a, b;
} aA;

void aaaa()
{
	aA = {};
}
</code></pre>
<p>&lt;-- das jedoch nicht :S</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1851970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1851970</guid><dc:creator><![CDATA[ZeroM]]></dc:creator><pubDate>Sun, 07 Feb 2010 16:50:05 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Sun, 07 Feb 2010 20:00:35 GMT]]></title><description><![CDATA[<p>Ja, wiegesagt, memset() wenn POD, ansonsten manuell.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852046</guid><dc:creator><![CDATA[Work0r]]></dc:creator><pubDate>Sun, 07 Feb 2010 20:00:35 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Sun, 07 Feb 2010 20:25:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">aA = aaa();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1852057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852057</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 07 Feb 2010 20:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Mon, 08 Feb 2010 10:22:35 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>[...]Auf anderen Platformen könnte das auch mal schiefgehen. Ich glaube, dass das nicht vom C++ Standard so garantiert wird. Zum Beispiel ist nicht gesagt, dass ein Nullzeiger durch eine Folge von Null-Bytes repräsentiert werden muss.[...]</p>
</blockquote>
<p>ISO/IEC 14882:2003 §4.10 schrieb:</p>
<blockquote>
<p>A null pointer constant <em>is an integral constant expression (5.19) rvalue of integer type</em> that evaluates to zero. A null pointer constant can be converted to a pointer type; the result is the null pointer value of that type and is distinguishable from every other value of pointer to object or pointer to function type[...]</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1852310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852310</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 08 Feb 2010 10:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Mon, 08 Feb 2010 10:49:56 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>[...]Auf anderen Platformen könnte das auch mal schiefgehen. Ich glaube, dass das nicht vom C++ Standard so garantiert wird. Zum Beispiel ist nicht gesagt, dass ein Nullzeiger durch eine Folge von Null-Bytes repräsentiert werden muss.[...]</p>
</blockquote>
<p>ISO/IEC 14882:2003 §4.10 schrieb:</p>
<blockquote>
<p>A null pointer constant <em>is an integral constant expression (5.19) rvalue of integer type</em> that evaluates to zero. A null pointer constant can be converted to a pointer type; the result is the null pointer value of that type and is distinguishable from every other value of pointer to object or pointer to function type[...]</p>
</blockquote>
</blockquote>
<p>Soll da jetzt ein Widerspruch zu sehen sein? Das Zitat aus dem Standard sagt nicht, dass ein &quot;null pointer value&quot; durch eine Folge von Null-Bytes repräsentiert werden muss. Es sagt lediglich, dass ein konstanter Ausdruck mit Wert 0 zu einem &quot;null pointer value&quot; konvertiert werden kann -- wie auch immer man ein &quot;null pointer value&quot; repräsentiert. Genausowenig wird garantiert, dass eine Folge von Null-Bytes als double-Wert interpretiert 0 ergibt.</p>
<pre><code class="language-cpp">void*  zeiger;
double fkzahl;
memset(&amp;zeiger,0,sizeof(zeiger));
memset(&amp;fkzahl,0,sizeof(fkzahl));
assert(zeiger==0); // &lt;-- ist nicht garantiert
assert(fkzahl==0); // &lt;-- ist nicht garantiert

zeiger = 0;
fkzahl = 0;
unsigend char zbyte = *reinterpret_cast&lt;unsigned char const*&gt;(&amp;zeiger);
unsigend char fbyte = *reinterpret_cast&lt;unsigned char const*&gt;(&amp;fkzahl);
assert(zbyte == 0u); // &lt;-- ist nicht garantiert
assert(fbyte == 0u); // &lt;-- ist nicht garantiert
</code></pre>
<p>...weil die Repräsentierung von Zeigerwerten und Fließkommawerten nicht vorgeschrieben ist -- auch nicht, wie ein Nullzeiger oder der double-Wert 0.0 im Speicher liegt.</p>
<p>Wenn Du im Standard dazu etwas findest und dies widerlegen kannst, lass ich mich gerne belehren.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852327</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 08 Feb 2010 10:49:56 GMT</pubDate></item><item><title><![CDATA[Reply to Alle variablen einer struct auf 0 setzen on Mon, 08 Feb 2010 11:17:12 GMT]]></title><description><![CDATA[<p>Da der OP ja bereits gesagt hat, dass das Ding nur aus int besteht ist die Sache doch hinfällig...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852338</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 08 Feb 2010 11:17:12 GMT</pubDate></item></channel></rss>