<?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[memcpy]]></title><description><![CDATA[<pre><code class="language-cpp">int len = 8;
char str1[]=&quot;abcdefg&quot;;
char str2[40];

memcpy (str2+len,str1,strlen(str1)+1);
cout&lt;&lt;str2&lt;&lt;endl;
</code></pre>
<p>Was passiert hier genau: str2+len</p>
<p>Sowas ähnliches habe ich gestern irgendwo im Internet gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/301574/memcpy</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 22:44:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/301574.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Mar 2012 08:41:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to memcpy on Fri, 30 Mar 2012 08:41:52 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int len = 8;
char str1[]=&quot;abcdefg&quot;;
char str2[40];

memcpy (str2+len,str1,strlen(str1)+1);
cout&lt;&lt;str2&lt;&lt;endl;
</code></pre>
<p>Was passiert hier genau: str2+len</p>
<p>Sowas ähnliches habe ich gestern irgendwo im Internet gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196894</guid><dc:creator><![CDATA[kopierer]]></dc:creator><pubDate>Fri, 30 Mar 2012 08:41:52 GMT</pubDate></item><item><title><![CDATA[Reply to memcpy on Fri, 30 Mar 2012 09:00:33 GMT]]></title><description><![CDATA[<p>Da str2 ein Array von char ist, gilt str2 ohne Indizierung als Zeiger auf das erste Arrayelement (Element mit Index 0). str2 + x ist nun ein Zeiger auf das x+1te Element (Element mit Index x).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196900</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196900</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Fri, 30 Mar 2012 09:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to memcpy on Fri, 30 Mar 2012 09:06:33 GMT]]></title><description><![CDATA[<p>kopierer schrieb:</p>
<blockquote>
<p>Was passiert hier genau: str2+len</p>
</blockquote>
<p>str2 ist ein Array. Wenn man in C mit einem Array &quot;irgendwas&quot; macht, dann <em>zerfällt</em> der Name des Arrays häufig in einen Pointer auf sein erstes Element. Du machst hier &quot;irgendwas&quot;, du addierst nämlich len hinzu. Also bekommst du <code>&lt;pointer auf erstes Element v+n str2&gt; + len</code> .</p>
<p>Kannst du damit was anfangen?</p>
<p>Falls nicht helfen dir die ersten Seiten des Abschnitts über Pointerarithmetik im Einsteigerbuch deiner Wahl sicherlich weiter.</p>
<p>PS: abgesehen von der Konsolenausgabe ist das reine C-Frickelei, in C++ würde man vermutlich* auf C++-Strings zurückgreifen.</p>
<p>______________________<br />
* vermutlich bedeutet in dem Fall, dass man ausnahmsweise C-String-Gefrickel benutzt, wenn man</p>
<p>a) Durch Profiling festgestellt hat, dass das schneller ist und Geschwindigkeit an der Stelle entscheidend ist (guter Grund, aber unwahrscheinlich)<br />
b) Der Meinung ist, das müsste schneller sein, auch wenns nicht ins Gewicht fällt (Premature optimization, kein guter Grund)<br />
c) Aus anderen Gründen Abneigungen und/oder Vorurteile gegen std::string hat und sich lieber auf die Risiken mit C-Array-Gefrickel einlässt (häufig kein guter Grund)<br />
d) Irgendwann anfang der 90er stehen geblieben ist und deshalb keine Ahnung hat oder sich nicht mit so &quot;neumodischem&quot; Krams wie std::string beschäftigen will. C-Strings funktionieren schließlich schon seit einigen Jahrzehnten (ganz sicher kein guter Grund)<br />
a)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2196903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2196903</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 30 Mar 2012 09:06:33 GMT</pubDate></item></channel></rss>