WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

 
 
Themen-Optionen Ansicht
Alt 24.11.2003, 22:20   #2
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Du sollst ein Zeigerfeld (Pointerarray) sortieren und nicht die Daten !

Es geht schneller ein Feld über 4 Bytes Zeigeradressen (eine 32 Bit Adresse) zu sortieren, als die Datensatz Blöcke a 100 Bytes.

Code:
struct S_student {
char nachname[30],vorname[20],adresse[40],plz[8],ort[35];
long gebdat /* JJJJMMTT */
 ,matnr;
};

struct S_student gd_student[100],*gp_student[100];

for(i=0;i<100;i++)
{
 gp_student[i]= &gd_student[i];
}

/*

 und jetzt über gp_student[i]->matnr auf die Matrikelnummer zugreifen sowie
mittels lokaler Zeigervariable lp_student einen Austausch der Adressen vornehmen,
die Daten bleiben am ursprünglichen Ort.

*/

lp_student= gp_student[i];
gp_student[i]= gp_student[j];
gp_student[j]= lp_student;

/* es wurden nur Adressen vertauscht, Danke für's Gehirn einschalten :) */

Die Ausgabe erfolgt nicht etwa über:

gd_student[i].<member>
sondern über
gp_student[i]-><member>

/* für alle i von 0 bis zur Anzahl der Studenten - 1 (die Anzahl der Studenten ist jedenfalls / muss jedenfalls sein <= 100) */
g steht übrigens für global
l für lokal
das d für daten
das p für pointer

mfg Kikakater
kikakater ist offline   Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:28 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag