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 Form

    array[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 .


Log in to reply