WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 25.11.2003, 19:42   #31
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard

Zitat:
Original geschrieben von kikakater
main()

ist das gleich wie

int main (void)

void bedeutet es wird kein Wert vom Betriebssytem übernommen.

void im allgemeinen bedeutet kein Datentyp.

void *Zeigervariable;

bedeutet, daß der Variablen Zeigervariable Adressen jeglicher Zeigervariableninhalte zugewiesen werden können.

char *Zeichenkette,*String_4711;

int *Zeiger_auf_Lottoziehungszahl;

Zeigervariable= Zeichenkette;

Zeigervariable= String_4711;

Zeigervariable= Zeiger_auf_Lottoziehungszahl;

(Das) Ist alles möglich - lediglich das

Zeiger_auf_Lottoziehungszahl= String_4711;

ist nicht erlaubt, weil die Datentypen auf die die Zeigervariablen zeigen, unterschiedlich sind.



Wenn man an der Eingabeaufforderung - dem DOS Prompt ist gemeint oder an der Linux Shell - folgendes eingibt:

bastet_prg_maxipraxihaxi parameter1 2 3 4 parameter5

so muß / sollte man main folgendermaßen definieren um auf diese Strings (fünf an der Zahl, nämlich): "parameter1" "2" "3" "4" "parameter5" (ohne Anführungszeichen natürlich, NAAHHHH, bastet Du machst mich schwach !) in der Funktion main zugreifen zu können:

int main ( int argc, char **argv )

oder

int main ( int argc, char *argv[] )


Variante 1 deklariert argv als Zeiger auf einen Zeiger und darob ein Array von Strings.

Variante 2 deklariert argv als Feld (=Array) von Strings.

Ein String hat eine Anfangsadresse und wird so implementiert:

char *zeigervariable;

oder

char zeichen_array_oder_auch_string_genannt[20]

bzw. ohne Längenangabe:

char zeichen_array_oder_auch_string_genannt[]


Ohne Längenangabe kann man (muss man) ein Char Array in einem Funktionskopf deklarieren.

argc beinhaltet 6 Argumente, nämlich den Programmnamen "bastet_prg_maxipraxihaxi" und die 5 eingegebenen Worte ("parameter1" bis "parameter5", dazwischen "2" "3" und "4" *herum[schüchter|drucks] ich tu*)

Also:

Code:
int main ( int argc, char **argv )
{
 int i;

 for(i=0; i<argc; i++)
  printf("Argument %d:%s<\n",i,(*argv)++);

 return 0;
}
Soll argc und argv in jeder Funktion nutzbar sein, kann man deren Werte (also den integer Wert von argc sowie den Adresswert der Variablen argv) an globale Variablen übergeben.

Code:
int ich_machs_jetzt_in_einer_funktion (void); /* Prototyp */

int g_argc;
char **g_argv;

int main ( int argc, char **argv )
{
 /* bitte nicht vergessen, sonst stürzt das Programm unweigerlich ab - u.U. zumindest */
 g_argc= argc;
 g_argv= argv;

 ich_machs_jetzt_in_einer_funktion();

 return 0;
}

int ich_machs_jetzt_in_einer_funktion (void)
{
 int i;
 char **l_argv= g_argv; /* lokale Zeigervariable, vielleicht brauchen wir den ursprünglichen Wert
der globalen Zeigervariablen g_argv ja noch,
deswegen g_argv hier nicht verändern */

 for(i=0; i<g_argc; i++)
  printf("Argument %d:%s<\n",i,(*l_argv)++);

 return 0;
}
mfg Kikakater
also wer do einen schwach macht, du machst mich absolut fertig

dam, bis jetzt hab ich immer nur main() oder int main() benutzt naja rhide schreit zwar bei main() aber ich hab keinen error. aba ich hab auch in anderen beispielen int main(void) oder void main (void) gesehen. und jaaa ich hab auch schon genügend links, erklärungen usw. gelesen... aba überall wirds gleich erklärt also bitte erklärung für dummies und ned irgendwelche intelligenz voraussetzen

{und was dass betrifft: bastet_prg_maxipraxihaxi parameter1 2 3 4 parameter5
wär da nicht besser int bastet_prg_maxipraxihaxi[5] odr. redst wieder mal an mich vorbei? }
waaahhh - i muss des einfach kapieren.
ajo und da fällt mir ein - hab schon über die zeiger und arrays gelesen, wird aber noch nicht gefordert. des lern ich erst wenn ich die prüfung schaff und den c++ kurs machen darf
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 25.11.2003, 19:52   #32
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard

oh mann oh mann, ich glaub mei hirn hat schon nen bluescreen...

sorry, aber ich bin kein meister im erklären, deshalb reden wir scheinbar manchmal aneinander vorbei.

soweit ichs behirnt hab:

main() der compiler muckt zwar mit info auf und meint er nimmt void an, aber er hat keinen error.

also schreib ich halt ab jetzt immer int main(void) - ich hab genügend unterlagen, aber mir fehlt irgendwie dazu eine plausieble erklärung... für dummies keine ausschweifungen in irgendwelche richtungen - einfach nur ne gute erklärung zur syntax.
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 25.11.2003, 19:57   #33
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 58
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von Bastet
Code:
int main (void)
AH JAAAAAAAA das wars jezt bekomm ich nur noch ne infomeldung mit exit o *dankeschön*
@Bastet:

Wenn ich dich auf etwas hinweisen darf: Einige Postings vorher warst du bereits bei 'int main' angelangt. Schon vergessen
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 25.11.2003, 20:08   #34
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard

Zitat:
Original geschrieben von Flink
@Bastet:

