[gelöst] sizeof-Operator und Feld an Funktion übergeben
Verfasst: 9. September 2008 04:23
Hallo,
ich stehe gerade auf dem Schlauch. Ich muss, als der Stoff behandelt wurde, krank gewesen sein. Ich habe folgendes Problem, zu dem mir keine Erklärung einfällt:
In der Funktion habe ich dann probehalber auch das probiert, mit entsprechendem Ergebnis:
Sizeof() liefert in der Funktion einen für mich nicht nachvollziehbaren Wert. Auf das Feld zugreifen kann ich, wie das Beispiel zeigt, aber die Anzahl der Elemente ermitteln nicht? Das geht mir nicht in den Kopf. Was übersehe ich?
Gruß,
gelignite
ich stehe gerade auf dem Schlauch. Ich muss, als der Stoff behandelt wurde, krank gewesen sein. Ich habe folgendes Problem, zu dem mir keine Erklärung einfällt:
Code: Alles auswählen
#include <stdio.h>
void anzahlFeldelemente( int * feld )
{
int * lokalesFeld = feld;
printf( "\nAnzahl Elemente im Feld: %d\n", sizeof( lokalesFeld ) / sizeof( lokalesFeld[0] )); /* Ausgabe: 1, für mich falsch */
printf( "\nlokalesFeld[ 5 ]: %d\n", lokalesFeld[ 5 ] ); /* Ausgabe: 5 */
}
int main( void )
{
int einFeld[ 10 ] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
printf( "\nAnzahl Elemente im Feld: %d\n", sizeof( einFeld ) / sizeof( einFeld[0] )); /* Ausgabe: 10, korrekt */
anzahlFeldelemente( einFeld );
return 0;
}
Code: Alles auswählen
printf( "\nAnzahl Elemente im Feld: %d\n", sizeof( *lokalesFeld ) / sizeof( lokalesFeld[0] )); /* Ausgabe: 1 */
printf( "\nAnzahl Elemente im Feld: %d\n", sizeof( feld ) / sizeof( feld[0] )); /* Ausgabe 1 */
printf( "\nAnzahl Elemente im Feld: %d\n", sizeof( *feld ) / sizeof( feld[0] )); /* Ausgabe: 1 */
Gruß,
gelignite