sizeof und zeiger



  • guten abend,

    func(int *array)
    {
    printf("%d",sizeof(array));
    }

    int array[10];
    func(array);

    klar das ich in der funktion immer 4 als ergebnis bekomme da integer 4bytes sind und der zeiger array so aufs erste element zeigt aber wie bekomme ich jetzt statt ner 4 meine gesuchten 40?



  • Garnicht. Du musst die größe in einem weitern Parameter mitgeben.
    (alternativ könntest Du aber auch vector verwenden:

    #include <vector>
    #include <iostream>
    using namespace std;
    
    void foo(const vector<int> & vec)
    {
      cout<<sizeof(int) * vec.size();
    }
    
    int main()
    {
     vector<int> test;
     test.push_back(1);
     test.push_back(2);
     test.push_back(3);
     test.push_back(4);
     foo(test);
    }
    


  • Original erstellt von <muh>:
    **
    klar das ich in der funktion immer 4 als ergebnis bekomme da integer 4bytes sind und der zeiger array so aufs erste element zeigt aber wie bekomme ich jetzt statt ner 4 meine gesuchten 40?**

    noch etwas: du bekommst hier nicht 4 raus, weil das die Größe eines Integers ist, sondern weil das die Größe eines Zeigers auf deinem System ist. Änderst du int in short bekommst du trotzdem 4 raus.

    [ Dieser Beitrag wurde am 22.04.2003 um 20:33 Uhr von niox editiert. ]


Anmelden zum Antworten