2017-03-03 1 views
0

Ich muss die Schüssel Funktionen haben, b1 und b2 in turntotal übergeben, um die beiden zusammen in einer anderen Funktion hinzuzufügen. Hier ist der Code, was mache ich falsch?Zeiger und Übergabe von Variablenwerten von einer Funktion zu einer anderen. Wie man Variablenwerte mit Hilfe von Zeigern übergibt

void bowl(){ 
    int b1=rand()%11; 
    int b2=rand()%(11-(b1)); 
    int turntotal(&b1,&b2); 
} 

int turntotal(int *b1, int *b2){ 
    int bowltotal; 
    bowltotal=((b1)+(b2)); 
    return(bowltotal); 
} 
+2

ändern Ihre Lernressourcen betrachten Es ist eine gute Liste der Bücher [hier] (http://stackoverflow.com/questions/388242/the-definitely-c-book-guide-and-list), und es sieht so aus, als ob Sie einen benötigen. – molbdnilo

Antwort

0

Sie müssen dereferenzieren einen Zeiger-Wert von der Adresse, um es zeigt auf, so würden Sie schreiben:

int turntotal(int *b1, int *b2) { 
    return (*b1) + (*b2); 
} 

jedoch Ihre Funktion ändert nicht eine ihrer Parameter so können Sie einfach schreiben :

int turntotal(int b1, int b2) { 
    return b1 + b2; 
} 

auch Leitung:

int turntotal(&b1,&b2); 

macht keinen Sinn. Sie wollen wahrscheinlich Wert von dieser Funktion auf eine neue Variable zurückgegeben zuweisen, so dass Sie schreiben können:

int sum = turntotal(&b1,&b2); 

oder

int sum = turntotal(b1,b2); 

wenn Sie Zeiger nicht verwenden, wenn Sie nicht haben.

Wie in den Kommentaren vorgeschlagen - das ist einige grundlegende Dinge, und Sie sollten auf one of the good books.

Verwandte Themen