Ich habe meine sizeof(array)/sizeof(*array)
ausgedruckt und bekomme die Nummer drei, aber wenn ich mein Array in meine Funktion gebe, gibt es 2 aus, wenn es in einer Variablen gespeichert ist, und iteriert daher eine Zeit weniger als es sollte.Warum iteriere ich weniger oft als erwartet?
void printAry(int ary[])
{
int size = sizeof(ary)/sizeof(ary[0]);
cout<<size;//size will print out 2! why?
for(int i = 0; i < size;i++)
{
cout<<ary[i];
}
}
int main() {
int ary[3] = {1,2,3};
cout<<sizeof(ary[0]);
return 0;
}
Warum wiederholt es ein Mal weniger als erwartet?
Das Array wird als ein Pointer innerhalb der Funktion interpretiert, daher das Problem. Schlimmer noch, du übergibst ein einzelnes Mitglied von 'ary' an die Funktion, nicht das ganze Array. – ForceBru
'ary' ist Zeiger in' printAry', nicht 'Array von int'. – BLUEPIXY