<?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[Fragen über Fragen]]></title><description><![CDATA[<p>Hallo,</p>
<p>1. const char* test; Was ist hier genau const?</p>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">const char* findInCstring(const char* a, char x) {

	while(*a) {

		if(*a == x)
			return a;

		a++;

	}

	return 0L;

}
</code></pre>
<p>Ich kann den Zeiger a hochzählen da er copypervalue reinkommt aber wieso kann ich ihn returnen? Ich denke lokale Vars kann man nicht returnen bzw. diese werden gelöscht?</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230582/fragen-über-fragen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 07:59:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230582.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Dec 2008 12:41:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 12:41:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>1. const char* test; Was ist hier genau const?</p>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">const char* findInCstring(const char* a, char x) {

	while(*a) {

		if(*a == x)
			return a;

		a++;

	}

	return 0L;

}
</code></pre>
<p>Ich kann den Zeiger a hochzählen da er copypervalue reinkommt aber wieso kann ich ihn returnen? Ich denke lokale Vars kann man nicht returnen bzw. diese werden gelöscht?</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636806</guid><dc:creator><![CDATA[DerGast]]></dc:creator><pubDate>Mon, 29 Dec 2008 12:41:36 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 12:57:35 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void s(int* a, int* b) {

	int tmp = *a;

	*a = *b;

	*b = tmp;

}
</code></pre>
<p>Wieso kann ich einen Zeiger also dessen Kopier ändern???</p>
<p>Ich blicke nun garnicht mehr durch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636811</guid><dc:creator><![CDATA[DerGast]]></dc:creator><pubDate>Mon, 29 Dec 2008 12:57:35 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:01:15 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Zeiger sind selber auch nur Variablen. Die Rückgabe von a bedeutet nichts weiter als das die Adresse, die a als Parameter bekommen hat, als Rückgabe kopiert wird. Wichtig ist nur, das der Speicherbereich, auf den a zeigt, auch außerhalb der Funktion gültig ist.<br />
Technisch gesehen ist das dasselbe Prinzip wie bei dem hier :</p>
<pre><code class="language-cpp">int func(int a)
{
  return a * 2;
}
</code></pre>
<p>Das ist vollkommen korrekt, da Zeiger wie int kopierbar sind.</p>
<p>Was du aber nicht machen darfst ist Referenzen auf lokale <strong>Speicherbereiche</strong> zurückgeben :</p>
<pre><code class="language-cpp">int* func()
{
  int a = 4;
  return &amp;a; // Falsch, den Speicherbereich von a gibt es außerhalb nicht mehr!
}
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636814</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636814</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:01:15 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:04:52 GMT]]></title><description><![CDATA[<p>Danke akari!</p>
<p>Aber warum stimmt mein 2. Code?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636816</guid><dc:creator><![CDATA[DerGast]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:04:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:05:28 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Zum zweiten Post :<br />
Schau mal genauer hin. Es werden nicht die Zeiger geändert (diese würden sich ja nur lokal ändern), sondern die Speicherbereiche hinter den Zeigern. Die Zeile <em>*a = *b;</em> sagt aus : Kopiere den Wert auf den Zeiger b zeigt in den Bereich wo a hinzeigt. Die Adressen der Zeiger selber bleiben gleich. Das ist möglich weil die Parameter als Nichtkonstante Übergabe <em>By Reference</em> zu werten ist.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636817</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:06:34 GMT]]></title><description><![CDATA[<p>DerGast schrieb:</p>
<blockquote>
<p>Danke akari!</p>
<p>Aber warum stimmt mein 2. Code?</p>
</blockquote>
<p>Also nur weil die beiden Zeiger außerhalb existieren kann ich copypervalue die Werte der Zeiger ändern? Aber wieso übergebe ich dann nicht einfach direkt die Zeiger per Referenz?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636819</guid><dc:creator><![CDATA[DerGast]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:06:34 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:13:13 GMT]]></title><description><![CDATA[<p>DerGast schrieb:</p>
<blockquote>
<p>Also nur weil die beiden Zeiger außerhalb existieren kann ich copypervalue die Werte der Zeiger ändern? Aber wieso übergebe ich dann nicht einfach direkt die Zeiger per Referenz?</p>
</blockquote>
<p>Nope. Du kannst nur das ändern, worauf die Zeiger zeigen. Nicht die Zeiger selbst. Die Zeiger werden doch kopiert.</p>
<p>Gruß<br />
Don06</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636823</guid><dc:creator><![CDATA[Don06]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:13:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:13:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Also nur weil die beiden Zeiger außerhalb existieren kann ich copypervalue die Werte der Zeiger ändern?</p>
</blockquote>
<p>Ja</p>
<blockquote>
<p>Aber wieso übergebe ich dann nicht einfach direkt die Zeiger per Referenz?</p>
</blockquote>
<p>Weil doch nicht die Zeiger geändert werden sollen, sondern das worauf die Zeiger zeigen. Wenn du wirklich die Zeiger ändern willst, must du in der Tat sowas schreiben :</p>
<pre><code class="language-cpp">void s(int** a, int** b) {

    int* tmp = *a;

    *a = *b;

    *b = tmp;

}
</code></pre>
<p>Nun wird nicht ein Wert kopiert, sondern die beiden Zeiger werden vertauscht. Das heißt a zeigt dann auf den Speicherbereich wo vorher b hingezeigt hat, und umgekehrt.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636825</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:13:59 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:15:41 GMT]]></title><description><![CDATA[<p>DerGast schrieb:</p>
<blockquote>
<p>1. const char* test; Was ist hier genau const?</p>
</blockquote>
<p>Das Schlüsselwort <code>const</code> bezieht sich immer auf das, was direkt links davon steht. Nur wenn, wie in deinem Beispiel, das <code>const</code> selbst ganz links steht, bezieht es sich auf das, was rechts davon steht (dementsprechend könnte man auch <code>char const *</code> schreiben, das bedeutet genau das selbe).</p>
<p>Nun da das geklärt ist: Das <code>const</code> bezieht sich hier auf das <code>char</code> , also auf die Daten, auf die der Zeiger zeigt. Der Zeiger selbst ist nicht konstant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636826</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:15:41 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:26:18 GMT]]></title><description><![CDATA[<p>immer die gleichen. Mal besser hinschauen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1636831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636831</guid><dc:creator><![CDATA[nanana]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:26:18 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen über Fragen on Mon, 29 Dec 2008 13:37:16 GMT]]></title><description><![CDATA[<p>Danke nun hab ichs endlich verstanden <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1636837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1636837</guid><dc:creator><![CDATA[DerGast]]></dc:creator><pubDate>Mon, 29 Dec 2008 13:37:16 GMT</pubDate></item></channel></rss>