Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Erste Hilfe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 < [ 3 ]
010
18.01.2004, 22:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


char ist nur ein buchstabe...
um einen string also eine menge von buchstaben darstellen zu können brauchst du ein char-array

jetzt klar?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
18.01.2004, 22:42 Uhr
Pablo
Supertux
(Operator)



Zitat:
Matze postete
dann müsste ich doch folgendes sagen können:

C++:

char test;
   test[1] = "hallo";
   test[2] = "du";
   printf("%s\n",test[1]);


so verstehe ich ein array
geht aber nicht


Das ist komplett falsch. Wie Windalf sagt, char speichert nur ein Zeichen, d.h. char ist nur ein Buchstabe. char test kann dann nur einen Buchstabe speichern. test[1] ist das 2. Element des Arrays test, aber test ist kein Array.

"hallo" ist eine Zeichenkette, d.h. mehrere Buchstaben hintereinander. Dafür braucht man ein Array. char* test = "hallo"; ist gültig
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
18.01.2004, 23:14 Uhr
Hans
Library Walker
(Operator)



Zitat:
Pablo postete
"hallo" ist eine Zeichenkette, d.h. mehrere Buchstaben hintereinander. Dafür braucht man ein Array. char* test = "hallo"; ist gültig
Hey Pablo,

jetzt verwirr ihn doch nicht noch mit Zeigern. Es gibt ja auch noch diese Möglichkeit:
C++:
char wort[]="Hallo!";
Dabei bestimmt der Compiler selbst, wieviele Zeichen nötig sind, um die zeichenkette zu speichern.


Zitat:

C++:
char test;
   test[1] = "hallo";
   test[2] = "du";
   printf("%s\n",test[1]);


damit definiertst Du 3 (in Worten: drei) Variablen, die obendrein alle gleich heissen. Die Fehlermeldung dürfte also "Type Mismatch" oder "Mehrfachzuweisung" lauten. Die Variablen, die Du definierst sind: test, test[1] und test[2].
test ist dabei vom typ char.
test[1] ist ist ein array vom typ char mit einem Element.
test[2] ist ist ein array vom typ char mit 2 (zwei) Elementen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 18.01.2004 um 23:15 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
18.01.2004, 23:39 Uhr
Hans
Library Walker
(Operator)


Habe auch noch einen Kurs in Deutsch gefunden. Bin mir aber nicht sicher, ob Matze damit was anfangen kann. Aber zumindest mal rein sehen.

www.tu-chemnitz.de/urz/kurse/unterlagen/C++/

@Pablo: Du kannsat Dir den Link ja auch mal in Deine Bookmarks aufnehmen...

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
18.01.2004, 23:52 Uhr
Pablo
Supertux
(Operator)


@Hans: Leider ist das nur C++. Naja, ich mache mir keine Probleme, wenn es auf Englsich ist. Ich kann vielleicht nicht flüssiges Englisch beim Sprechen, aber beim Schreiben und Lesen kann ich es trotzdem.

www.tu-chemnitz.de/urz/kurse/unterlagen/C/top.html
das nehme ich auf
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 18.01.2004 um 23:53 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
19.01.2004, 14:02 Uhr
Matze



also mal schaun ob ich es verstanden hab:
char wort[] ist eigentlich ein array aus lauter chars?
also müsste folgendes gehen:
char wort[] = "danke fuer die Hilfe";
wenn ich dann etwas ausgebe, müsste wort[1] ein a, bzw wort[6] ein f sein....
wenn ich also wort[] ausgeben lasse, wird das komplette array ausgegeben. (Verbesser mich bitte, wenns falsch ist)
kann ich auch folgendes machen:
char wort = "danke fuer die Hilfe"; ([] weggelassen)
wo liegt der Unterschied zwischen:
char* test = "hallo";
char test = "hallo"; (das * ist die Frage)
dann noch etwas:
also bisher gebe ich folgendermasen etwas aus:


C++:
int zahl = 17;
printf("%i", zahl);



dabei wird überall, wo ein "%i" vorkommt die variable zahl eingefügt. Nur warum steht statt dem i manchmal ein d oder ein s (z geht z.B. nicht)!?!?!
Das ist mir noch unklar. Kann ich das auch mit mehreren machen?
z.B. irgendwie so:
int zahl1 = 17;
int zahl2 = 17;
printf("%i hallo %d", zahl1, zahl2);


Dann noch etwas:
Ich möchte die Sekun den die seit irgendeienm Datum vergangen sind bis zur jetztigen Sekunde ausrechnen - kein problem, man hat kei timestamps.
Allerdings hab ich bisher mit PHP gearbeitet und da sind int, char... nicht notwendig. Ich hab mir das mal angeschaut und da gibts sogra ne ferige funktion 8find ich ja mal "geil"). Allerdings kann das sein, dass time_t sowas wie int und char ist? Wie geb ich das dann in printf aus?
wie kann ich einen int einlesen gets(); nimmt mir nur char?

Tausende Fragen

Naja nach eingewönung in C werd ich euch dann (hoffentlich) entlasten!
Immerhin hab ich ne Funktion schon erfolgreich geschrieben *stolz*

Also danke Jungs

Matze
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
19.01.2004, 16:50 Uhr
Matze



kurze Form meines letzten Eintrages:
was ist void?
was hat es mit den Zeitfunktionen wie mktime, time... auf sich (tm? *time? *timer? time_t?=
was bedeutet das *?
Danke

matze
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
19.01.2004, 18:53 Uhr
~global
Gast


hi, da ich auch vor kurzem angefangen habe C++ zu lernen, kann ich dir nur empfehlen dir etwas literatur reinzuziehen, da bekommst du alle antworten über datentypen, klassen, pointer & refferenzen usw. (hier im forum unter e-books: "C++ in 21 tagen" www.fun-soft.de/Download/ebooks/c++in21tagen/inhalt.html ).

gruß
--
if( !wissen ) lesen++;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
19.01.2004, 19:15 Uhr
Pablo
Supertux
(Operator)


void ist ein Datentyp, das quasi sagt, dass man kein Datentyp hat. In VB und andere Sprachen macht man immer den Unterschied zwischen Funktionen, die einen Wert zurückliefern und die keinen Wert zurückliefern. Funktionen leifern Werte zurück und Procedures liefern keine Werte zurück. In C/C++ gibt es keinen 2. Namen dafür, sondern die bezeichnung void, damit der Compiler weißt, dass die Funktion gar nix zurückliefert.


C++:
int liefere3zurück() {
    printf("Ich liefere 3 zurück\n");
    return 3; // man bekommt den Wert 3, wenn man diese Funktion aufruft
}
void lieferenix() {
    printf("Ich führe nur Sachen aus, geben aber nix zurück\n");
}



Somit wissen wir, dass lieferenix() keinen Wert zurückliefert.

Wenn man auch sagen will, dass eine Funktion keine Parameter braucht, um aufgerufen zu werden, benutzt man auch void

C++:
int foo(void) {
    // tue etwas
    return 5;
}



void ist aber kein Datentyp, d.h. das ist ungültig

C++:
int x=9; // gültig
void k; // ungültig
void* p=NULL; // gültig



void* ist die Bezeichnung für einen Zeiger. D.h. p zeigt im diesem Moment auf NULL, aber du kannst dann p = (char*) "hallo"; schreiben und dann zeigt p auf die Zeichenkette "hallo" oder p = &x; dann zeigt p auf den Wert der Variable x. void* benutzt man, wenn man den Datentyp einer Variable erst während der Laufzeit bestimmen muss, oder wenn eine Funktion einen Zeiger zurückiefert, ohne dass es der Datentyp bekannt ist, z.b. malloc tut das.

Was dem * angeht:

C++:
int x=7;
int* pointer=&x;
// pointer als Variable speichert eine Adresse des Speichers, nämlich die, die x speichert.
// wenn ich den Wert von x verändern will, (ich meine damit über den Zeiger, muss ich
// folgendes tun)
*pointer=5;// an dieser Stelle hat speichert x nicht mehr 7 sondern 5


Mit * kannst du den Inhalt eines Pointers ansprechen. Ich glaube, das Beispiel erklärt das besser.

Was dem ? angeht: Es gibt in C/C++ einen 3 stelligen Operator cond ? true : [/i] false[/i];

cond muss eine boolsche Bedingung sein, z.b 3<6. Das leifert entweder true oder false. Wenn die Bedingung wahr ist, dann wir den Befehl von nach den Fragezeichen ausgeführt, andersfalls den Befehl nach dem Doppelpunkt.


C++:
int x= 5<3 ? 8 : 9;



Was glaubst du, was x speichert? Wenn du 8 meinst, leigst du falsch, sondern 9. Und zwar weil 5<3 false zurückliefert, also wird ausgeführt bzw. zurückgelifert das was nach dem Doppelpunkt steht.

In C gibt es den datentyp bool nicht, also true und false auch nicht. Man simuliert true, wenn der Wert ungleich 0 ist und false, wenn der Wert gleich 0 ist.


C++:
int x=9;
int* z=&x;
int u = *z ? 4 : 1;


Was speichert u? *z lifert dann 9, 9 ist ungleich 0, also true, d.h. u speichert 4. Ich glaube, dass sollte dir alles klar machen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
19.01.2004, 20:16 Uhr
Matze



ok, das hat mir alles SUPER geholfen!
Allerdings hab ich mein Problem mti dem Datumszeug immer noch nicht gelöst: Mein Ziel: Ich will die Tage, Stunden und Minuten wissen, die seit einem gewissen Datum*Uhrzeit (festgelegt) vergangen sind). Ich hättte mir mit zwei Timestamps das ganze difidiert und dann hätte ich die Sekunden (und damit auch den rest) gehabt. Allerdings hab ich keine Ahnung, wie das mit C geht, es da antscheinend anders als bei PHP läuft.
Danke

Matze
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 < [ 3 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: