![]() |
![]() |
|
|
|||||||
| Programmierung Rat & Tat für Programmierer |
|
|
Themen-Optionen | Ansicht |
|
|
#2 |
|
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
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) */
l für lokal das d für daten das p für pointer mfg Kikakater |
|
|
|
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|