ich frage mich gerade, ob es eine effektive Methode gibt das letzte (gültige) Element eines Vektors auf effektive Weise zu ermitteln. Mit effektiv meine ich nicht das Druchlaufen des gesamten Vektors, bis ich das Ende erreicht habe.
Hier mal ein Beispiel um die Frage zu verdeutlichen:
#define LEN 5 void ausgabe( int *liste ) { int *last; int cnt = 0; /*Letztes Element aus der Liste ermitteln*/ while( *liste != -1 ) last = liste++; while( cnt < LEN - 1 ) { printf( "Zahl: %d\n", *last-- ); cnt++; } } int main( void ) { int *liste; liste = malloc( sizeof(int) * LEN ); if( liste != NULL ) { liste[0] = 4; liste[1] = 3; liste[2] = 2; liste[3] = 1; liste[4] = -1; ausgabe( liste ); } return 0; }
Der Vektor wird mit -1 am Ende abgeschlossen, damit ich das Ende erkennen kann. Wie man aber in der Funktion ausgbe sieht muss ich erst ans Ende des Vektors "laufen" um die Speicheradresse des letzten Elements zu ermitteln.
Jetzt meine Frage, geht das auch irgendwie ohne die WHILE-Schleife?
Danke für eure Hilfe.
Grüße
Fabi