下面的代碼:奇怪的編譯錯誤的功能
#include <iostream>
using namespace std;
void mysize(int &size, int size2);
int main()
{
int *p;
int val;
p = &val;
cout << p;
mysize(&val, 20); // Error is pointed here!
}
void mysize(int &size, int size2)
{
cout << sizeof(size);
size2 = size2 + 6000;
cout << size2;
}
這裏的錯誤輸出從GCC:
In function 'int main()': Line 10: error: invalid initialization of non-const reference of type 'int&' from a temporary of type 'int*' compilation terminated due to -Wfatal-errors.
是什麼暗示?我不明白錯誤消息...一個非常量的無效初始化?我使用兩個參數來聲明上面的原型函數,其中一個是整數引用,另一個是整數值本身。我通過了int的引用(見第10行),但是這個錯誤一直在引發我。另外,它如何「暫時成爲一個指針」?
問題是什麼?
所以,函數需要一個*引用*爲整數參數,就像你自己說的那樣。那麼爲什麼你試圖將一個*指針*傳遞給它的整數參數呢?參考文獻和指針不相同,不可互換。 – AnT
我正在傳遞_&val_,它是**引用**。 –
你堅持一個指針是一個引用不會改變C++語言。 – juanchopanza