我只想在這裏查看如何將引用傳遞給需要指針的函數。下面有一個代碼示例。在我的情況下,我將C++引用傳遞給C函數,這將改變我的值。如何將C++引用傳遞給C函數的指針參數?
我應該在這次調用中使用'&'運算符的地址:retCode = MyCFunc(& myVar)?看來我正在參考一個引用,這在C++中是不允許的。然而,它編譯好,似乎工作。
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;
}
我想我的代碼是上面是罰款,直到我看到在IBM網站上的這個例子(不通過使用運營商的「&」地址): 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;
}
一般情況下,我知道你可以做到以下幾點:
int x = 0;
int &r = x;
int *p2 = &r; //assign pointer to a reference
什麼是正確的?我是否應該在我的電話中使用運營商的地址&?
請使用編輯表單中的相應按鈕修復您的代碼。 – Muggen 2010-12-06 17:40:51
@Muggen - 我已經做到了 – 2010-12-06 17:41:41
謝謝...現在看起來好多了! – Lair78 2010-12-06 17:43:22