C++ Programmieren unter Linux

Post Reply
Message
Author
oli
Posts: 46
Joined: 25. Dec 2000 15:40

C++ Programmieren unter Linux

#1 Post by oli »

Hi Leute,

ich hab' mir jetzt mal vorgenommen, mit dem C++ Programmieren anzufangen. Dazu noch einige Fragen:

Gibt es irgendwo ein vernünftiges Tutorial, das zum Einstieg geeignet ist? Unter "vernünftig" verstehe ich, das es nicht gleich mit 60 Seiten ankommt, denn schließlich muß ich auch noch meiner Ausbildung nachkommen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">))

Tja, desweiteren würde mich mal interessieren, wie dieser ganze Spaß mit den Pointern funktioniert. Ich hab' zwar ein Buch, aber das erklärt Pointer nur im Zusammenhang mit dem durchlaufen von char[] arrays. Ein englischsprachiges Tutorial brachte auch (noch) nicht den gewünschten Erfolg. Und ich verstehe einfach Ausdrücke wie "some_function(char *, int numbers[])" nicht!

Und abschließend wollte ich noch mal fragen ob mir jemand erklären kann, wie man dynamisches und statisches Linken macht. Wo genau ist der Unterschied und was muss ich dem g++ mitgeben, damit er das macht was ich will ?

Vielen Dank schon mal im voraus <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Oliver

P.S.: Warum ist hier in letzter Zeit eigentlich so wenig los?

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: C++ Programmieren unter Linux

#2 Post by bakunin »

Guten Morgen! (Oh jeh, ich muss demnächst schlafen gehen...)

Tutorials gibt es tausende, ein besonders gutes wüsste ich gerade nicht, aber irgendwer kann dir da bestimmt was empfehlen.

Zum allgemeinen Verständnis von Zeigern: Wenn du die Funktion

void foo (int i) { i++; }

hast und machst dann

int bar = 4711;
foo (bar);

wird danach bar immer noch 4711 sein, weil nur eine Kopie übergeben wurde. Wenn du den Wert einer Variablen in einer Funktion ändern willst, musst du eben über einen Zeiger gehen (man kann alternativ auch eine Referenz nehmen).

void foo (int *i) { (*i)++; }

int bar = 4711;
foo (&bar);

Ganz einfach, oder? :)

Zu dem Ausdruck: Er ist nicht vollständig, sondern nur ein aus dem Kontext gerissener Ausschnitt, der in C++ so alleine nicht stehen kann. Sieht aus wie die Deklaration einer Funktion mit zwei Parametern (der Rückgabewert fehlt, in C++ gibt's kein implicit-int mehr wie in C). Dabei sind die Namen der Parameter nicht angegeben, nur die Typen. Der erste ist ein Zeiger auf einen char, der zweite ein Zeiger auf einen int (ja, auch das ist ein Zeiger, weil ein Array nur übergeben werden kann, indem man einen Zeiger auf ein Element des Arrays übergiebt).

In einem statischen Binary sind alle Bibliotheken, die es verwendet, enthalten, also reine Platzverschwendung. Bei dynamisch gelinkten Binarys werden Bibliotheken beim Aufruf des Programms gegen das Programm gelinkt. Der Code der Bibliothek muss auch nur einmal geladen sein, wenn mehrere Programme, die gleichzeitig laufen, diese Bibliothek verwenden. Das Standardverhalten von gcc ist deshalb dynamisches Linken; statisch kann man es machen lassen, indem man die Option -static angiebt.

Cheers,
Wolfgang

PS: Gegenfrage: Warum sollte hier mehr los sein?

Post Reply