Wenn ich dich auf etwas hinweisen darf: Einige Postings vorher warst du bereits bei 'int main' angelangt. Schon vergessen
stimmt, aber er hats mit return 0; ergänzt
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 25.11.2003, 20:15   #35
deleted_150216
Inventar
 
Registriert seit: 28.08.2001
Ort: Österreich
Beiträge: 1.597


Standard

kauf dir das buch

C Programmieren von Anfang an
ISBN: 3499600749

Das Buch ist das richtige für Anfänger, alles genau erklärt mit Übungen und Aufgaben zum selber lösen und wenn man nciht mehr weiter weiß, steht hinten ne lösung.

Das ganze kostet rund 10 Euro und ist das Geld mehr als Wert.
deleted_150216 ist offline   Mit Zitat antworten
Alt 25.11.2003, 20:19   #36
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 58
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von Bastet
stimmt, aber er hats mit return 0; ergänzt
Hm, auch das hatten wir schon einmal.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Alt 25.11.2003, 20:21   #37
Bastet
Elite
 
Registriert seit: 07.09.2000
Beiträge: 1.036


Standard

Zitat:
Original geschrieben von noble
kauf dir das buch

C Programmieren von Anfang an
ISBN: 3499600749

Das Buch ist das richtige für Anfänger, alles genau erklärt mit Übungen und Aufgaben zum selber lösen und wenn man nciht mehr weiter weiß, steht hinten ne lösung.

Das ganze kostet rund 10 Euro und ist das Geld mehr als Wert.
thx, das problem ist nicht die lektüre - davon hab ich genug. meistens wird halt ein punkt in jedem buch gleich erklärt. wenn du den punkt mit der erklärung dort nicht verstehst, hilft dir eine andere lektüre genausowenig, nur ne andere erklärung zu dem punkt würde helfen.

jup, ich weiss, habe in diesem thread schon einige punkte erfragt und antworten bekommen, werde aber demnächst für eigene fragen auch eigene threads aufmachen - deshalb ist wahrscheinlich auch bei manchen verwirrung entstanden
aber ich muss sagen dieser thread hat mir schon sehr viel gebracht
____________________________________
Bye Bastet

Bastet ist offline   Mit Zitat antworten
Alt 26.11.2003, 10:14   #38
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Wenn man an der Eingabeaufforderung - dem DOS Prompt ist gemeint oder an der Linux Shell - folgendes eingibt:

bastet_prg_maxipraxihaxi parameter1 2 3 4 parameter5

Dieses komische Ding (bastet_prg_maxipraxihaxi) ist ein Programm ! (sowas wie Excel.exe)

sprich bastet_prg_maxipraxihaxi.exe

Du sollst also nicht

> dir c:\

eingeben

sondern

> bastet_prg_maxipraxihaxi parameter1 2 3 4 parameter5

im DOS Modus = an der Eingabeaufforderung

wenn Du nur

> bastet_prg_maxipraxihaxi

eingibst

so steht im C Programm in der Variablen argc 1 und in der Variablen argv 4 Millionen und irgendwas (eine Adresse also), unter *argv ist die gleiche Adresse + 4 * Anzahl der Argumente zu finden und unter **argv findet sich schließlich ein 'b' (Beginn des Programmnamens bastet_prg_maxipraxihaxi), unter *(argv+1) ist die Adresse + 4 * Anzahl der Argumente + Länge des Programmpfades zu finden, und unter **(argv+1) findet sich das Zeichen 'p' (für parameter1)

argv[0] <-- "bastet_prg_maxipraxihaxi"
argv[1] <-- NULL

sonst

argv[0] <-- "bastet_prg_maxipraxihaxi"
argv[1] <-- "parameter1"
argv[2] <-- "2"
argv[3] <-- "3"
argv[4] <-- "4"
argv[5] <-- "parameter5"

für argv[0] kann man auch *argv schreiben

für argv[1] *(argv+1) usw.

Alles klar ?

Code:
#include <stdio.h>

int main(int argc, char **argv)
{
 for(int i=1; i<=argc; i++)
 {
  printf("Argument Nummer %d = >%s<\n",i,*argv++);
 }

 system("PAUSE");	

 return 0;
}
mfg Kikakater
kikakater ist offline   Mit Zitat antworten
Alt 26.11.2003, 10:33   #39
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

Zitat:
Original geschrieben von kikakater
Ergänzung (Korrektur), damit Du ÜBERHAUPT die Chance hast es zu verstehen: wenn Du nur

> bastet_prg_maxipraxihaxi

eingibst

so steht im C Programm in der Variablen argc 1 und in der Variablen argv 4 Millionen und irgendwas (eine Adresse also), unter *argv ist die gleiche Adresse + 4 * Anzahl der Argumente zu finden und unter **argv findet sich schließlich ein 'b' (Beginn des Programmnamens bastet_prg_maxipraxihaxi), unter *(argv+1) ist NULL zu finden

argv[0] <-- "bastet_prg_maxipraxihaxi"
argv[1] <-- NULL
kikakater ist offline   Mit Zitat antworten
Alt 16.12.2003, 11:23   #40
Flink
Hero
 
Registriert seit: 29.08.2001
Alter: 58
Beiträge: 904


Flink eine Nachricht über ICQ schicken Flink eine Nachricht über Skype™ schicken
Standard

Zitat:
Original geschrieben von noble
kauf dir das buch

C Programmieren von Anfang an
ISBN: 3499600749

Das Buch ist das richtige für Anfänger]
Heute gibt es sogar das Buch "Workshop C++" um 1,99 € zum Download bei PC-Welt, das auch für C-Programmierer geeignet ist.
____________________________________
Bibel
Flink ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:48 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag