Ich möchte hier nur überprüfen, wie Sie einen Verweis auf eine Funktion übergeben, die einen Zeiger will. Ich habe unten ein Codebeispiel. In meinem Fall übergebe ich eine C++ - Referenz an eine C-Funktion, die meinen Wert ändert.Wie übergebe ich eine C++ - Referenz an ein Zeigerargument einer C-Funktion?
Sollte ich die '&' Adresse des Betreibers in diesem Aufruf verwenden: retCode = MyCFunc (& myVar)? Es scheint, dass ich eine Referenz einer Referenz nehme, die in C++ nicht erlaubt ist. Es kompiliert jedoch gut und scheint zu funktionieren.
MainFunc()
{
int retCode = 0;
unsigned long myVar = 0;
retCode = MyCPlusPlusFunc(myVar);
// use myVars new value for some checks
...
...
}
int MyCPlusPlusFunc(unsigned long& myVar)
{
int retCode = 0;
retCode=MyCFunc(&myVar);
return retCode;
}
int MyCFunc (unsigned long* myVar)
{
*myVar = 5;
}
ich meinen Code gedacht war oben war in Ordnung, bis ich dieses Beispiel auf der IBM Website sah (sie gehen nicht mit dem ‚&‘ Adreßoperator): http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.ceea400/ceea417020.htm
// C++ Usage
extern "C" {
int cfunc(int *);
}
main()
{
int result, y=5;
int& x=y;
result=cfunc(x); /* by reference */
if (y==6)
printf("It worked!\n");
// C Subroutine
cfunc(int *newval)
{
// receive into pointer
++(*newval);
return *newval;
}
Im allgemeinen, ich kenne Sie folgendes tun:
int x = 0;
int &r = x;
int *p2 = &r; //assign pointer to a reference
Was ist richtig? Sollte ich die & Adresse des Betreibers in meinem Anruf verwenden oder nicht?
Bitte korrigieren Sie Ihren Code mit der entsprechenden Schaltfläche im Bearbeitungsformular. – Muggen
@Muggen - Das habe ich schon gemacht –
Danke ... sieht jetzt viel besser aus! – Lair78