<?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[verkette Liste - zuweisen von Zeiger]]></title><description><![CDATA[<p>Hallo,<br />
habe von folgendem Link eine verkette List übernommen ..</p>
<p><a href="http://www.pronix.de/pronix-827.html" rel="nofollow">http://www.pronix.de/pronix-827.html</a></p>
<p>Nachdem das erst Element angelegt wird (funktioniert prima) wird an die folgende Position das nächste Element angehängt (else)! Der erste Schritt unter <em>else</em> :</p>
<pre><code>zeiger = anfang;
</code></pre>
<p>sollte der</p>
<pre><code>struct RealTimeData *anfang = NULL;
</code></pre>
<p>an</p>
<pre><code>struct RealTimeData *zeiger = NULL;
</code></pre>
<p>übergeben werden! Dabei erhalte ich jedoch immer eine Access Violation!</p>
<pre><code>void anhaengen(unsigned int Zeit, double *PCA1, double *PCA2) {

	int i;	
   /* Zeiger zum Zugriff auf die einzelnen Elemente der Struktur*/
	struct RealTimeData *zeiger = NULL;

  /* Wir fragen ab, ob es schon ein Element in der Liste gibt. Wir suchen das Element, auf das unser Zeiger
   *  *anfang zeigt. Falls *anfang immer noch auf NULL zeigt, bekommt *anfang die Adresse unseres 1. Elements und ist
   *  somit der Kopf (Anfang) unserer Liste  */

	if(anfang == NULL) {

	/* Wir reservieren Speicherplatz für unsere Struktur für das erste Element der Liste*/
      if((anfang = (struct RealTimeData *)malloc(sizeof(struct RealTimeData))) == NULL) {
       fprintf(stderr, &quot;Kein Speicherplatz vorhanden für anfang\n&quot;);
       return;
      }

	  anfang-&gt;Zeit = Zeit;
	  for (i=0;i&lt;10;i++){
		anfang-&gt;PCA_R1[i] = PCA1[i];
		anfang-&gt;PCA_R2[i] = PCA2[i];
	  }	  

      /* Somit haben wir unseren Anfang der Liste. Von nun an zeigt der Zeiger anfang immer auf das Element vor ihm.
       * Da dies aber jetzt das 1. Element der Liste war, zeigt der Zeiger anfang auf den Zeiger next. next zeigt am
       * Ende immer wieder  NULL   */
      anfang-&gt;next = NULL;	
	}

   /* Es scheint schon mindestens ein Element in der Liste vorhanden zu sein, da der Anfang nicht == NULL ist.
    * Jetzt suchen wir so lange nach dem nächsten Element, bis der *next-Zeiger auf NULL zeigt. Somit haben wir
    * das Ende der Liste gefunden und können einen neuen Datensatz anhängen  */
   else {
	 [b]zeiger = anfang;[/b]
      //memcpy(&amp;zeiger,&amp;anfang,sizeof(RealTimeData));

	  while(zeiger-&gt;next != NULL)
         zeiger=zeiger-&gt;next;
      /* Wir reservieren einen Speicherplatz für das letzte Element der Liste und hängen es an.   */
      if((zeiger-&gt;next = (struct RealTimeData *)malloc(sizeof(struct RealTimeData))) == NULL) {
          fprintf(stderr,&quot;Kein Speicherplatz für das letzte Element\n&quot;);
          return;
      }

	  zeiger=zeiger-&gt;next; /* zeiger auf neuen Speicherplatz */      

	  zeiger-&gt;Zeit = Zeit ;
	  for (i=0;i&lt;10;i++){
		zeiger-&gt;PCA_R1[i] = PCA1[i];
		zeiger-&gt;PCA_R2[i] = PCA2[i];
	  }
      /* Wir terminieren wieder unsere Datenstruktur */
      zeiger-&gt;next=NULL;
   }
}
</code></pre>
<p>Habe schon versucht die Elemente einzeln zu kopieren .. liefert das gleiche<br />
Ergebniss. Ebenfalls erfolglos war das kopieren mit</p>
<pre><code>memcpy(&amp;zeiger,&amp;anfang,sizeof(RealTimeData));
</code></pre>
<p>Hoffe jemand kann mir da weiterhelfen!!!</p>
<p>Gruß<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149975/verkette-liste-zuweisen-von-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 07:15:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149975.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Jun 2006 06:26:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to verkette Liste - zuweisen von Zeiger on Mon, 12 Jun 2006 06:26:37 GMT]]></title><description><![CDATA[<p>Hallo,<br />
habe von folgendem Link eine verkette List übernommen ..</p>
<p><a href="http://www.pronix.de/pronix-827.html" rel="nofollow">http://www.pronix.de/pronix-827.html</a></p>
<p>Nachdem das erst Element angelegt wird (funktioniert prima) wird an die folgende Position das nächste Element angehängt (else)! Der erste Schritt unter <em>else</em> :</p>
<pre><code>zeiger = anfang;
</code></pre>
<p>sollte der</p>
<pre><code>struct RealTimeData *anfang = NULL;
</code></pre>
<p>an</p>
<pre><code>struct RealTimeData *zeiger = NULL;
</code></pre>
<p>übergeben werden! Dabei erhalte ich jedoch immer eine Access Violation!</p>
<pre><code>void anhaengen(unsigned int Zeit, double *PCA1, double *PCA2) {

	int i;	
   /* Zeiger zum Zugriff auf die einzelnen Elemente der Struktur*/
	struct RealTimeData *zeiger = NULL;

  /* Wir fragen ab, ob es schon ein Element in der Liste gibt. Wir suchen das Element, auf das unser Zeiger
   *  *anfang zeigt. Falls *anfang immer noch auf NULL zeigt, bekommt *anfang die Adresse unseres 1. Elements und ist
   *  somit der Kopf (Anfang) unserer Liste  */

	if(anfang == NULL) {

	/* Wir reservieren Speicherplatz für unsere Struktur für das erste Element der Liste*/
      if((anfang = (struct RealTimeData *)malloc(sizeof(struct RealTimeData))) == NULL) {
       fprintf(stderr, &quot;Kein Speicherplatz vorhanden für anfang\n&quot;);
       return;
      }

	  anfang-&gt;Zeit = Zeit;
	  for (i=0;i&lt;10;i++){
		anfang-&gt;PCA_R1[i] = PCA1[i];
		anfang-&gt;PCA_R2[i] = PCA2[i];
	  }	  

      /* Somit haben wir unseren Anfang der Liste. Von nun an zeigt der Zeiger anfang immer auf das Element vor ihm.
       * Da dies aber jetzt das 1. Element der Liste war, zeigt der Zeiger anfang auf den Zeiger next. next zeigt am
       * Ende immer wieder  NULL   */
      anfang-&gt;next = NULL;	
	}

   /* Es scheint schon mindestens ein Element in der Liste vorhanden zu sein, da der Anfang nicht == NULL ist.
    * Jetzt suchen wir so lange nach dem nächsten Element, bis der *next-Zeiger auf NULL zeigt. Somit haben wir
    * das Ende der Liste gefunden und können einen neuen Datensatz anhängen  */
   else {
	 [b]zeiger = anfang;[/b]
      //memcpy(&amp;zeiger,&amp;anfang,sizeof(RealTimeData));

	  while(zeiger-&gt;next != NULL)
         zeiger=zeiger-&gt;next;
      /* Wir reservieren einen Speicherplatz für das letzte Element der Liste und hängen es an.   */
      if((zeiger-&gt;next = (struct RealTimeData *)malloc(sizeof(struct RealTimeData))) == NULL) {
          fprintf(stderr,&quot;Kein Speicherplatz für das letzte Element\n&quot;);
          return;
      }

	  zeiger=zeiger-&gt;next; /* zeiger auf neuen Speicherplatz */      

	  zeiger-&gt;Zeit = Zeit ;
	  for (i=0;i&lt;10;i++){
		zeiger-&gt;PCA_R1[i] = PCA1[i];
		zeiger-&gt;PCA_R2[i] = PCA2[i];
	  }
      /* Wir terminieren wieder unsere Datenstruktur */
      zeiger-&gt;next=NULL;
   }
}
</code></pre>
<p>Habe schon versucht die Elemente einzeln zu kopieren .. liefert das gleiche<br />
Ergebniss. Ebenfalls erfolglos war das kopieren mit</p>
<pre><code>memcpy(&amp;zeiger,&amp;anfang,sizeof(RealTimeData));
</code></pre>
<p>Hoffe jemand kann mir da weiterhelfen!!!</p>
<p>Gruß<br />
Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075944</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Mon, 12 Jun 2006 06:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to verkette Liste - zuweisen von Zeiger on Mon, 12 Jun 2006 06:38:31 GMT]]></title><description><![CDATA[<p>Wie ist denn RealTimeData definiert? Sind PCA_R1 und PCA_R2 Arrays oder Zeiger?</p>
<p>Verschiebst du möglicherweise in einer anderen Funktion den anfang-Zeiger?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075948</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 12 Jun 2006 06:38:31 GMT</pubDate></item><item><title><![CDATA[Reply to verkette Liste - zuweisen von Zeiger on Mon, 12 Jun 2006 07:26:34 GMT]]></title><description><![CDATA[<p>RealTimeData ist wie folgt definiert ..</p>
<pre><code>struct RealTimeData {
	unsigned int Zeit;
	double PCA_R1[12];
	double PCA_R2[12];
	struct RealTimeData *next;
	};
</code></pre>
<p>Der anfang Zeiger wird nur hier verschoben ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075974</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Mon, 12 Jun 2006 07:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to verkette Liste - zuweisen von Zeiger on Mon, 12 Jun 2006 07:35:02 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>bei mir funktioniert die Routine anhaengen. Dein Fehler muß woanders liegen.</p>
<p>Übrigens, in anhaengen werden nur 10 Elemente kopiert, nicht 12.</p>
<h2>cu, Bernd</h2>
<pre><code>#include &lt;stdio.h&gt;
#include &lt;malloc.h&gt;

struct RealTimeData
{
	unsigned int Zeit;
	double PCA_R1[12];
	double PCA_R2[12];
	struct RealTimeData * next;
};

struct RealTimeData *anfang = NULL;
struct RealTimeData *zeiger = NULL;

void anhaengen(unsigned int Zeit, double *PCA1, double *PCA2);

int main(void)
{
	double d1[10] = { 0.1,1,2,3,4,5,6,7,8,9 };
	double d2[10] = { 0.2,1,2,3,4,5,6,7,8,9 };
	double d3[10] = { 0.3,1,2,3,4,5,6,7,8,9 };

	anhaengen( 0, d1, d2 );
	anhaengen( 1, d2, d3 );
	anhaengen( 2, d3, d1 );

	for ( zeiger = anfang; zeiger != NULL; zeiger = zeiger-&gt;next )
		printf( &quot;%d:%g %g\n&quot;, zeiger-&gt;Zeit, zeiger-&gt;PCA_R1[0], zeiger-&gt;PCA_R2[0] );
	getchar();
	return 0;
}

void anhaengen(unsigned int Zeit, double *PCA1, double *PCA2) {
// ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1075981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075981</guid><dc:creator><![CDATA[bst2]]></dc:creator><pubDate>Mon, 12 Jun 2006 07:35:02 GMT</pubDate></item><item><title><![CDATA[Reply to verkette Liste - zuweisen von Zeiger on Mon, 12 Jun 2006 07:56:58 GMT]]></title><description><![CDATA[<p>kanns Du mir mal Deine anhaengen() posten ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075997</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Mon, 12 Jun 2006 07:56:58 GMT</pubDate></item><item><title><![CDATA[Reply to verkette Liste - zuweisen von Zeiger on Mon, 12 Jun 2006 08:07:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>die habe ich von Deinem 1. Beitrag kopiert und NICHTS daran geändert.</p>
<p>cu, Bernd</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076002</guid><dc:creator><![CDATA[bst2]]></dc:creator><pubDate>Mon, 12 Jun 2006 08:07:11 GMT</pubDate></item><item><title><![CDATA[Reply to verkette Liste - zuweisen von Zeiger on Mon, 12 Jun 2006 10:09:04 GMT]]></title><description><![CDATA[<p>Hi,<br />
bei einem Kollegen von mir geht's auch .. kann es an C/C++ Einstellungen liegen, bzw. gibt es Memory-Einstellung des Compilers, welche so ein Verhalten verursachen können? Arbeite mit VC 6.0 ..</p>
<p>Gruß<br />
daMike</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1076102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1076102</guid><dc:creator><![CDATA[daMike]]></dc:creator><pubDate>Mon, 12 Jun 2006 10:09:04 GMT</pubDate></item></channel></rss>