Frage zu Zeigern
-
Hi,
habe mal eine Frage zu Zeigern, denn ich mache
das noch nicht so lange
Ich denke mal das Galileo OpenBook C ist nicht
so dolle, aber ich lese es mit Vorbehalt, denn
das von Python ist auch Müll.Aber folgendes Beispiel:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 255 char *eingabe(char *str) { char input[MAX]; printf("Bitte \"%s\" eingeben: ",str); fgets(input, MAX, stdin); return strtok(input, "\n"); } int main(void) { char *ptr; ptr = eingabe("Vorname"); printf("Hallo %s\n", ptr); ptr = eingabe("Nachname"); printf("%s, interssanter Nachname\n", ptr); return 0; }
Warum muss es hier nicht
printf("Bitte \"%s\" eingeben: ",*str);
heißen?
Vorher ging es ja auch folgendermaßen:int x=5; int *meinzeiger; meinzeiger = &x; printf("Wert von x = %d",*meinzeiger);
Versteh ich nicht so ganz, wäre nett, wenn das
mal jemand erläutern könnteMfG Jonas
-
talas schrieb:
Warum muss es hier nicht
printf("Bitte \"%s\" eingeben: ",*str);
heißen?
weil 'str' doch schon ein char* ist. ein '*str' würde nur das erste zeichen liefern. 'printf' braucht aber einen pointer, um den ganzen string auszugeben (bei %s jedenfalls).
-
Also
char *test;
und
char* test;
doch dasselbe oder?
D.h. ich übergebe der Funtkion
ein CharArray und mitprintf("%c",*str);
könnte ich das erste Zeichen (Array[0]) ausgeben,
auf das der Pointer zeigt?
Soweit richtig?
MfG Jonas
PS: Danke für die flotte Antwort ~fricky
-
Exakt.
-
talas schrieb:
Also
char *test;
und
char* test;
doch dasselbe oder?
Klar. Leerzeichen werden vom Compiler nie beachtet und sind meist nur kosmetischer Schnickschnack. Wo du den Stern platzierst, ist Geschmacksache...
-
_matze schrieb:
Klar. Leerzeichen werden vom Compiler nie beachtet und sind meist nur kosmetischer Schnickschnack.
der vs2005 ist wohl ne ausnahme:
int a = 1; int b = 2; int c = a++ + ++b; // compiled int d = a+++++b; // das nicht