Pointer auf Buchstaben
-
Schon einmal danke für die schnelle Antwort.
Mir geht es in diesem Fall genau darum, dass der Buchstabe aus dem Array geholt wird:#include <stdio.h> int main (void) { int c, d, e; int *ptr1; int *ptr2; int a[50] = {'c', 'd', 'e'}; int b[50] = {10, 20, 30}; ptr1=a; printf("%d\n", *(ptr1)); ptr2=b; printf("%d\n", *(ptr2 + 2)); return 0; }
In dieser Version wird "30 99" ausgegeben. Ich möchte jedoch, dass er "30 c" ausgibt.
Zum Buch, ja, ich habe mir 1 Buch gekauft, aber arbeite größtenteils mit PDF's oder Bloggs aus dem Internet.
-
das
%d
im Formatstring vomprintf
bedeutet, dass der zugehörige Parameter einint
ist und als Dezimalzahl ausgegeben werden soll.Wenn du Zeichen haben möchtest, musst du den passenden Formatspecifier nehmen.
-
@Int1602 sagte in Pointer auf Buchstaben:
aber arbeite größtenteils mit PDF's oder Bloggs aus dem Internet.
Arbeite bitte stattdessen das Lehrbuch durch, das du dir besorgt hast (welches?).
Irgendwelche Tutorials oder Blogeinträge die für Anfängerniveau geeignet sind, sind meist auch von Anfängern geschrieben und enthalten dementsprechende Mengen Bullsh**.
Du willst nun also in
a
Zeichen ablegen. ... warum ist der Typ dann Array ofint
und nicht Array ofchar
? Wie du einzelne Zeichen mitprintf()
ausgeben kannst haben dir @Wade1234 und @DirkB schon gesagt und gezeigt.Und bitte gewöhne dir von Anfang an an, deinen Code anständig einzurücken.
-
@Int1602 sagte in Pointer auf Buchstaben:
Sobald ich jedoch statt {1,2,3} etwas wie {a,b,c} eingegeben hab, wurden mir natürlich nur Ascii-Zahlen angezeigt.
a,b,c müssen in hochkomma, also so: {'a','b','c'}
alternativ geht auch: "abc", da hängt aber eine unsichtbare 0 mit dran. stört aber meistens nicht.
char a[] = {'a','b','c'}; // sizeof = 3
char b[] = "abc"; // sizeof = 4
-
Okay hab es verstanden und funktioniert auch. Vielen Dank für eure Hilfe!
Gut, dann werde ich mich wohl konsequenter auf die Arbeit mit dem buch stützen. Ich habe mir "C: Programmieren von Anfang an" von Helmut Erlenkötter geholt.
-
@Int1602 sagte in Pointer auf Buchstaben:
Ich habe mir "C: Programmieren von Anfang an" von Helmut Erlenkötter geholt.
Echte Kenner schwören auf dieses Buch (von den Erfindern der Sprache C), Google: the_c_programming_language_2 filetype:pdf
-
@RBS2 Würde ich einem Anfänger nie empfehlen - wozu auch? Um vorsintflutliches C zu lernen? Wir sind inzwischen bei C18 ...
Auch glaube ich nicht, daß es @Dravere so gern hat, wenn du hier Links zu Urheberrechtlich geschütztem Material postest.
-
und das buch ist freigegeben? ich meine ja nur so vonwegen verbreitung von urheberrechtlich geschütztem material, forenbetreiberhaftung usw.
der erlenkötter geht meiner meinung nach aber auch erstmal.
-
@Swordfish sagte in Pointer auf Buchstaben:
Um vorsintflutliches C zu lernen? Wir sind inzwischen bei C18
Ist denn soviel weltbewegendes seit C89 dazu gekommen?
-
nichts eigentlich. naja obwohl einzeilige kommentare, integer mit fest definierter größe, komplexe zahlen, boolesche variablen. deshalb reicht der erlenkötter für 10€ ja auch aus.
-
@Wade1234 sagte in Pointer auf Buchstaben:
nichts eigentlich.
Du scherzt? In C89 war default
int
noch Standard. Exemplarisch: C11 changes from C99.
-
@Wade1234 sagte in Pointer auf Buchstaben:
nichts eigentlich. naja obwohl einzeilige kommentare, integer mit fest definierter größe, komplexe zahlen, boolesche variablen. deshalb reicht der erlenkötter für 10€ ja auch aus.
Die letzte Auflage ist von 2005. Ob die Neuerungen da schon ausführlich behandelt werden?
-
@Swordfish sagte in Pointer auf Buchstaben:
Würde ich einem Anfänger nie empfehlen - wozu auch? Um vorsintflutliches C zu lernen?
C ist zwar vorsintflutlich, aber trotzdem gut und sehr beliebt. Ganze Generation von C-Codern haben mit diesem Buch C gelernt.
-
@RBS2 sagte in Pointer auf Buchstaben:
C ist zwar vorsintflutlich
Das habe ich nicht gesagt. Es war von C89 die Rede.
Geh lieber und mach den Link weg ...
-
hmmm die meisten leute wissen nicht mal, was komplexe zahlen überhaupt sind, true und false sind meine ich irgendwelche defines in der headerdatei, bei den standardintegern frage ich mich, warum das erst so spät kam.
das mit den threads klingt natürlich interessant, aber ich hab da immer die winapi bzw. pthreads für benutzt.
ja ka........
-
@Wade1234 sagte in Pointer auf Buchstaben:
hmmm die meisten leute wissen nicht mal, was komplexe zahlen überhaupt sind
Physiker und E-Techniker brauchen die manchmal. In C erscheinen sie als Struct aus zwei Doubles und ein paar Funktionen dazu.
-
@Wade1234 sagte in Pointer auf Buchstaben:
> das mit den threads klingt natürlich interessant, aber ich hab da immer die winapi bzw. pthreads für benutzt.bei den standardintegern frage ich mich, warum das erst so spät kam.
das sind auch nur typedefs. Und werden meist falsch eingesetzt.
-
@DirkB Threads sind typedefs? Versteh ich grad gar nicht.
-
@hustbaer sorry, ich meinte die Standardinteger.
Das teilweise zitieren auf dem Tablett funktioniert nicht immer. Da habe den falschen teil gelöscht.
-
naja unter windows und linux haben ein int und ein long int irgendwie 4 byte und ein long long int 8 byte und unter freebsd hat ein int 4 byte und ein long int und ein long long int haben 8 byte. das ist doch furchtbar! jedenfalls ist das auf meinen rechnern so.
beim int64_t kann ich mich wenigstens darauf verlassen, dass die variable dann auch 8 byte groß ist.