Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Feldelemente zählen (Zugriff mittels Zeiger, C++) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Feldelemente zählen (Zugriff mittels Zeiger, C++)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Nuuky
Grünschnabel


Dabei seit: 01.11.2006
Beiträge: 1

Feldelemente zählen (Zugriff mittels Zeiger, C++) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

N'Abend allerseits!

Ich habe folgende Aufgabe und bräuchte ein wenig Schützenhilfe. Einer Funktion soll ein Zeiger auf einen selbst struktutierten Datentypen übergeben werden, die dann die Anzahl der Feldelemente bestimmt und das Ergebnis zurückliefert.

Mein Problem ist die Überprüfung der Feldelemente. Mein bisheriges Programm gibt einen Schmarn aus.

Der strukturierte Datentyp sieht so aus:
struct IFeld() {
unsigned int Anz;
int* lptr;
};

In der main()-Funktion wird für lptr ein zufallegroßes Feld bereitgestellt.

Ich habs mit eine while-Schleife versucht, deren Bedingung die Existenz eines Elementes ist, also sowas wie while(Feld->lptr[i]) {...}


Kann mir jemand weiterhelfen?

Gruß
Nuuky

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nuuky: 15.12.2006 22:16.

15.12.2006 22:14 Nuuky ist offline E-Mail an Nuuky senden Beiträge von Nuuky suchen Nehmen Sie Nuuky in Ihre Freundesliste auf Fügen Sie Nuuky in Ihre Kontaktliste ein
dachdecker2
Moderator


Dabei seit: 14.09.2006
Beiträge: 20

RE: Feldelemente zählen (Zugriff mittels Zeiger, C++) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Feldelemente zu zählen ist keine gute Idee - woran stellst du denn fest, ob ein Element das letzte Element ist?

Eine geeignetere Herangehensweise wird sein, die Länge des Feldes irgendwo, zum Beispiel in einer anderen Variable zu speichern. Wenn du wirklich zählen willst, musst du das Letzte Element (oder das, was nach dem letzten kommt) irgendwie markieren.

Ob ein element existiert ist eine Frage, die das Programm nicht beantworten kann. Der Speicher ist forlaufent - du kannst ein einem 10 elemente langen Array auch das 123. element ansprechen, nur dass da irgendetwas anderes gespeichert ist, vielleicht sogar code - du musst also verhindern, hinter dem Array einen schreibzugriff zu machen.

__________________
Gruß, dachdecker2

http://rettedeinefreiheit.de
15.12.2006 23:59 dachdecker2 ist offline E-Mail an dachdecker2 senden Beiträge von dachdecker2 suchen Nehmen Sie dachdecker2 in Ihre Freundesliste auf Fügen Sie dachdecker2 in Ihre Kontaktliste ein MSN Passport-Profil von dachdecker2 anzeigen
Tobias
Routinier


Dabei seit: 18.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es ist genau wie unser Herr Dachdecker sagte: Man kann in einer Schleife nicht überprüfen, wann das letzte Feld in *lptr kommt. Es sei denn die Struktur regelt es so, dass das letzte Feld z.B. einen bestimmten Wert hat. Sonst wirst du über das tatsächliche letzte Feld hinausschießen und uninitialisierte Werte bekommen oder aber eine Speicherzugriffsverletzung.

Wie ich deiner Struktur entnehme, musst du das aber auch garnicht tun sondern nur den Wert "Anz" auslesen. Dieser muss natürlich bei jedem Vergrößern oder Verkleinern der Liste neu gesetzt werden.
16.12.2006 12:16 Tobias ist offline E-Mail an Tobias senden Beiträge von Tobias suchen Nehmen Sie Tobias in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Feldelemente zählen (Zugriff mittels Zeiger, C++)