Ich nehme an, das ist eine Hausaufgabe. Wenn es sich um eine Hausaufgabenfrage handelt, sollten Sie sie als zukünftige Referenz kennzeichnen.
Diese Frage bezieht sich auf Zeiger. Das Kernkonzept hier ist, dass die Divide-Funktion einen Zeiger auf eine ganze Zahl nimmt. Ein Zeiger ist ein Ort im Speicher - mit diesem Zeiger kann er direkt zu diesem Ort gehen und den Wert dort ändern. Dann wird main() in der Lage sein, den Wert zu sehen, ohne dass er von divide() zurückgegeben werden muss.
Der erste Schritt ist, Divide zu schreiben. Ich werde Kommentare hinzufügen, um zu erklären, was jeder Schritt tut.
void divide(int* a)
{
//go to the location in memory referenced by a and get the value
int aValue = *a;
//divide the value by 2
aValue = aValue/2;
//store the value in the memory location referenced by a
*a = aValue;
}
Der nächste Schritt ist, Ihre Hauptfunktion ein wenig zu ändern. Gerade jetzt übergeben Sie divide() und Integer. Sie müssen es einen ganzzahligen Zeiger übergeben.
Versuchen Sie Folgendes. Der Operator "&" erhält die Speicheradresse einer Variablen.
int main()
{
int num = 20;
divide(&num);
printf("%d\n", num);
}
Beachten Sie, dass dieses Programm in fehlerfrei laufen kann, wenn er versucht, eine ungerade Zahl von 2 zu teilen, aber für Ihr Beispiel sollte dies tun, in Ordnung. Lass mich von anderen Fragen wissen.
** Bitte ** kompilieren mit Warnungen aktiviert, und berücksichtigen ** jede Warnung, die der C-Compiler ausgibt ** zu ** ein Fehler, der von Ihnen gemacht ** **. –