Reihungen als Argumente in C
Reihungen sind in C keine vollwertigen Objekte, denn sie können nicht mit dem Zuweisungsoperator kopierte, mit einem Vergleichsoperator miteinander verglichen oder als Argumente an Funktion übergeben werden.
Eine Funktion kann höchsten die Adresse einer Reihung als Parameterwert erhalten. Sie kann aber zur Laufzeit aus diesem Parameterwert im allgemeinen nicht erfahren, wie groß die Reihung ist. Die Information über die anzunehmende Größe könnte der Funktion aber auf anderem Weg zugänglich gemacht werden, etwa durch eine Endmarkierung in der Reihung oder als weiterer Parameterwert.
#include <stdio.h> void print( int const * p ){ while( *p )printf( "%d\n", *p++ ); } int main( void )
{ { int const a[] ={ 3, 4, 5, 7, 0 }; print( a ); }
{ int const a[] ={ 1, 2, 0 }; print( a ); }} 3
4
5
7
1
2