<?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[Anfänger: Pointer auf Struct]]></title><description><![CDATA[<p>Hallo</p>
<p>ich bin in C/C++ noch blutiger Anfänger! Ich bin erst seit ein paar Wocen dabei mich einzuarbeiten und das auch nur nebenbei.</p>
<p>Ich gehe zzt die ganzen Übungsaufgaben der verschiedenen UNIs, die man so im Netz findet durch.</p>
<p>Ein Problem haben ich zzt bei einer Aufgabe zur Berechnung von Zins und Tilgung.</p>
<p>Das Probllem tritt hier auf:</p>
<pre><code class="language-cpp">struct sJahrMon  // Datentyp zur Aufnahme vom Jahr und Monat
  {
    int Jahr;
    int Mon;
  };

sJahrMon* pJuM; 

void mon2jahr(int monate,sJahrMon* JuM) // Umwandlung von Monatsnummer nach Jahr und Monat

{
  JuM.Mon = monate%12;
  JuM.Jahr = (monate-monate%12)/12;
}
</code></pre>
<p>das ergibt Folgende Fehlermendungen:</p>
<pre><code>/Zinsrechnung/main.cpp|36|Fehler: Abfrage des Elementes »Mon« in »JuM«, das vom Nicht-Klassentyp »sJahrMon*« ist|
/Zinsrechnung/main.cpp|37|Fehler: Abfrage des Elementes »Jahr« in »JuM«, das vom Nicht-Klassentyp »sJahrMon*« ist|
</code></pre>
<p>außerdem gibt es beim Aufruf der Funkrion auch noch Fehler, die sich aber evtl auflösen wenn der Fehler in der Funktion gelöst ist.</p>
<pre><code class="language-cpp">mon2jahr(i,pJuM*);
</code></pre>
<pre><code>/Zinsrechnung/main.cpp|66|Fehler: expected primary-expression before »)« token|
</code></pre>
<p>Ein Hinweis auf die Ursache währe mir sogar lieber als gleich die Löung... Würde gerne so viel wie möglich selbst rausfinden, weils dann einfach besser im Kopf bleibt. <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>
<p>Danke</p>
<p>Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233213/anfänger-pointer-auf-struct</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:17:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233213.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Feb 2009 09:05:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 09:05:22 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich bin in C/C++ noch blutiger Anfänger! Ich bin erst seit ein paar Wocen dabei mich einzuarbeiten und das auch nur nebenbei.</p>
<p>Ich gehe zzt die ganzen Übungsaufgaben der verschiedenen UNIs, die man so im Netz findet durch.</p>
<p>Ein Problem haben ich zzt bei einer Aufgabe zur Berechnung von Zins und Tilgung.</p>
<p>Das Probllem tritt hier auf:</p>
<pre><code class="language-cpp">struct sJahrMon  // Datentyp zur Aufnahme vom Jahr und Monat
  {
    int Jahr;
    int Mon;
  };

sJahrMon* pJuM; 

void mon2jahr(int monate,sJahrMon* JuM) // Umwandlung von Monatsnummer nach Jahr und Monat

{
  JuM.Mon = monate%12;
  JuM.Jahr = (monate-monate%12)/12;
}
</code></pre>
<p>das ergibt Folgende Fehlermendungen:</p>
<pre><code>/Zinsrechnung/main.cpp|36|Fehler: Abfrage des Elementes »Mon« in »JuM«, das vom Nicht-Klassentyp »sJahrMon*« ist|
/Zinsrechnung/main.cpp|37|Fehler: Abfrage des Elementes »Jahr« in »JuM«, das vom Nicht-Klassentyp »sJahrMon*« ist|
</code></pre>
<p>außerdem gibt es beim Aufruf der Funkrion auch noch Fehler, die sich aber evtl auflösen wenn der Fehler in der Funktion gelöst ist.</p>
<pre><code class="language-cpp">mon2jahr(i,pJuM*);
</code></pre>
<pre><code>/Zinsrechnung/main.cpp|66|Fehler: expected primary-expression before »)« token|
</code></pre>
<p>Ein Hinweis auf die Ursache währe mir sogar lieber als gleich die Löung... Würde gerne so viel wie möglich selbst rausfinden, weils dann einfach besser im Kopf bleibt. <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>
<p>Danke</p>
<p>Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656361</guid><dc:creator><![CDATA[nordlichtHH]]></dc:creator><pubDate>Mon, 02 Feb 2009 09:05:22 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 09:08:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct sJahrMon  // Datentyp zur Aufnahme vom Jahr und Monat
  {
    int Jahr;
    int Mon;
  };

sJahrMon* pJuM;

void mon2jahr(int monate,sJahrMon* JuM) // Umwandlung von Monatsnummer nach Jahr und Monat

{
  JuM.Mon = monate%12; // . operator geht hier nicht, da musst du den -&gt; operator verwenden
  JuM.Jahr = (monate-monate%12)/12;
}
</code></pre>
<p>Wenn du zeiger auf Klassen oder Strukturen verwendest, solltest du immer den -&gt; operator nutzen anstatt den . operator.<br />
Also so hier:</p>
<pre><code class="language-cpp">void mon2jahr(int monate,sJahrMon* JuM) // Umwandlung von Monatsnummer nach Jahr und Monat

{
  JuM-&gt;Mon = monate%12; // . operator geht hier nicht, da musst du den -&gt; operator verwenden
  JuM-&gt;Jahr = (monate-monate%12)/12;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1656363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656363</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 02 Feb 2009 09:08:15 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 12:37:13 GMT]]></title><description><![CDATA[<p>Du musst eben den Zeiger wie alle Zeiger zuerst dereferenzieren, bevor du mit dem Typ dahinter arbeiten kannst.</p>
<p>Das machst du mit <code>operator*</code> :</p>
<pre><code class="language-cpp">void mon2jahr(int monate, sJahrMon* JuM)
{
   (*JuM).Mon = ...;
   (*JuM).Jahr = ...;
}
</code></pre>
<p>Und weil man das relativ häufig antrifft, gibts wie von FireFighter angedeutet den <code>operator-&gt;</code> , der einfacher zu lesen ist.</p>
<pre><code class="language-cpp">void mon2jahr(int monate, sJahrMon* JuM)
{
   JuM-&gt;Mon = ...;
   JuM-&gt;Jahr = ...;
}
</code></pre>
<p>Wenn die Operatoren nicht überladen wurden, sind die Schreibweisen <code>(*Instance).Member</code> und <code>Instance-&gt;Member</code> semantisch äquivalent.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656481</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Feb 2009 12:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 13:09:13 GMT]]></title><description><![CDATA[<p>Danke, nur so zum Verständnis, liegt das daran, dass das Objekt/Struct außerhalb der Funktion erzeugt wurde und ich mit dem Bezeichner explizid eine ebene nach oben wechseln muß?</p>
<p>Wie sieht es mit dem 2. Problem aus?</p>
<pre><code class="language-cpp">mon2jahr(i,pJuM*);
</code></pre>
<pre><code>/Zinsrechnung/main.cpp|66|Fehler: expected primary-expression before »)« token|
</code></pre>
<p>Vom gefühl her würde ich sagen das der Funktionsaufruf völlig OK ist. Zumindest wenn es sich nicht um ein Struct handelt klappt es so.</p>
<p>vielen Dank</p>
<p>Christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656512</guid><dc:creator><![CDATA[nordlichtHH]]></dc:creator><pubDate>Mon, 02 Feb 2009 13:09:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 13:19:33 GMT]]></title><description><![CDATA[<p>Hmm so richtig will ich nicht begreifen was du mit dem Aufruf bezwecken willst? Bezüglich auf deine Funktion müsste er wohl eher so aussehen wenn mich nicht alles täuscht:</p>
<pre><code class="language-cpp">mon2jahr(i,pJuM);
</code></pre>
<p>Angenommen wir reden von dem <code>pJuM</code> was du da so global deklariert hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656521</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Mon, 02 Feb 2009 13:19:33 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 13:32:16 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct sJahrMon
{
	int Jahr;
	int Mon;
};

sJahrMon* pJM;

void mon2jahr(int monate, sJahrMon* pJM)
{
	pJM-&gt;Mon = monate % 12;
	pJM-&gt;Jahr = (monate - monate % 12) / 12;
}

...

mon2jahr(1, pJM);
</code></pre>
<p>Bitte Grundlagen anschauen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656525</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656525</guid><dc:creator><![CDATA[Grundlagen]]></dc:creator><pubDate>Mon, 02 Feb 2009 13:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 14:21:08 GMT]]></title><description><![CDATA[<p>Da es noch niemand erwähnt hat, mach ich das jetzt mal. <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 />
Nicht vergessen Speicher für pJM zu vereinbaren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656555</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656555</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 02 Feb 2009 14:21:08 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Pointer auf Struct on Mon, 02 Feb 2009 16:19:35 GMT]]></title><description><![CDATA[<p>Danke an alle!</p>
<p>Das Problem ist gelöst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656648</guid><dc:creator><![CDATA[nordlichtHH]]></dc:creator><pubDate>Mon, 02 Feb 2009 16:19:35 GMT</pubDate></item></channel></rss>