Syntaxfrage

tobee

Erfahrenes Mitglied
Code:
int main(array<System::String ^> ^args)
{
    Console::WriteLine(L"Hello World");
    return 0;
}
Ich wollte mal nachfragen wie der Parameter zu deuten ist
Code:
array<System::String ^> ^args
Und was das L vor dem String bedeutet
Code:
Console::WriteLine(L"Hello World");

Schonmal Danke für jede Hilfe
tobee
 
Das "L" bedeutet, dass der String, der dahinter steht, aus Unicode-Zeichen besteht.
Und durch das "^" werden Handles gekennzeichnet. Das kann man sich so ähnlich vorstellen wie Zeiger auf managed-Datentypen.
 
also argc beinhaltet die anzahl der übergebenen Parameter welche in char *argv[] stehen.
bei cahr *argv[] handelt es sich um eine vektor mit zeigern auf strings. wenn du z.b. eine Datei öffnest unter windows und dann bei dieser öffnet mit klickst kannst du das progi auswählen mit dem es geöffnet wird z.b. deine consolen-exe. in argv stehen nun die übergabe parameter z.b. bei einem lied der pfad (dateiname)und so. Du kannst eine exe auch aus einem anderen Programm heraus starten und mit Parametern füllen welche du durch diese Variablen auslesen kannst.
ich hoffe ich konnte helfen
ach und noch etwas in argv[0] steht immer der pfad der exe als z.b. D:\main.exe
 
Zuletzt bearbeitet:
Noch eine kleine Ergänzung:

"array" ist eine template-Klasse; innerhalb der spitzen Klammern steht demzufolge der Typ, nämlich ein Objektzeiger (erkennbar am ^) der String-Klasse. An "main" wird also ein Objektzeiger auf ein Array mit Strings übergeben.

Bei Objektzeigern wird im Unterschied zu normalen Zeigern bei einem "delete" nur der Destruktor aufgerufen, aber nicht der Speicher freigegeben. Das erledigt dann automatisch der Garbage Collector.

Gruß
MCoder
 
Zurück