Bender86
Lieutenant
- Registriert
- Jan. 2007
- Beiträge
- 722
Moin zusammen,
da ich im Studium (technische Informatik) grade C++ benutzen soll/muss spiele ich grade ein bisschen damit herum. Ich möchte im Moment den Inhalt eines Arrays auf der Konsole ausgeben. Dazu habe ich mir 3 Methoden geschrieben, eine main(), eine print(), die das Array ausgeben soll und eine arrayLength() zur Bestimmung der Länge des Arrays. Das ganze sieht so aus:
Da ich wie gesagt ein bisschen rumexperimentiere hab ich die Methode für die Länge für generische Datentypen gemacht. (zumindest kenn ich das so von Java) Wenn ich das ganze Ausführe erhalte ich auf der Konsole:
sizeof(a) gibt mir in Main also die Größe in Bytes des gesamten Arrays zurück. In den anderen Methoden, an die "a" übergeben wird, aber scheinbar nur die Größe von einem Integer, also 4 Bytes. Zumindest erkläre ich mir das so.
Stimmt meine Vermutung? Was muss ich ändern damit ich bei arrayLength() die richtige Größe ermitteln kann?
Viele Grüße,
Bender
P.s: Nein, das ist keine Hausaufgabe, ich versuche auch außerhalb der Aufgaben ein bisschen zu experimentieren.
da ich im Studium (technische Informatik) grade C++ benutzen soll/muss spiele ich grade ein bisschen damit herum. Ich möchte im Moment den Inhalt eines Arrays auf der Konsole ausgeben. Dazu habe ich mir 3 Methoden geschrieben, eine main(), eine print(), die das Array ausgeben soll und eine arrayLength() zur Bestimmung der Länge des Arrays. Das ganze sieht so aus:
Code:
#include <iostream>
using namespace std;
template <class T>
int arrayLength(T a[]) {
cout << "Methode arrayLength(): sizeof(a): " << sizeof(a) << endl;
cout << "Methode arrayLength(): sizeof(a) / sizeof(T): " << sizeof(a) / sizeof(T) << endl;
return sizeof(a) / sizeof(T);
}
int print(int a[]) {
cout << "Methode print(): sizeof(a): " << sizeof(a) << endl;
for(int i = 0; i < arrayLength(a)-1; i++) {
cout << a[i] << endl;
}
return 1;
}
int main() {
int a[] = {0,1,2,3,1,2,7,4,5,6,7,5,4,3};
cout << "Methode main(): sizeof(a): " << sizeof(a) << endl;
print(a);
return 1;
}
Da ich wie gesagt ein bisschen rumexperimentiere hab ich die Methode für die Länge für generische Datentypen gemacht. (zumindest kenn ich das so von Java) Wenn ich das ganze Ausführe erhalte ich auf der Konsole:
Code:
Methode main(): sizeof(a): 56
Methode print(): sizeof(a): 4
Methode arrayLength(): sizeof(a): 4
Methode arrayLength(): sizeof(a) / sizeof(T): 1
sizeof(a) gibt mir in Main also die Größe in Bytes des gesamten Arrays zurück. In den anderen Methoden, an die "a" übergeben wird, aber scheinbar nur die Größe von einem Integer, also 4 Bytes. Zumindest erkläre ich mir das so.
Stimmt meine Vermutung? Was muss ich ändern damit ich bei arrayLength() die richtige Größe ermitteln kann?
Viele Grüße,
Bender
P.s: Nein, das ist keine Hausaufgabe, ich versuche auch außerhalb der Aufgaben ein bisschen zu experimentieren.