sizeof()



  • Hallo,

    ich habe ein kleines Problem:
    Ich will die Anzahl der ELemente eines Arrays bestimmen. Das klappt auch. Nur wenn ich es in Verbindung mit einer Funktion verwende geht es nicht.

    int main(void)
    	{
    	 char string[300];
    
    	 fill_string(string);
    
    	 int b;
    
    	 b = sizeof(string);
    	 printf("\n\n größe von b: %d", b);
    
    	 return 0;
    	}
    
    int fill_string(string_name)
    	{
    		int size_of_array;
    		size_of_array = sizeof(strin_name);
    
    		printf("sizeof array: %d", size_of_array);
    	}
    


  • Wunderhübsch, kannst Du vielleicht, wenn http://www2.informatik.uni-wuerzburg.de/dclc-faq/kap2.html dich nicht merklich weiterbringt, den echten Quelltext direkt kopieren?



  • hi

    ich komm nich drauf - hier der gesamte code

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    #include <stdio.h>
    
    int main(void)
    	{
    	 char string[300];
    	 fill_string(string);
    	 return 0;
    	}
    
    int fill_string(string_name)
    	{
    	 int size_of_array;
    	 size_of_array = sizeof(string_name);
    	 printf("sizeof array: %d", size_of_array);
    
    	 return size_of_array;
    	}
    


  • Das sieht irgendwie nicht nach ANSI-C aus, eher nach Kernighan&Ritchie. Oder irre ich mich?

    int fill_string(string_name)
    

    müßte doch eigentlich

    int fill_string(char * string_name)
    

    heißen. Bei K&R gabs ne andere Syntax, und nach der wär die Funktionsdefinition identisch mit einer, wo string_name als int definiert ist (allerdings gibts dann keinen Prototyp, damit auch keine Typüberprüfung.)

    Ums kurz zu machen (du hast offensichtlich nicht den von Daniel geposteten Link verfolgt): Es geht nicht. sizeof bestimmt die Größe aus dem Typ des übergebenen Ausdrucks. Der Typ geht aber bei Arrays, die an Funktionen übergeben werden, verloren. Logischerweise mußt du daher die Größe separat übergeben.


Anmelden zum Antworten