<?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[char array initialisierungsproblem]]></title><description><![CDATA[<pre><code class="language-cpp">class irgendwo
{
 var::var(char c[])
 {   
    char varstring[]=&quot;$&quot;;

    strncat(varstring,c,strlen(c));

    cout &lt;&lt; varstring&lt;&lt;endl;
 }
}

int _tmain(int argc, _TCHAR* argv[])
{
    var *v=new var(&quot;a2&quot;);
}
//Text wird angezeigt, aber es tritt im Speicher ein Fehler auf wegen &quot;varstring&quot;
</code></pre>
<p>Was ich generell nicht verstehe, wieso initialisiert er das char array varstring mit irgendwelchen werten obwohl kein new verwendet wird.</p>
<p>Bei strlen liefert er zb. bei varstring[20] 27 werte, bei varstring[] 11 werte ... varstring[200] 217 werte etwas verwirrend...</p>
<p>bitte um hilfe bin nicht so erfahren mit zeigern und char arrays...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277948/char-array-initialisierungsproblem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 15:39:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277948.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 26 Nov 2010 19:19:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char array initialisierungsproblem on Fri, 26 Nov 2010 19:19:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class irgendwo
{
 var::var(char c[])
 {   
    char varstring[]=&quot;$&quot;;

    strncat(varstring,c,strlen(c));

    cout &lt;&lt; varstring&lt;&lt;endl;
 }
}

int _tmain(int argc, _TCHAR* argv[])
{
    var *v=new var(&quot;a2&quot;);
}
//Text wird angezeigt, aber es tritt im Speicher ein Fehler auf wegen &quot;varstring&quot;
</code></pre>
<p>Was ich generell nicht verstehe, wieso initialisiert er das char array varstring mit irgendwelchen werten obwohl kein new verwendet wird.</p>
<p>Bei strlen liefert er zb. bei varstring[20] 27 werte, bei varstring[] 11 werte ... varstring[200] 217 werte etwas verwirrend...</p>
<p>bitte um hilfe bin nicht so erfahren mit zeigern und char arrays...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986424</guid><dc:creator><![CDATA[werner_walterberg]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to char array initialisierungsproblem on Fri, 26 Nov 2010 19:35:30 GMT]]></title><description><![CDATA[<p>Dieser Müll lässt sich natürlich nicht übersetzen. Wenn man ein gültiges C++-Programm draus macht, funktioniert es ohne Probleme.</p>
<p>Wenn du Hilfe erwartest, solltest du wohl etwas abliefern, dass deinem Problem entspricht und statt &quot;Text wird angezeigt, aber es tritt im Speicher ein Fehler auf wegen &quot;varstring&quot;&quot; einen konkreten Fehler posten.</p>
<p>Warum benutzt du nicht std::string?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986433</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to char array initialisierungsproblem on Fri, 26 Nov 2010 19:43:18 GMT]]></title><description><![CDATA[<p>werner_walterberg schrieb:</p>
<blockquote>
<p>bitte um hilfe bin nicht so erfahren mit zeigern und char arrays...</p>
</blockquote>
<p>Warum benutzt du sie dann?</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;
using namespace std;

class irgendwo
{
public:
	irgendwo(const string&amp; foo_) : foo(foo_)    // falls du &quot; : foo(foo_)&quot; nicht kennst: Stichwort Initialisierungsliste. Ich könnte auch einfach in der Definition &quot;foo = foo_&quot; schreiben.
	{
		cout &lt;&lt; foo &lt;&lt; endl;
	}

private:
	string foo;
};

int main()
{
    // var *v=new var(&quot;a2&quot;); // Bitte new soweit wie möglich vermeiden
	irgendwo bar(&quot;a2&quot;);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1986440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986440</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:43:18 GMT</pubDate></item><item><title><![CDATA[Reply to char array initialisierungsproblem on Fri, 26 Nov 2010 19:47:00 GMT]]></title><description><![CDATA[<p>Vielleicht hilft dir das:</p>
<pre><code class="language-cpp">char varstring[]=&quot;$&quot;; // ist gleichbedeutend mit
char varstring[2] = { '$', '\0' }; // char array mit 2 Werten
</code></pre>
<p>Und Arrays kann man bekanntlich nicht vergrössern. Genau das machst du aber bei strncat (hier genau gleich unsicher wie ein strcat verwendet), du schreibst aber einen weiteren C-String (Compilerfehler bei der Parameterliste, muss wohl char *c sein) hinein. Für das ist aber kein Speicher reserviert.</p>
<p>Übrigens benützt man in C++ nie &lt;cstring&gt;, also siehr das Ganze so aus:</p>
<pre><code class="language-cpp">class var {
public:
  var::var(const char *c) : foo(c)
  {  
     const char varstring[]=&quot;$&quot;;
     std::cout &lt;&lt; varstring &lt;&lt; c &lt;&lt; std::endl;
  }
private:
  std::string foo;
};

int main()
{
    var v(&quot;a2&quot;); // Michael E.'s Klasse müsste mit irgendwo bar(std::string(&quot;a2&quot;)); konstruiert werden, Fehler in seinem Code
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1986443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986443</guid><dc:creator><![CDATA[strstrstr]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to char array initialisierungsproblem on Fri, 26 Nov 2010 19:56:37 GMT]]></title><description><![CDATA[<p>strstrstr schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Michael E.'s Klasse müsste mit irgendwo bar(std::string(&quot;a2&quot;)); konstruiert werden, Fehler in seinem Code
</code></pre>
</blockquote>
<p>Das geht schon, da eine implizite Konvertierung von <code>char*</code> nach <code>std::string</code> besteht (Konstruktor).</p>
<p>Um es ganz genau zu nehmen, geschieht beim Aufruf sogar Folgendes... <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>
<pre><code class="language-cpp">const char[3] -&gt; const char* -&gt; std::string -&gt; const std::string&amp;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1986451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986451</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 26 Nov 2010 19:56:37 GMT</pubDate></item><item><title><![CDATA[Reply to char array initialisierungsproblem on Fri, 26 Nov 2010 20:01:13 GMT]]></title><description><![CDATA[<p>strstrstr schrieb:</p>
<blockquote>
<p>Michael E.'s Klasse müsste mit irgendwo bar(std::string(&quot;a2&quot;)); konstruiert werden, Fehler in seinem Code<br />
}</p>
</blockquote>
<p>Na die Blumen geb ich mal gern zurück, denn std::string hat einen &quot;const char*&quot;-Konstruktor :p Dafür sieht deine Konstruktordeklaration etwas komisch aus <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>
<p>[Edit] Genau denselben Konstruktor benutzt du doch auch bei <code>foo(c)</code> <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/1986452</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986452</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Fri, 26 Nov 2010 20:01:13 GMT</pubDate></item><item><title><![CDATA[Reply to char array initialisierungsproblem on Fri, 26 Nov 2010 20:10:58 GMT]]></title><description><![CDATA[<p>Hmm, ich dachte bei mir wäre das irgendwann mal nicht gegangen, weil std::string(char <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="😉"
    /> explizit ist. Aber du hast natürlich Recht, er ist es nicht.<br />
Und ja, die Konstruktordeklaration ist falsch, ich hab nur werni seine kopiert und mir nicht so viel dabei gedacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1986455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1986455</guid><dc:creator><![CDATA[strstrstr]]></dc:creator><pubDate>Fri, 26 Nov 2010 20:10:58 GMT</pubDate></item></channel></rss>