<?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[hilfe mit pointern]]></title><description><![CDATA[<p>hi ich möchte in meinem hauptprogramm zwei Nullpointer erstellen und sie in einer funktion initialisieren.<br />
e.g.</p>
<pre><code class="language-cpp">int main()
{
char* p=0;
int* x=0;
init(p,x);
...
}

void(char* p, int* x)
...
</code></pre>
<p>ich bekomme aber immer nur compiler errors oder das programm stürzt ab kann mir jemand sagen wie die richtige syntax dafür ist? <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/topic/214914/hilfe-mit-pointern</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 02:21:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214914.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jun 2008 13:53:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 13:59:24 GMT]]></title><description><![CDATA[<p>hi ich möchte in meinem hauptprogramm zwei Nullpointer erstellen und sie in einer funktion initialisieren.<br />
e.g.</p>
<pre><code class="language-cpp">int main()
{
char* p=0;
int* x=0;
init(p,x);
...
}

void(char* p, int* x)
...
</code></pre>
<p>ich bekomme aber immer nur compiler errors oder das programm stürzt ab kann mir jemand sagen wie die richtige syntax dafür ist? <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/1522533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522533</guid><dc:creator><![CDATA[KOR]]></dc:creator><pubDate>Wed, 04 Jun 2008 13:59:24 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:22:11 GMT]]></title><description><![CDATA[<p>Wenn ich in meine Kristallkugel schaue (denn wichtige Angaben verschweigst du uns (welche Fehlermeldungen und was deine Init-Funktion anstellen soll)) dann fallen mir folgende &quot;Lösungen&quot; ein:</p>
<pre><code class="language-cpp">void init(int*);

int main()
    {
        int a; // KEIN Pointer, es muss ein Objekt exisitieren,
        init(&amp;a); // Welches hier geändert wird.
    }

void init(int* var)
    {
        *var = 1234;
    }
</code></pre>
<p>Schöner ist es allerdings mit Referenzen:</p>
<pre><code class="language-cpp">void init(int&amp;);

int main()
    {
        int a; // KEIN Pointer, es muss ein Objekt exisitieren,
        init(a); // Welches hier geändert wird.
    }

void init(int&amp; var)
    {
        var = 1234;
    }
</code></pre>
<p>Du kannst keine NULL-Pointer definiern, welche ins Nirvana zeigen und dann versuchen das Nirvana zu verändern. (Okay, es ginge doch, nur ist das in diesem Falle unsauber und trägt auch nicht gerade zur Lesbarkeit des Codes bei)</p>
<p>Grüße... Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522546</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:22:11 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:17:23 GMT]]></title><description><![CDATA[<ol>
<li></li>
</ol>
<pre><code class="language-cpp">void(char* p, int* x)
</code></pre>
<p>Da fehlt doch was.</p>
<p>2. Wenn das dort eingesetzt ist, fehlt immer noch eine Forwardeclaration, oder gleich die ganze Funkton nach oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522551</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:17:23 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:23:50 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
    char* p=0;
    int* x=0;
    init(p,x);
    ...
}

void(char*&amp; p, int*&amp; x)
{
    p = new ...;
    x = new ...;
}
</code></pre>
<p>edit: Aber schön ist das definitiv nicht! Guck dir evtl mal std::auto_ptr oder die boost-Zeigerwrapper an, da wird man glücklicher mit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522553</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:23:50 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:48:31 GMT]]></title><description><![CDATA[<p>Danke Badestrand das habe ich gesucht aber warum ist das nicht schön? <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="😕"
    /><br />
ja oben steht noch der prototyp der funktion. den qt habe ich nur schnell hier geschrieben da mein qt schon knappe 800 zeilen hat^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522570</guid><dc:creator><![CDATA[KOR]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:48:07 GMT]]></title><description><![CDATA[<p>KOR schrieb:</p>
<blockquote>
<p>Danke Badestrand das habe ich gesucht aber warum ist das nicht schön? <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>
</blockquote>
<p>Weil es gefährlich ist und dir sehr schnell Memoryleaks geben kann. (Wer kümmert sich um das aufräumen des mit new reservierten Platzes?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522574</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:48:52 GMT]]></title><description><![CDATA[<p>um die zeiger zu verändern müssen sie als zeiger oder referenzen übergeben werden. zum auslesen reicht es, sie per wert (zeigerwerte sind adressen), zu übergeben.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

//zeiger werden über zeiger übergeben
void init(char **c, int **i)
{
    //reserviert speicheradressen und weist sie den zeigern zu
    *c = new char; //der operator * derferenziert
    *i = new int;

    //weist den reservierten speicheradressen (nicht den zeigern!) werte zu
    **c = 'a'; //hier wird zwei mal derferenziert, da nicht der per zeiger übergebene zeiger, sondern der inhalt der adresse gemeint ist, die er als wert hat.
    **i = 4711;
}

//zeiger werden über referenzen übergeben
void finish(char *&amp;c, int *&amp;i)
{
    //gibt die speicheradressen frei
    delete c;//durch die übergabe per referenz wird automatisch dereferenziert, so dass der operator * hier nicht nötig ist.
    delete i;

    //weist den zeigern 0 zu, um ihre ungültigkeit überprüfbar zu machen
    c = 0;
    i = 0;
}

//zeiger werden übergeben, indem ihr wert,
//also die gespeicherte adresse,
//kopiert wird
void test(char *c, int *i)
{
    if (c != 0)
    	cout &lt;&lt; &quot;c zeigt auf den Wert &quot; &lt;&lt; *c &lt;&lt; &quot;\n&quot;;
    else
        cout &lt;&lt; &quot;c darf nicht dereferenziert werden, da es die Spezialadresse 0 als Wert hat!\n&quot;;

    if (i != 0)
    	cout &lt;&lt; &quot;i zeigt auf den Wert &quot; &lt;&lt; *i;
    else
        cout &lt;&lt; &quot;i darf nicht dereferenziert werden, da es die Spezialadresse 0 als Wert hat!&quot;;

    cout &lt;&lt; endl;
}

int main()
{
    char *p=0;
    int *x=0;

    test(p, x);
    init(&amp;p, &amp;x);
    test(p, x);
    finish(p, x);
    test(p, x);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1522575</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522575</guid><dc:creator><![CDATA[zeig]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:51:21 GMT]]></title><description><![CDATA[<p>sry ich bin in sowas ein ziemlicher noob aber wird das nicht spätestens mit dem ende des programmes wieder freigegeben? (falls ich vergesse nach dem benutzen sie mit delete freizugeben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522581</guid><dc:creator><![CDATA[KOR]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:51:21 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 14:54:11 GMT]]></title><description><![CDATA[<p>wenn dein betriebssystem lieb ist, dann ja <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1522584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522584</guid><dc:creator><![CDATA[zeig]]></dc:creator><pubDate>Wed, 04 Jun 2008 14:54:11 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Thu, 05 Jun 2008 13:27:58 GMT]]></title><description><![CDATA[<p>danke zeig das ist ja eine super ausführliche antwort. Das mit den pointer-to-pointer ist jetzt nicht so memoryleak gefärdet??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522586</guid><dc:creator><![CDATA[KOR]]></dc:creator><pubDate>Thu, 05 Jun 2008 13:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 15:19:20 GMT]]></title><description><![CDATA[<p>doch. was mit new angefordert wird, sollte auch mit delete wieder freigegeben werden. das kann in dem beispiel jederzeit mit dem aufruf der funktion finish gemacht werden.</p>
<p>in der tat ist es aber so, dass heutzutage die meisten betriebssysteme den speicher nach dem ende des programms wieder frei geben. des problem ist, wenn programme lange laufen, wie zum beispiel server, und immer wieder speicher reserviert wird, für den keine freigabe erfolgt, wenn er nicht mehr benötigt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522603</guid><dc:creator><![CDATA[zeig]]></dc:creator><pubDate>Wed, 04 Jun 2008 15:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe mit pointern on Wed, 04 Jun 2008 15:23:43 GMT]]></title><description><![CDATA[<p>Grundsätzlich gilt, dass du mit <strong>new</strong> angeforderten Speicher mit <strong>delete</strong> (bzw. new[], delete[] bei Feldern) wieder freigeben sollst, gemäß der Prämisse &quot;Don't expect anything&quot; (in dem Fall der Freigabe des Speichers durch das OS).</p>
<p>Die init-Funktion lässt auch Schlüsse zu, dass du es mal mit Klassen probieren solltest. Hier kannst du angeforderten Speicher durch den Desktruktor &quot;automatisch&quot; freigeben lassen. In vielen Fällen kommt man aber drum herum, dynamischen Speicher mittels new anfordern zu müssen. Die STL bietet viele nützliche Hilfsmittel (std::vector&lt;T&gt;, std::string, std::list&lt;T&gt;, um einige zu nennen), welche dir die Arbeit mit dyamisch angeforderten Speicher abnehmen.</p>
<p>Wenn du bestehende Variablen einfach ändern willst, dann ist die Übergabe per Referenz die sinnvollste (m.E.).</p>
<p>Die 800 Zeilen Quelltext lassen sich bestimmt um einiges reduzieren und übersichtlicher gestalten, wenn man die oben genannten Sprachmittel verwendet. <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>Grüße... Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522607</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Wed, 04 Jun 2008 15:23:43 GMT</pubDate></item></channel></rss>