Könnte jemand bitte das Verhalten der Referenz in diesem Code erarbeiten und warum es 12 druckt in erster Linie statt 11.Referenzen in C++ mit Funktion
Unten ist der Code
#include <cstdio>
using namespace std;
int &fun()
{
static int x = 10;
x++;
return x;
}
int main()
{
int *ptr=&fun();
int *ptr1=&fun();
printf("%p %p \t %d %d",(void*)ptr,(void*)ptr1,*ptr,*ptr1);
return 0;
}
die Ausgabe des Codes ist
134519132 134519132 12 12
Bitte erklären, warum ist auf den ersten Anruf ich verstehe, wenn der zweite Anruf es drucken soll 12
Danke für den Hinweis auf meinen Fehler in der Annahme, dass printf() druckt * ptr, sobald es verfügbar ist. –
Könnten Sie bitte erläutern, warum printf() aufgerufen wird, nachdem beide Werte berechnet wurden –
@Raghib Ahsan Weil das ist, was für eine Sprache C ist. In C beschreibst du, was passieren soll, also ist die Reihenfolge, in der du Dinge eingibst, die Reihenfolge, in der der Code ausgeführt wird. Ihr printf wird nach den Anweisungen geschrieben, die die Funktionen ausführen, daher werden die Werte zuerst berechnet und erst dann liest Ihr Programm die Ergebnisse zurück und druckt sie. Lesen Sie Wiki-Seite auf C, und folgen Sie besonders dem Link über imperative Programmierung im ersten Satz, wenn Sie mehr darüber erfahren möchten. [link] (https://en.wikipedia.org/wiki/C_ (programming_language)) – Nathilion