<?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[Rückgabe von Zeigern aus Funktionen]]></title><description><![CDATA[<p>Hallo, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /></p>
<p>Wie der Titel schon sagt, bräuchte ich etwas Hilfe bei der Rückgabe von Zeigern aus einer Funktion heraus. Mit einfachen Obbjekten gelingt mir das Handling, jedoch macht mir mei Array wieder zu schaffen 8P .</p>
<p>Ziel soll es für mich sein einen Zeiger auf 'eines' der Matrix-Symbole, aus einer Funktion heraus zurückzugeben(z.B die Funktion mit dem Namen PLUS hat als Rückgabewert einen Zeiger auf das Muster +).</p>
<pre><code class="language-cpp">struct matrix{

		char c_array[3][3];

};

	matrix symbol_plus = {{	 {' ','x',' '}
				,{'x','x','x'}
				,{' ','x',' '}
	}}; 

	matrix symbol_minus = {{ {' ',' ',' '}
				,{'x','x','x'}
				,{' ',' ',' '}
	}};
</code></pre>
<p>Mit Array's läßt es sich schön üben *hust* :&gt;</p>
<p>Mit einem normalen String würde ich es glaube so versuchen:</p>
<pre><code class="language-cpp">string text_englisch = &quot;flower&quot;;
string text_deutsch = &quot;blume&quot;;

bool languageDE = true;

string *getlanguage()
{
 return (languageDE)?&amp;text_deutsch:&amp;text_englisch;
}

// aufruf kennte doch so aussehen

string *pointer = getlanguage();
cout &lt;&lt; *pointer &lt;&lt; endl;

// console:

blume
</code></pre>
<p>und auf die Elemente des Arrays komme ich doch mit:</p>
<pre><code class="language-cpp">char *pointer = &amp;symbol_minus.c_array[0][0];

cout &lt;&lt; *pointer;
// sollte nun den Inhalt der  Speicherzelle von symbol_minus.c_array[0][0] haben oder?
</code></pre>
<p>Was ich noch gelesen habe ist, wenn ich den pointer um eins erhöhe ++*pointer, zeigt er mir das nächste element an.</p>
<p>Doch wie kann ich nun mit einer Funktion einen Zeiger auf das komplette Muster Plus zurückgeben lassen?</p>
<p>ich möchte mich nebenbei für die Geduld bedanken die einige aufbringen um sich mit meinen Fragen auseinander zu setzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/197179/rückgabe-von-zeigern-aus-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 01:18:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197179.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Nov 2007 16:55:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Rückgabe von Zeigern aus Funktionen on Wed, 07 Nov 2007 16:55:20 GMT]]></title><description><![CDATA[<p>Hallo, <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /></p>
<p>Wie der Titel schon sagt, bräuchte ich etwas Hilfe bei der Rückgabe von Zeigern aus einer Funktion heraus. Mit einfachen Obbjekten gelingt mir das Handling, jedoch macht mir mei Array wieder zu schaffen 8P .</p>
<p>Ziel soll es für mich sein einen Zeiger auf 'eines' der Matrix-Symbole, aus einer Funktion heraus zurückzugeben(z.B die Funktion mit dem Namen PLUS hat als Rückgabewert einen Zeiger auf das Muster +).</p>
<pre><code class="language-cpp">struct matrix{

		char c_array[3][3];

};

	matrix symbol_plus = {{	 {' ','x',' '}
				,{'x','x','x'}
				,{' ','x',' '}
	}}; 

	matrix symbol_minus = {{ {' ',' ',' '}
				,{'x','x','x'}
				,{' ',' ',' '}
	}};
</code></pre>
<p>Mit Array's läßt es sich schön üben *hust* :&gt;</p>
<p>Mit einem normalen String würde ich es glaube so versuchen:</p>
<pre><code class="language-cpp">string text_englisch = &quot;flower&quot;;
string text_deutsch = &quot;blume&quot;;

bool languageDE = true;

string *getlanguage()
{
 return (languageDE)?&amp;text_deutsch:&amp;text_englisch;
}

// aufruf kennte doch so aussehen

string *pointer = getlanguage();
cout &lt;&lt; *pointer &lt;&lt; endl;

// console:

blume
</code></pre>
<p>und auf die Elemente des Arrays komme ich doch mit:</p>
<pre><code class="language-cpp">char *pointer = &amp;symbol_minus.c_array[0][0];

cout &lt;&lt; *pointer;
// sollte nun den Inhalt der  Speicherzelle von symbol_minus.c_array[0][0] haben oder?
</code></pre>
<p>Was ich noch gelesen habe ist, wenn ich den pointer um eins erhöhe ++*pointer, zeigt er mir das nächste element an.</p>
<p>Doch wie kann ich nun mit einer Funktion einen Zeiger auf das komplette Muster Plus zurückgeben lassen?</p>
<p>ich möchte mich nebenbei für die Geduld bedanken die einige aufbringen um sich mit meinen Fragen auseinander zu setzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399308</guid><dc:creator><![CDATA[Keydo]]></dc:creator><pubDate>Wed, 07 Nov 2007 16:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to Rückgabe von Zeigern aus Funktionen on Wed, 07 Nov 2007 17:24:38 GMT]]></title><description><![CDATA[<p>Hi,<br />
also um zunächst mal etwas für Verwirrung zu sorgen <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="🙂"
    /> ..<br />
Der Name eines Array wird vom Compiler als Zeiger interprätiert.</p>
<p>Das bedeutet das du schreiben kannst:</p>
<pre><code class="language-cpp">int test_array[] = {0,1,2,3,4,5,6,7,8,9};
int *die_null = test_array; // Zugriff per Zeiger
int *auch_die_null = &amp;test_array[0]; // Zugriff per Indexopterator
int *die_eins = &amp;test_array[1]; // Zugriff per Indexoperator
int *auch_die_eins = test_array+1; // Zugriff per Zeiger

cout &lt;&lt; test_array[0] &lt;&lt; &quot;=&quot; &lt;&lt; *die_null &lt;&lt; &quot;=&quot; &lt;&lt; *auch_die_null &lt;&lt; endl;
cout &lt;&lt; test_array[1] &lt;&lt; &quot;=&quot; &lt;&lt; *die_eins &lt;&lt; &quot;=&quot; &lt;&lt; *auch_die_eins &lt;&lt; endl;
</code></pre>
<p>Da dein Array im Speicher hintereinander angelegt wird, kannst du mit einem Zeiger daran langwandern.</p>
<pre><code class="language-cpp">int test_array[] = {0,1,2,3,4,5,6,7,8,9};
for(int *i=test_array; i &lt;= &amp;test_array[9]; i++)
{
  cout &lt;&lt; *i &lt;&lt; endl;
}
</code></pre>
<p>Ist aber in diesem Fall nicht besonders elegant sondern mehr verwirrend.<br />
Schließlich gibts ja nen Indexoperator, genau für so einen Fall.</p>
<p>Beim Array aus einer Funktion zurückgeben, musst du aufpassen. Denn wenn das Array in der Funktion erstellt wurde, wird es nach dem Ende der Funktion ungültig. Besser ist dann das Array an die Funktion als Zeiger übergeben:</p>
<pre><code class="language-cpp">void setArray(int * array, int length)
{
  for(int i=0; i &lt; length; i++)
  { 
    array[i] = i;
  }
}

void eineAndereFunktion()
{
 int array[10];
 setArray(array, 10);
}
</code></pre>
<p>Vielleicht hilfts dir ja.</p>
<p>Grüßle Oli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1399329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1399329</guid><dc:creator><![CDATA[sambalmueslie]]></dc:creator><pubDate>Wed, 07 Nov 2007 17:24:38 GMT</pubDate></item></channel></rss>