Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » sizeof

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.03.2006, 12:08 Uhr
Karldin Shinowa
Professional Noob


also sizeof gibt ja die größe in Bytes an:

C++:
sizeof(int)//4



daraus folgt

C++:
int Feld[]={5,6,7,8,9};
sizeof(Feld);//5*4=20



daher um die Elementeanzahl zu wissen:

C++:
sizeof(Feld)/sizeof(Feld[0])//20/4=5



und jetzt das Problem. Ich will per Funktion ein Array ausgeben lassen:

C++:
#include<iostream>
#include<stdio.h>

void Ausgabe(int* Feld);

int main()
{
   int Feld[]={5,6,7,8,9};
   Ausgabe(Feld);
   getchar();
}


void Ausgabe(int *Feld)
{
   int Anzahl=sizeof(Feld)/sizeof(Feld[0]);//****
  
  
   for(int i=0; i<Anzahl;i++)
   {
      cout<<Feld[i];
      cout<<endl;
   }
}


so er gibt jetzt aber nur 5 aus also nur das 1. Element.....
wenn ich bei **** aber nur

C++:
int Anzahl=sizeof(Feld);


schreibe funktionierts. Warum???? sizeof(Feld) is doch 20 weil 5 Elemente zu je 4 Bytes....
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 18.03.2006 um 12:09 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.03.2006, 12:10 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


in Ausgabe ist Feld ein pointer -> 4 bytes. sizeof wird zur compilezeit ausgewertet und niht zur runtime, dadurch funktioniert das nicht auf "dynamische" objekte
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.03.2006, 12:29 Uhr
Karldin Shinowa
Professional Noob


wie mach ichs dann???
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.03.2006, 12:42 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


die größe vom feld mit übergeben
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.03.2006, 12:48 Uhr
Karldin Shinowa
Professional Noob


so etwa?


C++:
#include<iostream>
#include<stdio.h>

template<class T>
void Ausgabe(T*Feld,int Anzahl);

int main()
{
   int Feld[]={5,6,7,8,9};
   int Anzahl=sizeof(Feld)/sizeof(Feld[0]);
   Ausgabe(Feld,Anzahl);
   getchar();
}

template<class T>
void Ausgabe(T*Feld,int Anzahl)
{
   for(int i=0; i<Anzahl;i++)
   {
      cout<<Feld[i];
      cout<<endl;
   }
}    



gibts denn keine möglichkeit es auch in der Funktion rauszufinden die Anzahl???
--
Ich will die Welt verbessern, doch Gott gibt mir nicht den Code.

Dieser Post wurde am 18.03.2006 um 12:48 Uhr von Karldin Shinowa editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.03.2006, 12:49 Uhr
kronos
Quotenfisch
(Operator)


oder'n vector verwenden...
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
18.03.2006, 14:05 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

gibts denn keine möglichkeit es auch in der Funktion rauszufinden die Anzahl???


nein gibt es nicht du musst diese information explizit oder implizit mit übergeben...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: