Und noch ein Tip für den Threadstartet:
wenn eine Funktion einen Pointer übernimmt, so wie die hier
1 | void foo( int * a )
|
2 | {
|
3 | ...
|
dann heißt das nicht zwangsläufig, dass der Aufrufer eine
Pointervariable bereitstellen muss
1 | int main()
|
2 | {
|
3 | int * b;
|
4 |
|
5 | foo( b );
|
ganz im Gegenteil! In den meisten Fällen will die Funktion eine Adresse
haben, an der sie etwas findet oder auf die sie einen Wert schreiben
kann
1 | int main()
|
2 | {
|
3 | int b;
|
4 |
|
5 | foo( &b );
|
6 | }
|
wobei Arrays ein Sonderfall sind. Arrays werden beim Aufruf einer
Funktion immer so übergeben, dass die Funktion die Startadresse des
Arrays bekommt
1 | int main()
|
2 | {
|
3 | int b[20];
|
4 |
|
5 | foo( b );
|
6 | }
|
All das, und noch viel mehr, all die kleinen und großen Feinheiten und
Fallen, die es in der C Programmierung gibt, finden sich in jedem
C-Lehrbuch.