<?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[Zweidemensionalen Zeiger an Funktion übergeben]]></title><description><![CDATA[<p>Ich habe im Internet gesucht und etwas dazu gefunden bin soweit gekommen.</p>
<pre><code>void uebergabe((*zeiger_feld)[10]){
   //---
}

int main(){
char feld[10][10]={{'_','_','_','_','_','_','_','_','_','_'},//0
                     {'_','_','_','_','_','_','_','_','_','_'},//1
                     {'_','_','_','_','_','_','_','_','_','_'},//2
                     {'_','_','_','_','_','_','_','_','_','_'},//3
                     {'_','_','_','_','_','_','_','_','_','_'},//4
                     {'_','_','_','_','_','_','_','_','_','_'},//5
                     {'_','_','_','_','_','_','_','_','_','_'},//6
                     {'_','_','_','_','_','_','_','_','_','_'},//7
                     {'_','_','_','_','_','_','_','_','_','_'},//8
                     {'_','_','_','_','_','_','_','_','_','_'}};//9
                  //  0    1   2   3   4   5   6   7   8   9

char (*zeiger_feld)[10]=feld;

uebergabe((*zeiger_feld)[10]);
return 0;
}
</code></pre>
<p>Es klappt auch nicht. Also Frage: Wie kann ich eine zweidimesionalen Array Zeiger einer FUnktion übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325371/zweidemensionalen-zeiger-an-funktion-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 07:19:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325371.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Apr 2014 13:50:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 13:50:29 GMT]]></title><description><![CDATA[<p>Ich habe im Internet gesucht und etwas dazu gefunden bin soweit gekommen.</p>
<pre><code>void uebergabe((*zeiger_feld)[10]){
   //---
}

int main(){
char feld[10][10]={{'_','_','_','_','_','_','_','_','_','_'},//0
                     {'_','_','_','_','_','_','_','_','_','_'},//1
                     {'_','_','_','_','_','_','_','_','_','_'},//2
                     {'_','_','_','_','_','_','_','_','_','_'},//3
                     {'_','_','_','_','_','_','_','_','_','_'},//4
                     {'_','_','_','_','_','_','_','_','_','_'},//5
                     {'_','_','_','_','_','_','_','_','_','_'},//6
                     {'_','_','_','_','_','_','_','_','_','_'},//7
                     {'_','_','_','_','_','_','_','_','_','_'},//8
                     {'_','_','_','_','_','_','_','_','_','_'}};//9
                  //  0    1   2   3   4   5   6   7   8   9

char (*zeiger_feld)[10]=feld;

uebergabe((*zeiger_feld)[10]);
return 0;
}
</code></pre>
<p>Es klappt auch nicht. Also Frage: Wie kann ich eine zweidimesionalen Array Zeiger einer FUnktion übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396653</guid><dc:creator><![CDATA[Skeptar]]></dc:creator><pubDate>Mon, 28 Apr 2014 13:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 14:05:02 GMT]]></title><description><![CDATA[<pre><code>template&lt;std::size_t N, std::size_t U&gt;
void uebergabe(int (&amp;arr)[N][U])
{
    // put your magic here
}

int main()
{
    char feld[10][10] = /* ... */;
    uebergabe(feld);
}
</code></pre>
<p>Alternative: std::array.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396657</guid><dc:creator><![CDATA[patrick246]]></dc:creator><pubDate>Mon, 28 Apr 2014 14:05:02 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 14:41:05 GMT]]></title><description><![CDATA[<p>patrick246 schrieb:</p>
<blockquote>
<p>Alternative: std::array.</p>
</blockquote>
<p>Ich würde genrne (immer noch) ein X mit den Pfeiltasten bewegen.<br />
Ich habe links und rechts fertig.<br />
Dabei habe ich ein Zeiger genommen und das vorherige X durch ein _ zu erstetzen. Und nun möchts ich das X auch nach oben und unten bewegen können dafür brauche ich einen Zeiger. Allerdings darf der Zeiger ja nicht jedesmal neu in der Funktion angelegt werden.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;conio.h&gt;
using namespace std;

namespace taste{
    const int p_oben = 72;
    const int p_unten = 80;
    const int p_rechts = 77;
    const int p_links = 75;
    const int esc = 27;
}

void pos_ausabe(char feld[], int bewegung, int &amp;position, char (*zeiger_feld)[10]){
//passiert was
}

int main(){
    int eingabe=0, position=0;
    int bewegung=0;
    char feld[10][10]= {{'_','_','_','_','_','_','_','_','_','_'},//0
                        {'_','_','_','_','_','_','_','_','_','_'},//1
                        {'_','_','_','_','_','_','_','_','_','_'},//2
                        {'_','_','_','_','_','_','_','_','_','_'},//3
                        {'_','_','_','_','_','_','_','_','_','_'},//4
                        {'_','_','_','_','_','_','_','_','_','_'},//5
                        {'_','_','_','_','_','_','_','_','_','_'},//6
                        {'_','_','_','_','_','_','_','_','_','_'},//7
                        {'_','_','_','_','_','_','_','_','_','_'},//8
                        {'_','_','_','_','_','_','_','_','_','_'}};//9
                      //  0    1   2   3   4   5   6   7   8   9
    char (*zeiger_feld)[10]=feld;

    pos_ausabe(feld, bewegung, position, (*zeiger_feld)[10]);

    do{
    eingabe=getch();
        switch(eingabe){
            case taste::p_oben: cout &lt;&lt; &quot;oben\n&quot;;
                                break;
            case taste::p_unten: cout &lt;&lt; &quot;unten\n&quot;;
                                break;
            case taste::p_rechts: bewegung=1;
                                pos_ausabe(feld, bewegung, position, (*zeiger_feld)[10]);
                                break;
            case taste::p_links: bewegung=-1;
                                pos_ausabe(feld, bewegung, position, (*zeiger_feld)[10]);
        }
    }while(eingabe!=taste::esc);
    return 0;
}
</code></pre>
<p>Ich hätte die Frage gleich so Stellen sollen... . Weil ich bin noch zu &quot;schlecht&quot; um dein zu verstehen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396663</guid><dc:creator><![CDATA[Skeptar]]></dc:creator><pubDate>Mon, 28 Apr 2014 14:41:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 14:55:57 GMT]]></title><description><![CDATA[<p>Wenn du statt des Zeigers x/y-Koordinaten nimmst fällt es dir bestimmt viel leichter.<br />
Wenn du einen Zeiger nimmst, der auf dein Element zeigt, dann ist das ein *char **. Dein <em>zeiger_feld</em> kann gar nicht auf ein Element zeigen, denn es zeigt auf eine ganze Zeile. Wenn du ein *char <em>element</em> hast kannst du mit <em>element += 10</em> nach unten und mit <em>element -= 10</em> nach oben. Pass aber auf, dass du nicht aus dem Array raus läufst!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396664</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Mon, 28 Apr 2014 14:55:57 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 15:38:05 GMT]]></title><description><![CDATA[<p>nwp3 schrieb:</p>
<blockquote>
<p>Wenn du statt des Zeigers x/y-Koordinaten nimmst fällt es dir bestimmt viel leichter.</p>
</blockquote>
<p>Wie meinst du das ? <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="😕"
    /> <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/2396667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396667</guid><dc:creator><![CDATA[Skeptar]]></dc:creator><pubDate>Mon, 28 Apr 2014 15:38:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 15:50:50 GMT]]></title><description><![CDATA[<pre><code>int x = 5, y = 5; //wir starten an position 5/5

        feld[x][y] = '_'; //altes 'X' weg
        switch(eingabe){ //position anpassen
            case taste::p_oben: if (y) y--;
                                break;
            case taste::p_unten: if (y &lt; 9) y++;
                                break;
            case taste::p_rechts: if (x &lt; 9) x++;
                                break;
            case taste::p_links: if (x) x--;
                                break;
        }
        feld[x][y] = 'X'; //neues 'X' hin
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2396669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396669</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Mon, 28 Apr 2014 15:50:50 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 18:20:49 GMT]]></title><description><![CDATA[<p>nwp3 schrieb:</p>
<blockquote>
<pre><code>int x = 5, y = 5; //wir starten an position 5/5

        feld[x][y] = '_'; //altes 'X' weg
        switch(eingabe){ //position anpassen
            case taste::p_oben: if (y) y--;
                                break;
            case taste::p_unten: if (y &lt; 9) y++;
                                break;
            case taste::p_rechts: if (x &lt; 9) x++;
                                break;
            case taste::p_links: if (x) x--;
                                break;
        }
        feld[x][y] = 'X'; //neues 'X' hin
</code></pre>
</blockquote>
<p>nwp3 schrieb:</p>
<blockquote>
<pre><code>int x = 5, y = 5; //wir starten an position 5/5

        feld[x][y] = '_'; //altes 'X' weg
        switch(eingabe){ //position anpassen
            case taste::p_oben: if (y) y--;
                                break;
            case taste::p_unten: if (y &lt; 9) y++;
                                break;
            case taste::p_rechts: if (x &lt; 9) x++;
                                break;
            case taste::p_links: if (x) x--;
                                break;
        }
        feld[x][y] = 'X'; //neues 'X' hin
</code></pre>
</blockquote>
<p>Danke!</p>
<p>Hier mein Code</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;conio.h&gt;
using namespace std;

namespace taste{
    const int p_oben = 72;
    const int p_unten = 80;
    const int p_rechts = 77;
    const int p_links = 75;
    const int esc = 27;
}

void pos_ausabe(int &amp;zahler, int &amp;y, int &amp;x){
    //Mehrfach deklariert ??
        char feld[10][10]= {{'_','_','_','_','_','_','_','_','_','_'},//0
                            {'_','_','_','_','_','_','_','_','_','_'},//1
                            {'_','_','_','_','_','_','_','_','_','_'},//2
                            {'_','_','_','_','_','_','_','_','_','_'},//3
                            {'_','_','_','_','_','_','_','_','_','_'},//4
                            {'_','_','_','_','_','_','_','_','_','_'},//5
                            {'_','_','_','_','_','_','_','_','_','_'},//6
                            {'_','_','_','_','_','_','_','_','_','_'},//7
                            {'_','_','_','_','_','_','_','_','_','_'},//8
                            {'_','_','_','_','_','_','_','_','_','_'}};//9
                          //  0    1   2   3   4   5   6   7   8   9

    if(x&lt;0){
        x=0;
    }
    else if(x&gt;9){
        x=9;
    }
    else if(x&lt;9 &amp;&amp; x&gt;0){
        feld[y][x]='X';
    }
    else{
    }

    if(y&lt;0){
        y=0;
    }
    else if(y&gt;9){
        y=9;
    }
    else if(y&lt;9 &amp;&amp; y&gt;0){
    }
    else{
    }

    feld[y][x]='X';
    system(&quot;CLS&quot;);
    for(unsigned int y=0;y&lt;10;y++){ //Gibt das Spielfeld aus 0-9
        if(y==0){
        }
        else{
            cout &lt;&lt; &quot;\n&quot;;
        }

        for(unsigned int x=0;x&lt;10;x++){
            cout &lt;&lt; feld[y][x];
        }

    }
}

int main(){
    int zahler=0, eingabe=0, y=0, x=0;
    pos_ausabe(zahler, y, x);

    do{
    eingabe=getch();
        switch(eingabe){
            case taste::p_oben: y--;
                                pos_ausabe(zahler, y, x);
                                break;
            case taste::p_unten: y++;
                                pos_ausabe(zahler, y, x);
                                break;
            case taste::p_rechts: x++;
                                pos_ausabe(zahler, y, x);
                                break;
            case taste::p_links: x--;
                                pos_ausabe(zahler, y, x);
        }
    }while(eingabe!=taste::esc);
    return 0;
}
</code></pre>
<p>Nur mit einer Sache bin ich nicht ganz zufrieden. Das der Array in der Funktion deklariert wird(und das jedes mal auf neue). Aber sonst läuft es.</p>
<p>Edit: wäre es sinnvoll den array mit New zu beschaffen und dann mit delete wieder freizugeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396686</guid><dc:creator><![CDATA[Skeptar]]></dc:creator><pubDate>Mon, 28 Apr 2014 18:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Mon, 28 Apr 2014 19:43:31 GMT]]></title><description><![CDATA[<p>new und delete würde ich lassen. Man ist gut beraten darauf zu verzichten. Dein Array brauchst du übrigens gar nicht. Für Zeilen ungleich y kannst du einfach 10 mal '<em>' und ein '\n' ausgeben. Bei der Zeile gleich y kannst du x mal ein '</em>' ausgeben, gefolgt von einem 'X', gefolgt von x-1 mal '_' und einem '\n'.</p>
<p>Deine if-else-Kaskaden sind unnötig kompliziert und falsch. Besser wäre</p>
<pre><code>if(x&lt;0){
        x=0;
    }
    else if(x&gt;9){
        x=9;
    }
    feld[y][x]='X';
</code></pre>
<p>An der Stelle feld[y][x]='X'; muss x wegen des Codes davor zwischen 0 und 9 liegen, das brauchst du nicht doppelt abzufragen. Außerdem führt das dazu, dass dein 'X' verschwindet wenn du versuchst aus dem Feld zu laufen, was bestimmt nicht so gedacht war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2396702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396702</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Mon, 28 Apr 2014 19:43:31 GMT</pubDate></item><item><title><![CDATA[Reply to Zweidemensionalen Zeiger an Funktion übergeben on Tue, 29 Apr 2014 11:57:10 GMT]]></title><description><![CDATA[<p>Okay danke <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/2396759</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2396759</guid><dc:creator><![CDATA[Skeptar]]></dc:creator><pubDate>Tue, 29 Apr 2014 11:57:10 GMT</pubDate></item></channel></rss>