Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter =...

79
Funktionen, Felder und Parameter- übergabe

Transcript of Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter =...

Page 1: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Funktionen, Felder und Parameter-übergabe

Page 2: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Funktionsaufruf mit Feld als Parameter:

Parameter =Name des Feldes

Page 3: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Beispiel:

...int main(){ int v[3] = {10,20,30}; f(v); ...}

Page 4: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Intern bedeutet dies:

Die Adresse des nullten Elements (Komponente) des Feldes wird an die Funktion übergeben.

Page 5: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Beispiel:...int main(){ int v[3] = {10,20,30}; f(v); // gleichbedeutend mit:

f(&v[0]);

...}

Dies ist eine ADRESSE

Page 6: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Wie muss also der formale Parameter in der Definition

der Funktion deklariert werden ?

Page 7: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){ int v[3] = {10,20,30}; f(v);}

void f( ){ *p = 111; *(p+1) = 222;}

int *p

Dies ist ein POINTER auf einen integer

Für Leute, die Pointer nicht mögen, gibt es eine alternative Syntax, in der mehr der Charakter des Feldes betont wird

//void f(int p[]){

Page 8: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

void f(int v[]){ *p = 111; *(p+1) = 222;}

Die beiden Schreibweisen sind gleichwertig ...

int main(){ int v[3] = {10,20,30}; f(v);}

Und in der nächsten Folie gehen wir wieder zurück zur Pointerschreibweise ...

Page 9: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){ int v[3] = {10,20,30}; f(v);}

void f(int *p){ *p = 111; *(p+1) = 222;}

Page 10: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Was geschieht beim Ablauf des Programms ?

Page 11: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0138

Page 12: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0138

Page 13: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0138

Page 14: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0138

Page 15: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0138

Page 16: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0138

Page 17: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0138

Page 18: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0138

Page 19: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0138

Page 20: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0138

0138

0138

Page 21: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 111v[0]0142 20v[1]0146 30v[2]

...

...

0138

0138

0138

Page 22: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 111v[0]0142 20v[1]0146 30v[2]

...

...

0138

(0138+1

0138

*4)=0142

0138

Page 23: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(v);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 111v[0]0142 222v[1]0146 30v[2]

...

...

0138

0138

(0138+1*4)=0142

0138

Welche Art von Parameter ist p ?(i), (o), (i/o)

Ein Input-Output-Parameter, also (i/o)

Page 24: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Frage:Wie ist der Programmablauf

beim Aufruf von

f(&v[0])

Page 25: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Antwort:Wie beim Aufruf von

f(v)

Page 26: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Frage:Wie ist der Programmablauf

beim Aufruf von

f(&v[1])

Page 27: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3] = {10,20,30}; f(&v[1]);}

void f( ){

*p = 111; *(p+1) = 222;}

int *p

Page 28: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Was geschieht beim Ablauf des Programms ?

Page 29: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0142

Page 30: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0142

Page 31: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0142

Page 32: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0142

Page 33: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0142

Page 34: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0142

Page 35: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...0142

Page 36: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

Page 37: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

Page 38: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

Page 39: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

Page 40: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

Page 41: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

Page 42: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

0142

0142

Page 43: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 20v[1]0146 30v[2]

...

...

0142

0142

0142

Page 44: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 111v[1]0146 30v[2]

...

...

0142

0142

0142

Page 45: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 111v[1]0146 30v[2]

...

...

0142

(0142+1

0142

*4)=0146

0142

Page 46: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3]= {10,20,30}; f(&v[1]);

}

void f(int *p){

*p = 111; *(p+1) = 222;}

0138 10v[0]0142 111v[1]0146 222v[2]

...

...

0142

(0142+1*4)=0146

0142

0142

Page 47: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Aufgabe:

Page 48: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Erstellen Sie die Funktion reset, die eine bestimmte Anzahl sich hintereinander befindlicher Elemente eines Integer-Feldes auf 0 setzt.Testen Sie danach die Funktion in einem Programm.

Page 49: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

// includes vorher einfügenconst int len = 10;void reset1(int *p, int von, int bis);int main(){ int zahlen[len]; int i;

// Feld irgendwie füllen for(i=0;i<len;i++){ zahlen[i] = 10+2*i; }

Page 50: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Geben Sie die einzelnen Elemente des Feldes an:

10 12 14 16 18 20 22 24 26 28

Page 51: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

// Feld ausdrucken for(i=0;i<len;i++){ printf("%d ",zahlen[i]); } printf("\n");

reset1(zahlen, 3, 7);

// Feld ausdrucken for(i=0;i<len;i++){ printf("%d ",zahlen[i]); }}

Page 52: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

void reset1(int *p, int von, int bis){ int i; for(i=von; i<=bis; i++){ *(p+i)=0; }}

Page 53: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Geben Sie die einzelnen Elemente des Feldes an:

10 12 14 0 0 0 0 0 26 28

Page 54: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Weitere mögliche Lösung:

Page 55: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

void reset2(int *p, int anz){ int i; for(i=0; i<anz; i++){ *(p+i)=0; }}

