Funktionsaufruf mit Feld als Parameter:
Die Adresse des nullten Elements des Feldes wird an die Funktion übergeben.
Die Funktion ffmf soll die 2. Spalte der 1. Zeile eines zweidimensionalen Feldes auf den Wert von 197 setzen.
Beachte:Nummerierung beginnt bei 0 !
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}};
}// gleichbedeutend mit:
ffmf(zv);
ffmf(&zv[0]);
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}}; ffmf(&zv[0]);
Was wird also bei diesem Funktionsaufruf übergeben ?
Die Adresse des 0. Elements (Komponente) des 2-dimensionalen Feldes zv.
Aus welchen Elementen (Komponenten) besteht aber allgemein ein 2-dimensionales Feld ?
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
Die Elemente eines zweidimensionalen Feldes sind EINDIMENSIONALE Felder
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
Ein zweidimensionales Feld besteht also aus lauter eindimensionalen Feldern
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
welchen Speicher belegt z.B. also das 3. eindimensionale Feld (Element) von zv ?
welchen Speicher belegt also z.B. das 2. eindimensionale Feld (Element) von zv ?
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
welchen Speicher belegt z.B. also das 1. eindimensionale Feld (Element) von zv ?
welchen Speicher belegt also z.B. das 0. eindimensionale Feld (Element) von zv ?
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
Wie groß ist jeweils ein eindimensionales Feld (farbig umrandetes Element) (Speichergröße in Byte) ?
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
zv ist ein zweidimensionales Feld. Es besteht aus den farbig umrandeten eindimensionalen Feldern mit jeweils der Größe 3*4 Byte.
... weil ein eindimensionales Feld aus 3 integer Zahlen (zu je 4 Bytes) besteht.
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
Wie kann man diese eindimensionalen Felder (farbig umrandeten Speicherbereiche) jeweils programmtechnisch "ansprechen" ?
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
zv[3]
zv[2]
zv[1]
zv[0]
Wie kann man diese eindimensionalen Felder
(farbig umrandeten Speicherbereiche) jeweils
programmtechnisch in Pointerschreibweise
"ansprechen" ?
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
*(zv+3)
*(zv+2)
*(zv+1)
*(zv+0)*zv
ist gleichbedeutend mit:
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
*(zv+3)
*(zv+2)
*(zv+1)
*(zv+0)
Der Inhalt von zv+0, zv+1, zv+2, zv+3, kurz zv+i ist jeweils ein Feld
Ein Feld ist aber durch die Adresse seines nullten Elements gekennzeichnet.
Also ist der Inhalt von zv+i, also *(zv+i) eine Adresse
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
*(zv+3
*(zv+2
*(zv+1
*(zv+0*3*4)
*3*4)
*3*4)
adressgenau ist also konkret:
*3*4)
= 0100
= 0112
= 0124
= 0136
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
*(zv+3
*(zv+2
*(zv+1
*(zv+0*3*4)
*3*4)
*3*4)
*3*4)
= 0100
= 0112
= 0124
= 0136
wie wird zv[1][2] in Pointerschreibweise adressgenau angesprochen ?
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
*(0112+2*4)
*(zv+1*3*4) +2*4)
programmtechnisch in Pointerschreibweise geschrieben:
*(*(zv+1)+2)
*(zv+1*3*4)
ersetze 0112 durch *(zv+1*3*4)
= 197
= 197*(
=197
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
*(0112+2*4)
*(zv+1*3*4) +2*4)
programmtechnisch nicht in Pointerschreibweise geschrieben:
*(*(zv+1)+2)
*(zv+1*3*4)
ersetze 0112 durch *(zv+1*3*4)
= 197
= 197*(
=197
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
*(0112+2*4)
*(zv+1*3*4) +2*4)
programmtechnisch nicht in Pointerschreibweise geschrieben:
zv[1][2]=197
*(zv+1*3*4)
ersetze 0112 durch *(zv+1*3*4)
= 197
= 197*(
ffmf(&zv[0]);
Auf was zeigt die Adresse von zv[0] ?(was ist der Inhalt von &zv[0])
Auf ein eindimensionales Feld der Länge 3
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ //...später... }
int (*v)[3]
Dies ist ein POINTER auf ein Feld der Länge 3
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
Die Funktion soll zv[1][2] auf 197 setzen. Wie muss dies also programmiert werden (in Pointerschreibweise)
Was geschieht genau beim Ablauf des Programms ?
Wie wird der Parameter an die aufzurufende Funktion
übergeben ?
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
01000100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
*(*(0100+1*3*4)+2*4)=197
Zeigt auf ein Feld, also ist der Inhalt eine Adresse.
0112+2*4)*( =197
*0120=197
01000100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
15
171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
*(*(0100+1*3*4)+2*4)=197
Zeigt auf ein Feld, also ist der Inhalt eine Adresse.
0112+2*4)*( =197
*0120=197
01000100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19} {20,21,22}} ffmf(&zv[0]);}
0100 11zv[0][0]
0104 1201080112 14
15197171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){ }
int (*v)[3] *(*(v+1)+2)=197;
*(*(0100+1*3*4)+2*4)=197
Zeigt auf ein Feld, also ist der Inhalt eine Adresse.
0112+2*4)*( =197
*0120=197
01000100
Aufgabe:Erweitern Sie die Funktion ffmf
so, dass man nicht die 2.Spalte der 1.Zeile, sondern allgemein die s-te Spalte der z-ten Zeile von zv auf einen bestimmten Wert setzen
kann. Erzeugen Sie einen Aufruf in main.
void ffmf1(int (*v)[3], int z, int s, int wert){ *(*(v+z)+s)=wert; // oder genauso möglich: // v[z][s]=wert;}
void ffmf1(int (*v)[3], int z, int s, int wert);
int main(){ int zv[4][3] = {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}}; ffmf1(&zv[0],1,2,197);}
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmf(zv);}
Alternative Syntax des formalen Parameters (kann genauso verwendet werden) :
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
void ffmf( ){
}
int v[][3] *(*(v+1)+2)=197; // gleichbedeutend mit:
v[1][2]=197
Funktionsaufruf mit Pointer als Parameter:
Die Adresse des Elements der 0. Spalte der 0. Zeile des zweidimensionalen Feldes wird an die Funktion übergeben.
int main(){ int zv[4][3]= {{11,12,13},{14,15,16}, {17,18,19},{20,21,22}}; ffmp(&zv[0][0]);}Auf was zeigt die Adresse von zv[0][0] ?(was ist der Inhalt von &zv[0][0])
Auf eine integer Zahl
void ffmp( ){
}
int main(){ int zv[4][3]= {{11,12,13},{14,15,16}, {17,18,19},{20,21,22}}; ffmp(&zv[0][0]);}
int *p
Welches Element von zv wird also verändert
Diese Funktion ffmp soll mit Hilfe der Pointerschreibweise die 2. Spalte der 1. Zeile von zv auf 197 abändern.Wie wird das programmiert ?
Beachte: Nummerierung beginnt bei 0 !
Dies ist ein POINTER auf ein int
void ffmp( ){ *(p+5)=197;}
int main(){ int zv[4][3]= {{11,12,13},{14,15,16}, {17,18,19},{20,21,22}}; ffmp(&zv[0][0]);}
int *p
Was müsste man abändern, wenn nicht die 2.Spalte der 1.Zeile, sondern allgemein die s-te Spalte der z-ten Zeile von zv auf 197 gesetzt werden soll ?
16 ist das 5. Element im Feld zv. Dieses bekommt den neuen Wert 197
void ffmp( ){ *(p+z*3+s)=197;}
int main(){ int zv[4][3]= {{11,12,13},{14,15,16}, {17,18,19},{20,21,22}}; ffmp(&zv[0][0]);}
int *p
Warum 3 ?
Weil dies die Länge einer Spalte ist !!
Wer sollte den Wert von z und s festlegen ? Wo ist es also sinnvoll z und s zu deklarieren ?
Warum ist das Programm noch syntaktisch falsch ?
Weil z und s nicht deklariert sind !
void ffmp( ){ *(p+z*3+s)=197;}
int main(){ int zv[4][3]= {{11,12,13},{14,15,16}, {17,18,19},{20,21,22}}; ffmp(&zv[0][0]);}
int *p, int z, int s
Der Programmierer, der die Funktion ffmp nutzen will.Wo muss p, z und s deklariert werden ?
Warum ist der Aufruf syntaktsch falsch ?
Weil der Aufruf aus 3 Parametern bestehen muss.
Was geschieht genau beim Ablauf des Programms ?
Wie wird der Parameter an die aufzurufende Funktion
übergeben ?
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 11zv[0][0]
0104 1201080112 14
15
0100
16171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 11zv[0][0]
0104 1201080112 14
1516171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
0100
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 11zv[0][0]
0104 1201080112 14
15
010016171819202122
13
0116012001240128
0132013601400144
zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]0100+1*3 *4+2 *4 =0120
0100
Weil ein Element von zv 4 Byte (integer) benötigt !
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 110104 1201080112 14
15
0100 171819202122
13
0116012001240128
01320136014001440100+1*3 *4+2 *4 =0120
0100
zv[0][0]zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
Weil ein Element von zv 4 Byte (integer) benötigt !
int main(){ int zv[4][3]= {{11,12,13}, {14,15,16}, {17,18,19}, {20,21,22}} ffmp(&zv[0][0]);}
void ffmp(int *p){ *(p+1*3+2)=197;}
0100 110104 1201080112 14
15
0100197171819202122
13
0116012001240128
01320136014001440100+1*3 *4+2 *4 =0120
0100
zv[0][0]zv[0][1]zv[0][2]
zv[1][0]zv[1][1]zv[1][2]zv[2][0]zv[2][1]zv[2][2]zv[3][0]zv[3][1]zv[3][2]
Weil ein Element von zv 4 Byte (integer) benötigt !
Aufgabe:Erweitern Sie die Funktion ffmp so, dass man ganz allgemein die s-te Spalte der z-ten Zeile eines
zweidimensionalen Feldes mit der Spaltenlänge slen auf einen
bestimmten Wert setzen kann. Erzeugen Sie einen Aufruf in
main.