Du kannst die Anzahl der Elemente des Arrays nicht in einer Funktion ermitteln, weil lediglich nur der Zeiger des ersten Elements übergeben wird, und nicht eine Kopie des Arrays.
Demnach ermittelt sizeof(arr) auch die größe des Zeigers, und der ist 4 Bytes groß (32 Bit). Ein Integer ist ebenfalls 32 Bit groß. Deswegen spuckt sizeof(arr)/sizeof(int) auch 1 aus. Eine Möglichkeit wäre, einen zusätzlichen Parameter mit der Elementenanzahl mit zugeben. Also:
Meine C-Kenntnisse sind aber auch recht eingerostet. Vielleicht gibt es da auch noch eine elegantere Lösung.
Wenn du c++ nutzen willst (und nicht 'nur' c), wäre es ein stückweit eleganter, gleich die vector Klasse der std ( Referenz: http://www.cplusplus.com/reference/vector/vector/ ) zu verwenden. Dann geht es auch ohne die Länge anzugeben.
Vielen Dank euch beiden. Das mit den Vektoren ist mir so noch gar nicht in den Sinn gekommen, aber dann werde ich mich mal mit denen näher auseinandersetzen.