Page 56: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

// ... // statt // reset1(zahlen, 3, 7); // alternativ:

reset2( ); // ...

}

&zahlen[3], 5

Page 57: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Weitere mögliche Lösung:

Page 58: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

void reset3(int *von, int *bis){ while(von <= bis){ *von=0; von=von+1;

}}

Page 59: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

// ... // statt // reset1(zahlen, 3, 7); // alternativ:

reset3(

}

&zahlen[3], &zahlen[7] );

Page 60: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Wie müssen die Adressen der Feldelemente organisiert sein, damit diese Lösung funktioniert?

void reset3(int *von, int *bis){ while(von <= bis){ *von=0; von=von+1;

}} Adresse Feldelement 0 <

Adresse Feldelement 1 <Adresse Feldelement 2 <…

Page 61: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Aufgabe:

Page 62: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Verändern Sie die Funktion reset1 so, dass der Programmierer, der sie verwendet, bestimmen kann, auf welchen Wert (nicht nur 0), die Elemente gesetzt werden sollen. Die veränderte Funktion soll reset1a heissen.

Page 63: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

void reset1a(int *p, int von, int bis, int wert){ int i; for(i=von; i<=bis; i++){ *(p+i)=wert; }}

Page 64: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Alternative Syntax bei der Definition einer Funktion

mit einem Feld als Parameter

Page 65: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int main(){

int v[3] = {10,20,30}; f(v);}

void f(int p[]){ p[0]= 111; // *p=111 p[1]= 222; // *(p+1)=222}

p[1] *(p+1)z.B. ist gleichbedeutend mit

Dies gilt NUR innerhalb der Definition (Implementierung) der Funktion (unten).

Page 66: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Funktionsaufruf mit Feld als reinem Input-Parameter.

Page 67: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Aufgabe:Erzeugen Sie eine Funktion

mit einem Feld als Parameter. Das Feld soll nur daraufhin überprüft werden, ob seine Elemente positive

Werte haben.

Page 68: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int istPositiv(int v[], int anz){ int i=0; while(i<anz){ if(v[i]<0) return(-1); i=i+1; } return(0);}

Welche Art von Parameter ist das Feld v ?(i), (o), (i/o)

Ein reiner Input-Parameter, also (i)

Ein unkonzentrierter Programmierer könnte z.B. folgendes machen:

v[i] = v[i+1];

Welche Art von Parameter ist dann das Feld v ?

v ist dann ein (i/o)-Parameter.

Page 69: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

// Hier ist noch das// Hauptprogramm

int main(){ int erg; int w[4]={11,12,-6,9}; erg=istPositiv(w,4); printf("erg=%d\n",erg); return(0);}

Welchen Wert hat erg ?

erg hat den Wert –1, da mindestens ein Element einen negativen Wert hat.

Page 70: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Um ein Feld als reinen Input-Parameter (read-only- Speicher) zu benutzen, d.h. es (schreibgeschützt) gegen Veränderungen durch den Programmierer zu schützen, kann man den Parameter mit const als eine Konstante deklarieren.

Page 71: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int istPositiv(const int v[],

int anz){ int i=0; while(i<anz){ if(v[i]<0) return(-1); i=i+1; } return(0);}

Was würde mit einem unkonzentrierten Programmierer passieren, wenn er folgendes macht:

v[i] = v[i+1];Er bekommt eine Fehlermeldung des Compilers.

Page 72: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

int istPositiv(const int v[],

int anz){ int i=0; while(i<anz){ if(v[i]<0) return(-1); i=i+1; }

return(0);}

Welchen Parameter könnte man auch noch schreibschützen?

while(anz>1) anz=anz+1;

Was müsste man dazu tun?

Diesen Input-Parameter

const

Ist dies sinnvoll? Da anz kein Pointer, kann sein Wert doch nach außen nicht geändert werden.

Endlosschleife, deswegen sinnvoll

Page 73: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Aufgabe:Erzeugen Sie eine Funktion,

die ein Integer-Feld der Länge 2 der Größe nach

aufsteigend sortiert.2 Lösungsvarianten machen

Page 74: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

1. Lösung

Page 75: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

void my1Sort2(const int vI[],

int vO[]){ if(vI[0]<vI[1]){ vO[0]=vI[0]; vO[1]=vI[1]; } else{ vO[0]=vI[1]; vO[1]=vI[0]; }}

Welche Art von Parameter ist das Feld vI und vO ?(i), (o), (i/o)

vI : (i), also reiner Input-ParametervO : (o), also reiner Output-Parameter

Page 76: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

2. Lösung

Page 77: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

void my2Sort2(int v[]){ int temp0, temp1; temp0=v[0]; temp1=v[1]; if(v[0]>v[1]){ v[0]=temp1; v[1]=temp0; }}

Welche Art von Parameter ist das Feld v ?(i), (o), (i/o)

v : (i/o), also Input- und Output-Parameter

Page 78: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Welche Zusicherung muss an die Input-Parameter

gemacht werden:

Page 79: Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.

Sie müssen die Länge 2 haben.