C-Programmierung
Array Parameter Beispiel
← Arrays als Parameter | ● | Einsatz von Zeigerarithmetik →
Implizites Beispiel:
void init(int a[10]) /* implicit declaration of pointer */
{
int i;
for (i=0; i<10; i++) a[i]=i+1;
}
int a[10], b[10]; /* definition of array */
init(a);
init(b);
{
int i;
for (i=0; i<10; i++) a[i]=i+1;
}
int a[10], b[10]; /* definition of array */
init(a);
init(b);
Explizites Beispiel:
int sum(const int *a, int n) /* explicit declaration of pointer */
{
int i,x;
for (x=0,i=0; i<n; i++) x += a[i];
return(x);
}
int a[5] = {1,2,3,4,5}; /* definition of array with initialization */
int s = sum(a, 5);
{
int i,x;
for (x=0,i=0; i<n; i++) x += a[i];
return(x);
}
int a[5] = {1,2,3,4,5}; /* definition of array with initialization */
int s = sum(a, 5);
Um den Unterschied zu Call-By-Reference Parametern zu verdeutlichen, benutzt man const-Parameterzeiger. In ersterem Fall werden Werte zurück geschrieben, in letzterem Fall sollen nur Werte übergeben werden, d.h. das Schreiben wird durch die Verwendung des const Schlüsselwortes verboten.
Call-by-Value:
void set(int v) // local copy, no side effect
{
v=42;
}
{
v=42;
}
Call-by-Reference:
void set(int *a) // read and write
{
*a=42;
}
{
*a=42;
}
Array-as-Parameter:
int get(const int *a) // read only, no side effect
{
return(*a);
}
{
return(*a);
}