Werte in einer Funktion eingeben
-
Hallo alle zusammen,
leider habe ich einen Fehler beim Aufruf der Funktion (lcc runtime).
Die Funktion soll aufgerufen werden und zwei Werte einlesen.
Nach dem Einlesen sollen die Zahlen in der Main-Funktion ausgeben werden.Vielen Dank
#include <stdio.h> void uebergabe(int array[]); int main(void) { int array[2]={0,1}; uebergabe(array); for(int i=0;i<2;i++) printf("Wert 1:%d \n", array[i]); return 0; } void uebergabe(int array[]) { printf("Bitte geben Sie den 1 Wert ein:"); int count; for(count=0;count<2;count++) { scanf("%d", array[count]); } }
-
tomee schrieb:
scanf("%d", array[count]);
ändere das mal um:
scanf("%d", array+count);
-
Adressoperator vergessen:
scanf("%d", &array[count]);
-
#include <stdio.h> void uebergabe(int *array,int size); int main(void) { int array[2]={0,1}; uebergabe(array,2); for(int i=0;i<2;i++) printf("Wert 1:%d \n", array[i]); return 0; } void uebergabe(int *array,int size) { printf("Bitte geben Sie den 1 Wert ein:"); int count; for(count=0;count<size;count++) { int i; scanf("%d",&(array[count])); } }
EDIT: Hmpf, zu spät...
-
Vielen Danke Euch beiden für die schnelle Antwort!
Funktioniert beides.
Hatte nur den & Operator vergessen. War schon am verzweifeln an diesem C
Wusste garnicht das ,,scanf("%d", array+count);" auch funktioniert.
Da fehlt doch der Adressoperator (&), oder???
-
tomee schrieb:
Wusste garnicht das ,,scanf("%d", array+count);" auch funktioniert.
Da fehlt doch der Adressoperator (&), oder???sieht der compiler 'nen array-namen, dann nimmt er die adresse des arrays. und eine adresse+irgendwas ergibt wieder eine adresse.
-
Funktioniert beides.
Und wie du jetzt von fricky gelernt hast, noch vieles mehr, zB:
scanf("%d", &count[array]);
EDIT: (wir wollen ja nicht nur trollen)
Ganz allgemein kann man sagen, daß ein Ausdruck der Formarray[index]
vom Compiler verstanden wird als:
*(array + index)
Daraus kannst du alles oben gesagte ableiten.
-
Okay
Also nimmt er die Speicheradresse und zählt 4 bits dazu?? Richtig??
Oder einfach nur erstes Array + 1??
-
tomee schrieb:
Okay
Also nimmt er die Speicheradresse und zählt 4 bits dazu?? Richtig??
Oder einfach nur erstes Array + 1??4 mal die Länge vom Typ, in dem Fall wahrscheinlich 4 Bytes (int unter 32 Bit System).
-
4 mal die Länge vom Typ, in dem Fall wahrscheinlich 4 Bytes (int unter 32 Bit System).
Zur Länge des Typs siehe auch den Operator
sizeof
.