Zeigerproblem
-
Hi,
ich beschäftige mich seit ein paar Stunden mit Zeigern, jedoch habe ich den genauen Verwendungszweck und die Benutzung nicht so recht verstanden.
Ich habe ein Programm geschrieben, in dem in einer Funktion mehrere Werte eingelesen werden und dann im Haupt(Main)Programm über die Zeiger ausgegeben werden.#include <stdio.h> int einlesen(); /*Funktion main*/ int main() { int n; double c, d; einlesen(); printf("Wert n:%d, Wert c:%lf, Wert d:%lf", n, c, d); return 0; } /*Funktion einlesen*/ int einlesen() { int *n; double *c, *d; do{ printf("Wert n:"); scanf("%d", &n); } while ((n>=2)&&(n<=10)); printf("Wert c:"); scanf("%lf", &c); printf("Wert d:"); scanf("%lf", &d); return 0; }
Jedoch bin ich mir sicher, dass ich den Falschen Weg gehe, weiss einer weiter?
Danke,
shm
-
Vielleicht hilft dir dieser Link http://www.c-plusplus.net/forum/viewtopic-var-t-is-124532.html für das grundlegende Verständnis
-
hi!
int main() { int n; double c, d; einlesen( &n, &c, &d ); printf("Wert n:%d, Wert c:%lf, Wert d:%lf", n, c, d); return 0; } /*Funktion einlesen*/ int einlesen( int *n, double *c, double *d ) { do{ printf("Wert n:"); scanf("%d", n); } while ((n>=2)&&(n<=10)); printf("Wert c:"); scanf("%lf", c); printf("Wert d:"); scanf("%lf", d); return 0; }
-
die pointer n,c,d in 'einlesen' haben in deinem code nichts mit den variablen in main zu tun. du müsstest die an 'einlesen' weiterreichen, dann könnte es klappen, etwa so:
int main() { int n; double c, d; einlesen (&n, &c, &d); ... } ... void einlesen (int *n, double *c, double *d) { // hier keine neuen pointer anlegen, es werden die argumente der funktion benutzt do { ... ... }
-
danke, der Weg von "free-compiler-service" hat geklappt!
cu,
shm