#include <iostream>
using namespace std;
int main(void)
{
int num[5];
const int* &ref = num;
return 0;
}
我閱讀過的提到如果參考變量被引用到一個C++書:參考指針類型
- 可變其中類型是不同的,但可以被轉換。
- 一個不是左值的變量。
只要引用變量聲明爲const
,上述兩種情況將通過使用一種方法,其中所述編譯器將創建的存儲和值將被放置到它,而要解決的引用變量的標識符被視爲該特定存儲位置的標識符。以下是演示代碼。
#include <iostream>
using namespace std;
int main(void)
{
int num = 5;
const long long &ref = num; //the value 5 is place in a new storage where ref is the identifier
return 0;
}
案例2:
#include <iostream>
using namespace std;
int main(void)
{
int num = 5;
const int &ref = num + 1; //expression num + 1 evaluated and store in new storage with identifier ref
return 0;
}
由於這2箱子是有效的,怎麼裏面的情況來驗證碼:是無效的?
我的邏輯是,因爲數組名稱在使用時將被轉換爲指向數組的第一個元素的指針,因此編譯器應該已經發現這不是左值,並且將創建一個新的存儲來存儲地址,當然,引用變量名稱將被視爲該位置的標識符。
注意:我知道這是略微脫離主題,但我可以知道是否數組名稱是左值還是不是?只是一個簡單的是或否會做,因爲將代碼更改爲int &ref = num
我認爲它不是一個左值,但我只需要進一步確認。
謝謝。
請您在發佈另一個問題之前**請參閱我的編輯。你應該學會使用降價編輯器。幾乎沒有必要回頭在你的帖子中使用HTML。瞭解降價和請停止發佈** ** brtual HTML這樣的:' ' – meagar 2012-07-27 15:52:35
並請停止使用 「守則」 和「問題」標題。我們可以知道哪些部分是代碼,哪些部分是問題。我們依靠你的文章中的標記和語言來弄清楚你在問什麼,亂七八糟的標題亂七八糟。 – meagar 2012-07-27 15:59:54